2014-04-30 37 views
0

我们有一个自定义的单一登录要求,一旦用户登录到门户网站,他们就可以转到另一个客户端应用程序并自动登录而不发送任何消息。这是简单的单点登录肥皂令牌建议安全吗?

我已经看过dotnetopenauth开放式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并将一个安全令牌添加到URL中。 {令牌被加密并且将包含最小值:时间戳,ClientID,可能还有一个随机数}。

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

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

感谢

回答

1

我不能肯定,如果这个方法是多还是少的安全,但我上面的方法最初关注的是,没有通过domain_client令牌的验证。如果没有验证这个令牌,任何事情都可以传递给domain_client,它会直接将它传递给你在domain_master的web服务 - 这可能会导致问题,因为它可能会提供一个攻击媒介。

您可以实现HMAC的令牌的确认 - http://www.piotrwalat.net/hmac-authentication-in-asp-net-web-api/

希望这有助于!

+0

感谢您的帮助。 令牌由domain_master生成并由域主服务器验证,如果令牌的格式不正确,并且在时间戳内将被忽略。我不知道如何矢量攻击与hmac更不可能。我可能是错的。任何进一步的帮助,非常感谢。 – Jonnymaboy

+0

HMAC身份验证可防止通过直接调用domain_client将特制恶意代码传递给domain_master Web服务。 – Andy

+0

谢谢。我会更多地阅读hmac和向量令牌。至于其余部分,这听起来是相当可行和合理的构建或像dotnetopenauthid更好的选择像开放标识。再次感谢 – Jonnymaboy