代码之家  ›  专栏  ›  技术社区  ›  cdonner

如何在Web应用程序中验证调用Web服务的Windows Mobile客户端

  •  3
  • cdonner  · 技术社区  · 14 年前

    我有一个用ASP.NET编写的相当复杂的业务应用程序,它部署在托管服务器上。该站点使用表单身份验证,并且定义了大约十几个不同的角色。员工和客户都是应用程序的用户。

    现在我需要为应用程序开发一个Windows Mobile客户端,它允许从设备执行一组非常特殊的任务,而不是在笔记本电脑上使用浏览器。客户希望通过这种方法提高生产率。只有员工才能使用此应用程序。

    我觉得重新使用已经到位的安全基础设施是有意义的。客户端不需要脱机功能。

    我的想法是将一组Web服务部署到只有新角色“Web服务”可以访问的现有网站的文件夹中,并使用表单身份验证(从Windows Mobile 5/.NET 3.5客户端)。

    我确实看到了 this question 我也知道形成认证所带来的局限性。由于安全性不是我的主要动机(我使用SSL并可以通过IP地址限制访问),而是使用现有的用户帐户和角色,因此我的决策树也有所不同。

    我能做到这一点吗?这是个好主意吗?你能给我指一些代码示例/引用吗?

    1 回复  |  直到 14 年前
        1
  •  1
  •   cdonner    14 年前

    我最终得到了一个综合的结果。首先,表单身份验证在这种情况下并不真正起作用,因为当用户没有登录或凭据不正确时,您会得到重定向。

    因为我想使用Web应用程序中的用户帐户,所以在处理服务器上的每个服务调用之前,我只是通过调用membership.validateuser来解决这个问题。

    登录到客户机时,会提示用户输入ID和密码。我将这两个加密的值存储在代理类中,并使用主机头在每次调用时透明地传递它们,这样一旦用户登录,应用程序就不必为此而烦恼,即通过调用login()服务方法(只调用membership.validateuser)验证一次凭据。

    我在服务器和客户端都使用CryptoAPI。 我知道主机头对于安全应用程序来说有点过时,但是由于我使用了强加密和SSL,所以这是完全足够的。