WPF& WCF安全性 - 用户名和密码= STS

时间:2011-08-25 03:45:46

标签: wpf wcf wcf-security

我即将开始使用WPF的项目,该项目使用Web服务来获取信息等。

需要用户名和密码对您进行身份验证并获取属于您的数据。

我希望我的WPF应用程序存储用户名和密码。但我不想存储它。所以我在想。如果我第一次登录后会在WCF端生成证书并将其提供给可用于每次通话的WPF应用程序,那将会很酷。

我在想什么?我想解决的另一个问题是如何避免有人复制和粘贴证书?

更新

基于@zamd建议。这就是我想要解决的问题。

  1. Webservice使用WCF Web Api
  2. 网站具有表单身份验证
  3. 站点使用令牌服务验证的用户名和密码登录
  4. Webservice可以验证令牌服务提供的用户令牌
  5. 我发现这篇非常有用的博客文章http://weblogs.asp.net/cibrax/archive/2011/02/04/authenticating-clients-in-the-new-wcf-http-stack.aspx,但我想使用表单身份验证来获取SAML令牌

3 个答案:

答案 0 :(得分:1)

您应该查看基于声明的安全性和SAML令牌。

登录时,您的应用程序应转到您的服务或“安全服务”,也称为“安全令牌服务”,并获取SAML令牌以换取用户名/密码对。 SAML令牌通常是为收件人保护的,可以安全地存储在客户端,直到它们过期。

每次需要调用WCF服务时,都可以使用此SAML令牌进行丰富的身份验证和授权。

答案 1 :(得分:0)

您对证书基本身份验证的理解不正确。证书用于建立SSL连接,用于使用非对称加密对数据进行加密并对用户进行身份验证,但根据证书对用户进行身份验证,证书应安装在用户的系统上,而不是由WCF服务提供。这需要人们设置PKI基础设施。 您可以看到的其他选项是使用

  1. 在ASP.Net兼容模式下运行WCF服务的ASP.Net表单身份验证。在这种情况下,一旦经过身份验证,只有auth cookie会在那之后通过。
  2. 以其他方式查看此问题User/Pass Authentication using RESTful WCF & Windows Forms

答案 2 :(得分:0)

如果您必须使用用户名/密码组合,那么您可以使用Windows凭据管理器让Windows在Windows 7,Windows Server 2008(以及可能是Vista)下为您存储它。你需要陷入p / invoke( http://pinvoke.net/default.aspx/advapi32/CredRead.htmlhttp://pinvoke.net/default.aspx/advapi32/CredWrite.html)。

我遇到的唯一问题是它在Windows Server 2003上不起作用,即使文档说它是受支持的操作系统。