根据SP发起的SSO流程,用户尝试访问SP。由于用户未经身份验证,他被重定向到IDP,在那里他输入凭据,成功登录后,IDP在用户的浏览器中设置cookie(在IDP的域下),并通过SAML响应将用户重定向回SP。一旦SP验证SAML响应,它就会创建自己的cookie /令牌,并在sp的域下设置在用户的浏览器中。
在后续请求中理想情况应该发生什么:
如果建议选项1 ,从安全角度来看是否可以作为登录后,SP和IDP之间没有进一步请求的通信。
如果建议选项2 ,则在每个请求中调用IDP会产生开销,这可能会影响SP的性能。
请在这里建议理想的流程。
答案 0 :(得分:1)
如果建议选项1,从安全角度来看是否可以作为登录后,SP和IDP之间没有进一步请求的通信。
[ME]是的,SP应该负责验证cookie(可能使用其中的所有详细信息加密或通过指向持久存储区域的ID引用)。 IDP的工作是提供已经完成的身份。
如果建议选项2,则在每个请求中调用IDP会产生开销,这可能会影响SP的性能。
[ME]是的,用IDP验证用户会话太多了。它的工作方式是 - 如果SP会话已失效或正在创建,请转到IDP,如果IDP cookie / session有效则给出SAML响应/断言或如果没有则进行身份验证,最后SP创建新会话。 < / p>
HTH。
答案 1 :(得分:1)
因此,用户已被身份提供商授权/验证。您是否担心此授权/身份验证可能会突然过期?例如,IdP可能属于用户的雇主,当用户被解雇时,立即撤销对SP的访问也很重要?也许用户发现他的凭据被盗,因此关闭/阻止他的IdP帐户,您是否也希望能够停止您的SP会话?您只能在选项1中执行这些操作,因此这是更安全的选项。
正如你所说,这带来了很多开销。所以问题基本上是,一旦用户的IdP帐户被撤销,您的SP会话立即被终止对您来说有多重要。
顺便说一下,我不喜欢的是IdP将会话存储在cookie中。在我看来,他不应该这样做,尤其是如果你实现选项2的话。原因是这使得登出非常棘手:用户现在应该记得在SP和IdP注销,而他只需要登录一次。