0

场景:

我有两个使用 pingfederate 单点登录服务登录的应用程序。

1.用户尝试登录到第一个应用程序,但由于用户未经身份验证,用户被重定向到 pingfederate 的登录页面(通用登录页面)。用户登录到第一个应用程序。
2.用户尝试登录第二个应用程序,因为用户已经通过单点签名服务 pingfederate 的身份验证,为应用程序提供必要的信息(设置会话所需的信息),用户被重定向到第二个应用程序。

问题:
当用户从第一个应用程序注销时,用户成功注销。此时 pingfederate 知道所有打开的应用程序并发送然后注销回调。因此它将注销请求发送到第二个应用程序。第二个应用程序处理注销请求并清除会话。但是用户停留在同一页面上。用户未重定向到登录页面

问题:
如何实现当我们收到注销请求时将用户重定向到登录页面?

4

1 回答 1

0

SLO 应该为 SP-Init SLO 工作的方式是:

  1. 在 FIRST SP 应用程序中单击注销。

  2. 您将通过 LogoutRequest 重定向到 IdP。

  3. 然后 IdP 会通过 LogoutRequests 将您连续发送到所有其他 SP。每一个都必须向 IdP 提供一个带有状态的 SAMLResponse。

  4. IdP 在收到最终状态后,必须将用户/浏览器发送回原始 SP,并带有带有最终状态的 SAMLResponse,SP 会根据该状态进行操作。

在 IdP-Init SLO 中,基本上只有第 3 步。

不过,这是踢球者,我认为这是您问题的核心。如果其中一个 SP 的“行为不端”,即不响应或不支持 SLO(不需要他们支持 SLO),那么如果您重定向到它,它将破坏注销的“链” !IdP 将重定向到 SP,并且浏览器将停留在那里。一旦链条被打破,就没有办法让它重新开始。

一年多以前,我在博客文章“SLO - 谨慎行事”中讨论了这个问题。最终,由于许多大牌 SP 不支持 SLO,没有太多理由这样做 - 作为 SAML 管理员,它只会给你带来黑眼圈。或者胃灼热。或两者。

于 2015-02-10T13:38:50.740 回答