选择SP-Initiated或IDP-Initiated SSO的原因

ton*_*919 2 single-sign-on saml-2.0

在我对SP-init和IDP-init的理解中,SSO如下:

IDP-init SSO:由IDP生成base64编码的saml响应并发送到SP,然后SP验证响应,如果响应有效,则最终用户登录到应用程序.

SP-init SSO:saml请求从SP发送到IDP,然后IDP将验证用户然后发回saml响应,下一部分与IDP-init SSO相同.

我们如何决定选择SSO是使用SP-init还是IDP-init?由于身份验证部分,SP-init似乎比IDP-init SSO更安全可靠.

And*_* K. 12

对我而言,服务提供商的应用程序的业务要求告诉您:

如果与服务提供商的应用程序的所有用户交互都将从"主页"或默认登录页面开始,则IdP启动可能很有意义(更少打破 - 不需要签名的AuthnRequest).

如果通过电子邮件向用户提供"深层链接"(例如,用户可以点击应该在服务提供商的应用程序中深入了解的链接),那么SP启动是唯一的前进方式.

在这两种情况下,用户都将根据IdP的身份验证规则在IdP上进行身份验证 - 在这方面,SP-init或IdP-init都不是"更安全".流量:

IDP-INIT:

  1. 用户单击链接以启动IdP-init SSO
  2. IdP验证用户是否经过身份验证 - 如果不是重定向身份验证
  3. IdP将身份验证属性(如用户名,电子邮件等)转换为SAML断言,并将用户重定向到SP
  4. SP将SAML断言转换为SP应用程序令牌并重定向到应用程序

SP-初始化:

  1. 用户单击链接转到SP应用程序
  2. SP Application确定用户没有令牌并重定向到SP
  3. SP重定向到IdP
  4. IdP验证用户是否经过身份验证 - 如果不是重定向身份验证
  5. IdP将身份验证属性(如用户名,电子邮件等)转换为SAML断言,并将用户重定向到SP
  6. SP将SAML断言转换为SP应用程序令牌并重定向到应用程序

正如您所看到的,唯一的区别是前三个步骤.

  • 应用程序通过它使用的任何会话验证令牌知道您是否通过了身份验证.例如,一个cookie - 该cookie是否存在?如果是的话,它有效吗? (2认同)

Sco*_*lin 5

您根据用户的期望或要求的导航流进行选择(假设浏览器POST绑定基于您的描述)。

如果您的要求指示用户从安全(已登录)网站A开始,并且在没有密码的情况下导航到网站B,则根据定义,这是由IdP启动的。

另一方面,如果希望用户位于未经身份验证的站点上,但仍使用合作伙伴站点的凭据登录,则这是SP启动方案起作用的地方。如果您选择使用Google帐户登录,则StackOverflow本身提供这种登录方式(尽管使用了SAML的替代方法)。用户从StackOverflow上的某个地方开始,单击登录链接,选择他们的IdP(以SAML语义)为Google,然后通过身份验证请求发送到IdP。在进行了不确定的凭据挑战之后(例如,您的浏览器可能已经在IdP站点上进行了身份验证的会话,或者IdP可能使用了两个因素的身份验证,等等),该用户将返回带有SAML响应文档的SP站点。