【问题标题】:Using OpenID with a WebService: Best way to authenticate?将 OpenID 与 WebService 一起使用:验证的最佳方式?
【发布时间】:2010-11-09 01:18:23
【问题描述】:

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

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

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

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

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

...

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

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

所以我可以在连接到 WebService 时将加密密钥传递给客户端,并让客户端加密 SoapAuthentication 标头中的 OpenIdURL。但我不确定如何最好地解决这个问题......

【问题讨论】:

  • 当您说“标准 Web 服务”时,您是指传统的 ASMX 服务,还是使用 WCF?
  • 这与我所期待的很接近,但如果有人能进一步解释一下,那就太好了。 stackoverflow.com/questions/544388/…
  • 我使用的是标准的 ASMX WebService,而 MVC 正在将 WebService 作为服务引用访问(我认为它是 WCF 包装器?)。

标签: c# asp.net-mvc web-services openid oauth


【解决方案1】:

您可能想看看 OAuth:

http://oauth.net/

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

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

关于 SA 的另一个问题是关于保护 Web 服务的最佳方法,并且讨论了 Open ID 和 OAuth:

Web Service Authentication using OpenID

【讨论】:

  • 当你说“这个场景”时,你指的是哪一个? ASMX 服务?
  • 谢谢,这为我指明了正确的方向。在我将其标记为已回答之前,我想看看社区的其他人必须分享什么。虽然我认为我不需要 OAuth 提供的所有功能,但协议工作流页面提供了一些关于请求令牌和访问令牌的重要信息。
  • @John Saunders:我指的是 Open ID 与 OAuth,而不是真正的 ASMX 与 WS-* Web 服务。 Open ID 并不真正适用于 API,而 OAuth 是。
【解决方案2】:

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

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

【讨论】:

  • 我很抱歉。现在我已经创建了一个自定义的 SoapAuthenticationHeader ,它有一个 OpenIdURL 属性。这用于所有服务调用以对用户进行身份验证。
  • 你能用这些信息更新你的问题吗?特别是,如果你有这个标题,你还需要什么?
  • 什么,“遗产”?哦,Microsft……ASMX WebServices 很棒! :)
  • 如果您的需求很简单,它们就很棒。无论如何,它们已经被 WCF 取代,现在被认为是遗留的。见johnwsaundersiii.spaces.live.com/blog/…
【解决方案3】:

这不是一个真正的答案,但我不能离开 cmets...

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

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

詹姆斯

【讨论】:

  • 这些可能或可能不在同一台服务器上。会有两种情况都发生的情况。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多