我目前与使用 SAML2.0 和 ADFS2.0 的客户端集成。我们是服务提供者,他们是身份提供者。
与单点登录相关的一切都按预期工作,但单点注销有时会表现得很奇怪。对于单次注销,我们发送一个 SAML 注销请求,并期望返回一个 SAML 注销响应来处理我们应用程序的注销。这通常是这种情况,并且一切都正确处理。
但是,我发现了一个问题,即我们使用 SAML 注销请求启动注销,但随后 ADFS 服务器以注销请求作为响应。
重现步骤:
- SSO 进入 ADFS 帐户 #1
- 在同一浏览器选项卡上,使用 ADFS 帐户 #2 再次启动 SSO。
- 在同一浏览器选项卡上,为 ADFS 帐户 #2 启动 SLO。
查看 SAML Tracer,我发现 ADFS 服务器发回的注销请求与 ADFS 帐户 #1 相关联。这怎么可能?我们发送的用于启动 SLO 的注销请求仅包含 ADFS 帐户 #2 的详细信息,与帐户 #1 没有任何关系。
这是正常的 ADFS SLO 行为吗?对我来说,为什么 ADFS 服务器会使用注销请求响应注销请求,并且最重要的是,对于不同的用户,这是没有意义的。我无法用其他 IDP 重新创建此问题。
除了这种情况,SLO 完全可以正常工作,并且会为我们发送的每个注销请求发送一个注销响应。