0

我正在浏览 SAML 文档。考虑 applicatin1 将发送登录请求,它会联系 IDP 进行身份验证,并且 Idp 对用户进行身份验证。假设我是第一次登录,在这种情况下 IDP 要求输入用户名密码,它会保存用户名密码,下次它不会要求输入用户名密码。

我有以下疑问。

  1. 由于在 saml 中不同的应用程序可以使用相同的用户名密码登录,IDP 如何保存用户名和密码,我读取它存储在 cookie 中,但是 cookie 仅限于一个应用程序,我们不能在不同的应用程序之间传递 cookie。它是如何处理的?

  2. 我们是否需要编写代码来创建 cookie 来保存用户名密码,或者 saml /idp api 会处理它。

4

1 回答 1

1

当我开发 SAML IdP 时,登录信息存储在一个 cookie 中,每当用户返回 IdP 时,该 cookie 都会被解析。例如,用户转到 SP1,被重定向到 IdP,使用用户名/密码登录,IdP 为其自己的域设置 cookie,将用户重定向到 SP1。用户然后转到 SP2,被重定向到 IdP。IdP 看到 cookie,解析用户,会话尚未过期,因此从会话加载用户信息并将用户重定向到 SP2。

这不是 IdP 如何记住用户的重要部分(它可以这样做,但它喜欢,因为 SP 永远不会看到登录)。重要的是 IdP 发送给 SP 的属性。因此,相同的用户登录可能会导致从相同的 IdP 登录事件向 SP1 和 SP2 发送完全不同的属性。

在 SP 处,由应用程序来处理属性。例如,它可以创建一个 JSESSIONID 并将来自 IdP 的 SAML 断言挂在其上。如果用户在 JSESSIONID 超时内返回,SP 将只使用这些属性。如果超时已超出,SP 会将用户重定向到 IdP,但如果 IdP cookie 未过期,则用户无需再次登录 IdP,属性将被静默发送到 SP。

于 2017-10-10T13:58:51.567 回答