Single sign on 选择SP启动或IDP启动SSO的原因
我对SP init和IDP init SSO的理解如下: IDP init SSO:IDP生成一个base64编码的saml响应并发送给SP,SP随后验证该响应,如果响应有效,则最终用户登录到应用程序 SP init SSO:从SP向IDP发送saml请求,IDP将对用户进行身份验证,然后返回saml响应,下一部分与IDP init SSO相同Single sign on 选择SP启动或IDP启动SSO的原因,single-sign-on,saml-2.0,Single Sign On,Saml 2.0,我对SP init和IDP init SSO的理解如下: IDP init SSO:IDP生成一个base64编码的saml响应并发送给SP,SP随后验证该响应,如果响应有效,则最终用户登录到应用程序 SP init SSO:从SP向IDP发送saml请求,IDP将对用户进行身份验证,然后返回saml响应,下一部分与IDP init SSO相同 我们如何决定SSO使用的是SP init还是IDP init?由于身份验证部分的原因,SP init似乎比IDP init SSO更安全可靠。SP in
我们如何决定SSO使用的是SP init还是IDP init?由于身份验证部分的原因,SP init似乎比IDP init SSO更安全可靠。SP initialized总是首选。IDP initilized将使SP实现更加容易,但它会带来一系列问题,如XSRF、互操作性和深度链接。您可以根据用户所需或所需的导航流进行选择(假设基于您的描述进行浏览器后期绑定) 如果您的要求要求用户从安全(登录)网站A开始,并在无密码的情况下导航到网站B,根据定义,这是IdP启动的
另一方面,如果预期用户在未经身份验证的站点上,但使用来自合作伙伴站点的凭据登录,则这就是SP启动场景的作用所在。如果您选择使用Google帐户登录,StackOverflow本身提供这种登录方式(尽管使用了SAML的替代方案)。用户从StackOverflow上的某个地方开始,单击登录链接,选择他们的IdP(在SAML语义中)作为Google,并向IdP发送authn请求。在未指定类别的凭据质询之后(例如,您的浏览器可能已经在IdP站点上拥有经过身份验证的会话,或者IdP可能使用双因素身份验证等),用户将返回SP站点并带有SAML响应文档 对我来说,服务提供商应用程序的业务需求告诉您: 如果所有用户与服务提供商的应用程序的交互都将从“主页”或默认登录页开始,那么IdP启动可能非常有意义(不太容易中断-不需要签名AuthnRequest) 如果存在通过电子邮件向用户提供的“深度链接”,如报告(也就是说,用户可以单击一个链接,该链接将使他们深入到服务提供商的应用程序中),那么SP initiated是唯一的前进之路 在这两种情况下,将根据IdP的身份验证规则在IdP对用户进行身份验证-SP init或IdP init在这方面都不是“更安全的”。流动: IdP初始化:
正如您所见,唯一的区别是前三个步骤。对于SP init,用户单击链接进入SP应用程序,我认为这不是后期绑定,SP如何确定用户是否拥有令牌。“令牌”是什么意思?应用程序通过它使用的任何会话验证令牌知道您是否通过了它的身份验证。例如,一个cookie——这个cookie存在吗?如果是,它有效吗?据我所知,用户在SP init SSO的第一步中单击应用程序的链接与IDP向其发送saml响应的链接相同。我说的对吗?它可能是,但也可能是指向某个报告的深度链接,或者其他不是网站主页的页面。IdP可以每次将您放在一个位置,SP可以将您放在SP应用程序中的任何位置。一旦收到SP的SAML断言,服务器就会将其重定向到包含会话信息的客户端页面。现在我的问题是,就这一步的安全措施而言,什么是最好的方法。我看不出第一个场景需要IdP初始化SSO的理由。在这种情况下,A是IDP,B是SP。这可以使用SP初始化SSO轻松实现。用户被发送到站点B,站点B检测到未登录到站点B的用户。用户被发送到站点a进行身份验证。站点A检测到用户已登录,并将用户发送回站点B,并提供有效的声明。我与几个只提供IdP的服务提供商网站合作过。这里的unsaid变量是合作伙伴站点实际支持的exchange模式。这并不是说你的反对意见是无效的;我只是描述了IdP可以在哪里使用以及它是什么。也有人可能会认为,场景A第一次链接(没有SSO)到站点B,只是为了SP发起的SSO而发送回来,这是在添加跃点,如果SP也向IdP发出
AuthnRequest
消息,肯定会增加复杂性。