SAML SSO如何运作?

时间:2018-05-29 14:50:17

标签: single-sign-on saml saml-2.0

假设我们在tomcat上有一个名为A的服务提供商应用程序,用户点击指向SP A的链接.SP A看不到提供令牌,因此它将用户重定向到IdP进行身份验证(使用SAML Authn请求)通过某种方式提供)。然后,IdP将用户重定向到提供凭据的一些公共登录页面,假设这些凭据是正确的,IdP使用令牌和关于主题的一些断言创建SAML响应,并将其发送回SP A. SP A看到此并允许用户访问应用程序。太好了!

我有几个问题

  1. 如何发送授权请求/响应,我知道有一个重定向绑定和一个POST绑定,其中SAMLResponse和请求被编码为查询参数,或者在POST绑定的情况下作为XHTML表单发送。但是我不确定哪个用在哪里?
  2. 服务提供商是提供服务的东西,例如Office 365或Sales force。每个人都是独立的服务提供商吗?我问我看了一个视频,其中有人说服务提供商是托管这些服务的东西,所以我不确定这里的答案是否正确?
  3. 令牌如何存储在客户端?因此,例如我现在针对SP A进行了身份验证,然后用户尝试从同一台机器/浏览器窗口使用SP B,SP B和IdP如何知道用户已经过身份验证,因此无需重新进行认证。即它的SSO方面。
  4. SP B是否需要托管在同一个tomcat实例上才能使其正常工作?

2 个答案:

答案 0 :(得分:1)

我花了很多时间让SSO为我工作。最有用的文件是this specification

以下答案基于以下经验:

  1. 根据相应的HTTP请求标头使用重定向或后绑定。建议使用Post绑定,因为它并不意味着对传输的数据量有限制。
  2. 此上下文中的服务提供者是客户端请求的任何内容。可能有很多人参与同一个SSO计划。
  3. 服务提供商必须能够识别SSO,包括处理身份验证响应数据。通常您不必实现协议 - 您的SP可以使用现成的框架。
  4. 服务提供商可能驻留在不同的服务器上。

答案 1 :(得分:1)

根据我自己的经验:

  1. 您可以选择自己的SAMLBinding(重定向或发布),具体取决于您的idp和sp支持的内容。该结合类型将用于第一步(SP→Idp)和第二步(IdP→SP)。如果您有一些运行环境,请打开浏览器devtools并查看网络选项卡以查看会发生什么。这只是一种从浏览器向SP / IdP发送数据的方法。

  2. Office 365和Salesforce.com都是云服务,对吗?我们以Office 365为例。这意味着除了“最终用户”服务(如Word,Excel)之外,还有一些技术SSO服务,这些服务是平台所共有的。它可以被视为较低(或技术)的服务层,我认为你说的是​​什么。

  3. SAML令牌由您的SP应用程序存储在浏览器中,隐藏在网页,cookie或Web存储中。这取决于您的SP的实施方式。

  4. 每个SP都可以根据共享私钥验证SAML响应,因此它将使用此密钥解密令牌,并且无需IdP重定向的帮助即可授予用户权限。

    1. Tomcat有一些扩展来支持SAML。但是,SAML可以在不与同一实例相同的情况下工作,与基本的JSESSIONID cookie相反。 所以你当然有几个例子。