我即将开始使用WPF的项目,该项目使用Web服务来获取信息等。
需要用户名和密码对您进行身份验证并获取属于您的数据。
我希望我的WPF应用程序存储用户名和密码。但我不想存储它。所以我在想。如果我第一次登录后会在WCF端生成证书并将其提供给可用于每次通话的WPF应用程序,那将会很酷。
我在想什么?我想解决的另一个问题是如何避免有人复制和粘贴证书?
基于@zamd建议。这就是我想要解决的问题。
我发现这篇非常有用的博客文章http://weblogs.asp.net/cibrax/archive/2011/02/04/authenticating-clients-in-the-new-wcf-http-stack.aspx,但我想使用表单身份验证来获取SAML令牌
答案 0 :(得分:1)
您应该查看基于声明的安全性和SAML令牌。
登录时,您的应用程序应转到您的服务或“安全服务”,也称为“安全令牌服务”,并获取SAML令牌以换取用户名/密码对。 SAML令牌通常是为收件人保护的,可以安全地存储在客户端,直到它们过期。
每次需要调用WCF服务时,都可以使用此SAML令牌进行丰富的身份验证和授权。
答案 1 :(得分:0)
您对证书基本身份验证的理解不正确。证书用于建立SSL连接,用于使用非对称加密对数据进行加密并对用户进行身份验证,但根据证书对用户进行身份验证,证书应安装在用户的系统上,而不是由WCF服务提供。这需要人们设置PKI基础设施。 您可以看到的其他选项是使用
答案 2 :(得分:0)
如果您必须使用用户名/密码组合,那么您可以使用Windows凭据管理器让Windows在Windows 7,Windows Server 2008(以及可能是Vista)下为您存储它。你需要陷入p / invoke( http://pinvoke.net/default.aspx/advapi32/CredRead.html和http://pinvoke.net/default.aspx/advapi32/CredWrite.html)。
我遇到的唯一问题是它在Windows Server 2003上不起作用,即使文档说它是受支持的操作系统。