Single sign on SAML SSO它是如何工作的?

Single sign on SAML SSO它是如何工作的?,single-sign-on,saml,saml-2.0,Single Sign On,Saml,Saml 2.0,假设我们有一个名为托管在tomcat上的服务提供商应用程序,用户单击指向SP a的链接。SP a发现没有提供令牌,因此它将用户重定向到IdP进行身份验证(通过某种方式提供SAML Authn请求)。然后,IdP将用户重定向到提供凭据的某个公共登录页面,假设这些凭据正确,IdP将创建一个SAML响应,其中包含一个令牌和一些关于主题的断言,并将其发送回SP a。SP a看到这一点,并允许用户访问应用程序。太好了 不过我有几个问题 授权请求/响应是如何发送的,我知道存在重定向绑定和POST绑定,其中S

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

不过我有几个问题

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

  • 我花了大量时间让SSO为我工作。最有用的文件是

    以下答案基于这一经验:

  • 根据各自的HTTP请求头使用重定向或后绑定。建议使用后绑定,因为它并不意味着对传输的数据量有限制
  • 在此上下文中,服务提供者是客户端请求的任何内容。其中可能有许多参与同一SSO方案
  • 服务提供者必须具有SSO意识,这包括身份验证响应数据的处理。通常,您不必实现该协议—SP可以利用现成的框架
  • 服务提供者可能位于不同的服务器上

  • 根据我自己的经验:

  • 您可以根据idp和sp支持的内容选择自己的样本绑定(重定向或post)。此绑定类型将用于第一步(SP->Idp)和第二步(Idp->SP)。如果您有一些运行环境,请打开浏览器devtools并查看“网络”选项卡以了解发生了什么。这只是将数据从浏览器发送到SP/IdP的一种方式

  • Office 365和Salesforce.com都是云服务,对吗?让我们开始工作吧。这意味着,除了“最终用户”服务(如Word、Excel)之外,还有一些平台通用的技术SSO服务。可以将其视为较低(或技术)的服务层,我认为这是您的意思

  • SAML令牌由SP应用程序存储在浏览器中,隐藏在网页、cookie或web存储中。这取决于SP的实现方式

  • SAML响应可以由每个SP基于共享私钥进行验证,因此它将使用此密钥解密令牌,并能够在无需IdP重定向的帮助下授予用户权限

  • Tomcat有一些扩展来支持SAML。但是SAML被设计为不在同一实例上工作,与基本JSESSIONID cookies相反。 当然,你有几个例子