我正在寻找有关对我的WebService进行身份验证的最佳方法的一些指导。现在,我在.NET 3.5上有一个标准的WebService,以及一个位于此WebService之上的MVC网站。
MVC网站使用OpenID对用户进行身份验证,在开发阶段,我们只是将用户的OpenID声明标识符传递给WebService进行身份验证。显然,这不是我们上线时将向客户发布的内容。
所以我的问题是:对WebService进行身份验证的最佳方式是什么?
我使用的一些API使用了身份验证令牌。我们的另一个想法是,在连接到WebService时,向客户端传递一个加密密钥,它们可以用于所有传输。
我在这里大声思考,再次,非常感谢任何帮助!谢谢!
...
更新:现在我已经创建了一个具有OpenIdURL属性的自定义SoapAuthenticationHeader。这用于所有服务调用以验证用户。问题是双重的:
因此,我可以在连接到WebService时将加密密钥传递给客户端,并让客户端在SoapAuthentication头中加密OpenIdURL。但我不确定如何最好地解决这个问题......
答案 0 :(得分:3)
您可能想看看OAuth:
(使用http://oauth.net/code/进行编码。)
因为它专门适用于这种情况(Open ID不是,真的)。
关于SA的另一个问题是询问保护Web服务的最佳方法,并讨论了Open ID和OAuth:
答案 1 :(得分:0)
ASMX Web服务(Microsoft现在认为是“遗留”)无法使用OpenID进行身份验证。他们只能使用IIS提供给他们的东西。您可以添加一个SoapExtension来为它们执行OpenID身份验证,但我不会在那里花时间。
我不确定OpenID是否足够确定,但我怀疑它可以通过联合安全性与WCF集成。我相信其他人会回答有关详情。
答案 2 :(得分:0)
这不是一个真正的答案,但我不能发表评论......
你说“我在.NET 3.5上有一个标准的WebService,以及一个位于这个WebService之上的MVC网站”。
我可能会离开这里,但语言暗示这两个人坐在同一台服务器上。如果是这样,为什么不能只共享用户数据库和cookie令牌?
詹姆斯