我有一个关于 SAML2 的基本问题。典型流程是用户从受保护的 SP 请求资源。SP 检查用户是否有安全上下文(比如 cookie?),如果没有找到安全上下文,它会构造 AuthRequest,然后将浏览器重定向到 IdP。现在 IdP 同样首先检查用户是否具有现有的安全上下文。IdP 如何做到这一点?IdP 是否也为此目的使用 cookie?
2 回答
是的。对于 SAML Web SSO 配置文件,会话几乎总是作为 cookie 保存在 IDP 和 SP 的浏览器中。但是,没有关于如何管理它的规则。IDP 可以选择不保持活动会话并提示用户登录每个 SSO 事务。
伊恩
@Ian - 很好的答案。但是,如果 IDP 不维护会话 cookie [B/W 浏览器和身份提供者 (IDP)],那么您将错过单点登录 (SSO) 的显着优势。将丢失的 SSO 用户体验 (UX) 功能在以下场景中进行了描述:
0) 假设 IDP 已在 Google Apps 和 Salesforce 中注册。
1) 打开浏览器。注意:SAML 是基于浏览器的。您需要一个浏览器才能使 SAML 工作。
2) 尝试访问 Google Apps;(您没有现有的会话 cookie [B/W 浏览器和 Google Apps])然后将您重定向到 IDP。
3) 您使用有效的 IDP 凭据登录。
4) IDP 然后在您的浏览器中存储一个会话 cookie [B/W Browser and IDP]。(这是@Ian 提到的步骤,IDP 可以跳过) 5) IDP 然后将您重定向回 Google Apps(通过 HTTP POST),并在 POST 中嵌入 SAML 令牌。您现在在 Google Apps 中。(现在您的浏览器上存储了一个会话 cookie [B/W Browser 和 Google Apps]) 5) 尝试访问 Salesforce。
6) Salesforce 发现您没有活动会话 cookie[B/W Browser 和 Salesforce],因此他们将您重定向到 IDP。
* 这是我添加的用户体验 (UX) *
7) IDP 将查找会话 cookie [B/W 浏览器和 IDP],如果 IDP 配置为不存储维护一个,您必须输入单点登录(SSO) 又名 IDP 凭证。
关于第 7 步的讨论:为每个单独的服务输入 SSO 凭据,额外步骤乘以您正在使用的服务数量。我认为实现的主要吸引力是只输入一次凭据并访问所有内容(安全主题除外)。但是,如果 IDP 不存储会话 cookie [B/W 浏览器和 IDP],您仍然只使用一组凭据(而不是每个服务的单独凭据),所以生活仍然更轻松。
@Ajava - 您似乎对如何使用 cookie 感到困惑。我希望您可以按照我上面的步骤,更好地了解如何将 cookie 与 SAML 一起使用。
这也是我发现解释 cookie 的一个很好的链接:http: //lifehacker.com/5461114/fact-and-fiction-the-truth-about-browser-cookies