将OpenID与WebService一起使用:最佳的身份验证方法?

Mat*_*ick 6 c# openid asp.net-mvc web-services oauth

我正在寻找关于对我的WebService进行身份验证的最佳方法的一些指导.现在,我在.NET 3.5上有一个标准的WebService,以及一个位于此WebService之上的MVC网站.

MVC网站使用OpenID对用户进行身份验证,在开发阶段,我们只是将用户的OpenID声明标识符传递给WebService进行身份验证.显然,这不是我们上线时将向客户发布的内容.

所以我的问题是:对WebService进行身份验证的最佳方法什么?

我使用的一些API使用了身份验证令牌.我们的另一个想法是,在连接到WebService时,向客户端传递一个加密密钥,它们可以用于所有传输.

我在这里大声思考,再次,非常感谢任何帮助!谢谢!

...

更新:现在我已经创建了一个具有OpenIdURL属性的自定义SoapAuthenticationHeader.这用于所有服务调用以验证用户.问题是双重的:

  1. 如果黑客知道用户的OpenIdURL,他们就可以轻松获得对WebService的访问权限.
  2. OpenIdURL目前以纯文本形式传递.

因此,我可以在连接到WebService时将加密密钥传递给客户端,并让客户端在SoapAuthentication头中加密OpenIdURL.但我不确定如何最好地去做...

cas*_*One 3

您可能想看一下 OAuth:

http://oauth.net/

(使用 http://oauth.net/code/进行编码。)

因为它是专门针对这种情况的(Open ID 实际上不是)。

SA 上还有另一个问题,询问保护 Web 服务安全的最佳方法,并且讨论了 Open ID 和 OAuth:

使用 OpenID 的 Web 服务身份验证