单点登录(SSO):SP是否应该在每个请求中验证与IDP的会话?

5
根据SP启动的SSO流程,用户尝试访问SP。由于用户未经身份验证,因此将被重定向到IDP,用户在其中输入凭据,在成功登录后,IDP会在用户的浏览器(在IDP的域下)设置cookie,并使用SAML响应将用户重定向回SP。一旦SP验证SAML响应,它会创建自己的cookie/token并在用户的浏览器下设置在sp的域中。
随后请求中理想的情况是:
1. SP仅依赖其自身的cookie来获取用户信息 2. SP在每个请求中验证用户会话与IDP
如果建议选项1,那么从安全性角度来看,这样做是否可以接受?因为登录后,SP和IDP之间没有进一步的通信。
如果建议选项2,则每个请求都需要调用IDP,这可能会影响SP的性能。
请建议此处的理想流程。
2个回答

3
如果建议选项1,从安全角度来看是否可以,因为登录后SP和IDP之间没有进一步的通信。
[我] 是的,应该由SP负责验证cookie(可能使用所有详细信息加密或通过指向持久存储区的ID引用)。 IDP的工作是提供身份,这已经完成。
如果建议选项2,则每个请求都调用IDP会有开销,这可能会影响SP的性能。
[我] 是的,这将过于繁琐,以验证用户会话与IDP。它的工作原理是-如果SP会话已失效或正在创建中,请转到IDP,如果IDP cookie/会话有效,则给出SAML响应/声明,否则进行身份验证,最后SP创建一个新会话。
希望对您有所帮助。

这个规范在任何地方都有正式的文件记录吗? - Saurabh Agrawal
规范中没有涵盖到我所知道的这个问题。请参考:http://xacmlinfo.org/2015/02/12/sp-idp-session-time-out-with-saml2-sso/。 - WZee
属性本身也可以添加属性。属性有一个“不再有效”的字段,在此之后就不能依赖它们了。因此,如果IdP在发布用户属性时设置了一个有效期为一小时的“不再有效”时间,则SP应该使会话失效并重新验证用户。因此,基本上要将cookie TTL与属性TTL匹配。 - codebrane

1
用户已被身份提供者授权/认证。你是否担心此授权/认证会突然过期?例如,也许IdP属于用户的雇主,当用户被解雇时,立即撤销对SP的访问至关重要?或者用户发现他的凭据被盗,因此关闭/阻止了他的IdP帐户,您是否希望能够停止SP会话?您只能在选项1中执行这些操作,因此这是更安全的选项。
如您所说,这会带来很多开销。因此,问题基本上是,一旦用户的IdP帐户被撤销,您的SP会话立即终止有多重要。
顺便说一句,我不喜欢的是IdP将会话存储在cookie中。在我的看法中,他不应该这样做,尤其是如果您实施第2个选项。原因是这使得注销非常棘手:用户现在应该记住在SP和IdP上注销,而他只需要登录一次。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接