繁体   English   中英

使用ADFS和STS一次注销

[英]Single Sign Out with ADFS and STS

目前,我们在使用ADFS 2.0和外部IP-STS进行单一注销时遇到问题。 我们的设置是:RP1 <-信任-> ADFS 2.0 <-信任->定制IP-STS RP2 <-信任-> ADFS 2.0 <-信任->定制IP-STS

单一登录部分的效果非常好,如果用户已经使用自定义IP-STS登录以访问RP1,则此后他们可以在同一浏览器会话中访问RP2,而无需再次登录。

但是问题出在注销过程中。 当用户从RP1注销时,通过使用Fiddler,我们可以看到:

  1. 注销请求(wsignout1.0)发送到ADFS
  2. ADFS将注销请求转移到自定义IP-STS
  3. 自定义IP-STS进程正确注销操作,然后返回到ADFS
  4. ADFS确实返回到(已注销)RP1
  5. RP1不再经过身份验证,因此当然会提示您再次登录(正确)
  6. 这里有问题: RP2仍然可以正常工作(具有先前的声明)。 而且ADFS不会将任何wsignoutcleanup1.0操作发送到RP2。

我假设ADFS应该为具有相同会话的所有RP登出,但事实并非如此。 我错了吗? 还是我在这里缺少某种配置?

当然,我们可以选择从自定义IP-STS向RP显式发送wsignoutcleanup1.0操作到RP,但是我们需要解析“ wctx”以获得我不想使用的原始RP Url。 我还尝试将wsignoutcleanup1.0操作从“自定义IP-STS”发送回ADFS(步骤3),但它也无济于事。

我的猜测是,您不是通过wsignoutcleanup返回iframe,而是返回图像。 因此,adfs不会返回嵌套的 iframe,换句话说,它不会正确升级注销。

正确的顺序是

1个应用程序将注销请求发送到adfs

2 adfs将请求升级到外部sts

3 sts使用wsignoutcleanup返回指向经过身份验证的应用程序(在这种情况下为adfs)的iframe序列

4 adfs将带wsignoutcleanup的嵌套iframe返回给所有经过身份验证的应用程序,包括rp1和rp2

听起来好像自定义STS没有将签出清除发送到ADFS。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM