我们目前在使用ADFS 2.0和外部IP-STS进行单点注销时遇到问题。我们的设置是: RP1< - trust - > ADFS 2.0< - trust - >自定义IP-STS RP2< - trust - > ADFS 2.0< - trust - >自定义IP-STS
单点登录部分非常有效,如果用户已使用自定义IP-STS登录以访问RP1,此后他们可以在同一浏览器会话中访问RP2而无需再次登录。
然而问题出现在签出过程中。当用户从RP1退出时,通过使用Fiddler,我们可以看到:
我认为ADFS应该为所有具有相同会话的RP注销,但事实并非如此。我错了吗?或者我在这里错过了某种配置?
当然我们可以选择从自定义IP-STS向RP显式发送wsignoutcleanup1.0动作,但我们需要解析“wctx”以获取我不想要的原始RP Url。 我还尝试将wsignoutcleanup1.0操作从Custom IP-STS发送回ADFS(步骤3),但它也没有帮助。
答案 0 :(得分:1)
我的猜测是你没有使用wsignoutcleanup返回iframe而是返回图片。因此,adfs不会返回嵌套 iframe,换句话说,它不会正确升级注销。
正确的顺序是
1个应用程序将注销请求发送到adfs
2 adfs将请求升级为外部sts
3 sts使用wsignoutcleanup返回指向经过身份验证的应用程序(在本例中为adfs)的iframe序列
4个adfs将带有wsignoutcleanup的嵌套iframe返回给所有经过身份验证的应用,包括rp1和rp2
答案 1 :(得分:0)
听起来自定义STS没有将signoutcleanup发送到ADFS。