6

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

MVC 网站使用 OpenID 对用户进行身份验证,在开发阶段,我们只是简单地将用户的 OpenID Claimed Identifier 传递给 WebService 进行身份验证。显然,这不是我们在上线时将发布给客户的内容。

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

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

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

...

更新:现在我创建了一个自定义的 SoapAuthenticationHeader ,它有一个 OpenIdURL 属性。这用于所有服务调用以对用户进行身份验证。问题有两个方面:

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

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

4

3 回答 3

3

您可能想看看 OAuth:

http://oauth.net/

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

因为它是专门为这种情况而设计的(Open ID 不是,真的)。

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

使用 OpenID 的 Web 服务身份验证

于 2009-07-08T14:02:26.637 回答
0

ASMX Web 服务(Microsoft 现在认为是“遗留”)无法使用 OpenID 进行身份验证。他们只能使用 IIS 提供给他们的东西。您可能会添加一个 SoapExtension 来为他们进行 OpenID 身份验证,但我不会花时间在那里。

我对 OpenID 的了解还不够,无法确定,但我怀疑它可以通过联合安全性与 WCF 集成。我相信其他人会详细回答。

于 2009-07-08T14:03:25.620 回答
0

这不是一个真正的答案,但我不能发表评论......

你说“我有一个 .NET 3.5 上的标准 WebService,以及一个位于该 WebService 之上的 MVC 网站”。

我在这里可能有点离谱,但语言暗示这两个位于同一台服务器上。如果是这样,为什么不能只共享用户数据库和 cookie 令牌?

詹姆士

于 2009-07-08T16:07:44.047 回答