我有下一个组件:
- RP-1(由 Ws-Fed、WIF 连接)
- RP-2(通过 SAML,Federation Provider 连接,实际上是另一个 ADFS)
- MY-ADFS(ADFS Server 2019 作为主要 STS)
- MY-IP(独立的身份提供者网络服务,身份服务器 4)
因此,当我从 RP-1(Ws-Fed) 发出一个单独的请求时,一个简单的 Ws-Fed 注销会形成一个对 ADFS 的请求:
获取 https://MY-ADFS/adfs/ls/
- wtrealm:https ://RP-1.com/
- 瓦:wsignout1.0
- 回复:https : //RP-1.com/logout/
接下来 ADFS 会重定向到 IP:
获取https://MY-IP/WsFederation
- 瓦:wsignout1.0
- 回复:https://MY-ADFS/adfs/ls/?redirectContextId=2dd581d2-6e02-4476-915b-a581e3c855d4
因此用户从 ADFS 和 IP 清除会话。- 正如预期的那样。
但是,如果在注销之前,已转换到 SAML RP 并且 SAML 会话变为活动状态,则在退出 ADFS 时会出现错误:
MSIS7055:并非所有 SAML 会话参与者都正确注销。建议关闭浏览器。
为了解决这个问题,我将 SAML 依赖方信任中的注销端点 (URL) 配置为:
https://RP-2/adfs/ls/ ?wa=wsignout1.0
使用POST绑定。在这些更改之后,错误消失了。但是现在 ADFS 不再使注销重定向到 IP,而是将 SAML 注销重定向到 RP-2:
发布 https://RP-2/adfs/ls/?wa= wsignout1.0
- SAML 请求:PHNhbWxwOkxvZ291dFJl
结果,我没有切换到 IP,而是停留在 RP-2(ADFS 也是)页面上,上面写着退出成功。但是,用户在 IP 端仍然有一个活动会话(cookies)。
这里有几个问题:
- 目前尚不清楚为什么 ADFS 会使用 SAML 活动会话更改调用链。
- 目前尚不清楚如何排除 SAML 注销重定向,或强制 ADFS 也注销到 IP。