这个简单的单一登录肥皂令牌提案是否安全?

时间:2014-04-30 08:26:48

标签: asp.net web-services soap

我们有一个自定义单点登录要求,一旦用户登录到门户网站,他们就可以转到另一个客户端应用程序并自动登录而不会收到任何消息。

我已经看过dotnetopenauth开放id提供商,但我认为它不太合适,因为它似乎过于复杂。有一个建议的解决方案来自下面的客户端,但我想知道它是否安全,更少或更多,所以说开放ID等。如果开放ID听起来更适合这个,请解释为什么以及如何正确实施(那里并不是很多很好的例子是的,我已经搜索了以前的帖子,我对https://stackoverflow.com/questions/23311063/how-to-implement-a-soap-webservice-for-api-to-api-open-auth-2-provider

没有帮助

建议的解决方案是:

  • Domain_Master(这是我们)
  • Domain_Client(客户端应用程序,第三方,需要我们将登录用户传递给他们,以便他们可以将其记录到最后)

通过HTTPS的SOAP消息。

用户登录Domain_Master后,会点击指向Domain_Client的链接,并在网址中添加安全令牌。 {token已加密,并且将包含最少的:timestamp,ClientID,可能还有nonce}。

Domain_Client将在收到安全令牌后使用SOAP使用Domain_Master Web服务对其进行验证。 SOAP响应将告诉Domain_Client用户是谁,并将相应地将它们登录到Domain_Client应用程序。所以基本上它就像打开一扇门的钥匙。

令牌的有效性(例如它尚未过期或已经被使用等)将由SOAP API中的Domain_Master完成 - Domain_Client将简单地收集URL中传递的令牌并直接使用Domain_Master SOAP API。

由于

1 个答案:

答案 0 :(得分:1)

我无法确认此方法是否更安全,但我最初对上述方法的关注是domain_client没有验证令牌。如果没有验证此令牌,可以将任何内容传递给domain_client,并将其直接传递给domain_master上的Web服务 - 这可能会导致问题,因为它可能会提供攻击媒介。

您可以实施HMAC以验证令牌 - http://www.piotrwalat.net/hmac-authentication-in-asp-net-web-api/

希望这有帮助!