使用单点登录机制创建Web服务有哪些选择?

时间:2011-11-30 13:24:29

标签: c# .net web-services

注意:通过“单点登录”我的意思是,要求用户提供凭据,然后在此之后不再需要用户输入进行身份验证。


我必须为客户创建一个安全的Web服务,用于将敏感数据存入。

我可以使用传统的用户名和密码,但每次想要提出请求时,问题都会影响用户。另一方面,如果我缓存这些凭证,那么它是一种安全责任,因为它必须保留在机器上的某个位置。虽然我不是在研究NASA软件,但我想要一些更强大的功能。

以下是我的限制:

客户:

  1. 使用Windows 2000及最新版本。因此客户端应用程序必须在.NET 2.0上运行
  2. 我无法控制网络或客户端机器,这意味着即使不是不可能,安装证书也很困难。 (我有一个machine fingerprint机制可以将犹太电脑列入白名单。)
  3. 服务器:

    1. 会使用我认为合适的任何东西。这完全由我自行决定。
    2. 考虑到这些因素,如果我想实施“单点登录”机制,我有哪些选择?这意味着,用户进行身份验证,并且在X时间内,他可以在不需要额外身份验证的情况下调用服务。

2 个答案:

答案 0 :(得分:2)

您可以在数据库中保存用户会话,每次用户请求时,都会检查用户会话的状态并验证密码。为了安全起见,您可以在将密码存储到数据库之前使用任何加密技术或哈希密码。

答案 1 :(得分:1)

要记住的是ASP.NET Web服务是一个ASP.NET Web应用程序,因此ASP.NET应用程序中可用的技术也可供您在Web服务中使用。

在ASP.NET中,您有Forms Authentication(可以与ASP.NET Membership一起使用)。表单身份验证可以生成加密强身份验证令牌以换取用户名+密码。如果您在“登录”Web方法中返回该令牌,则可能需要所有后续Web方法调用来提供该身份验证令牌(理想情况下在SOAP Header中,因此它不受正常输入参数的影响)。

这当然要求调用者将身份验证令牌存储在某处(因为该任务通常由用户代理以cookie的形式自动处理)。

当然,始终只使用HTTPS,或者您的身份验证几乎毫无价值。