Single sign on 使用ADF和STS进行单点注销
我们目前在使用ADFS 2.0和外部IP-STS进行单点注销时遇到问题。我们的设置是: RP1 ADFS 2.0自定义IP-STS RP2 ADFS 2.0自定义IP-STS 单点登录部分工作得非常好,如果用户已经使用自定义IP-STS登录以访问RP1,那么他们可以在同一浏览器会话中访问RP2,而无需再次登录 然而,问题出现在注销过程中。当用户从RP1注销时,通过使用Fiddler,我们可以看到:Single sign on 使用ADF和STS进行单点注销,single-sign-on,wif,adfs2.0,Single Sign On,Wif,Adfs2.0,我们目前在使用ADFS 2.0和外部IP-STS进行单点注销时遇到问题。我们的设置是: RP1 ADFS 2.0自定义IP-STS RP2 ADFS 2.0自定义IP-STS 单点登录部分工作得非常好,如果用户已经使用自定义IP-STS登录以访问RP1,那么他们可以在同一浏览器会话中访问RP2,而无需再次登录 然而,问题出现在注销过程中。当用户从RP1注销时,通过使用Fiddler,我们可以看到: 注销请求(wsignout1.0)被发送到ADFS ADFS将注销请求传输到自定义IP-STS 自
我还尝试将wsignoutcleanup1.0操作从自定义IP-STS发送回ADFS(步骤3),但也没有帮助。听起来好像自定义STS没有将signoutcleanup发送给ADFS。我的猜测是,您返回的不是带有wsignoutcleanup的iFrame,而是图像。因此,adfs不会返回嵌套的iframes,换句话说,它不会正确地升级注销 正确的顺序是 1应用程序向adfs发送注销请求 2个adfs将请求上报给外部sts 3 sts使用wsignoutcleanup返回指向经过身份验证的应用程序(本例中为ADF)的IFrame序列
4 adfs向所有经过身份验证的应用程序(包括rp1和rp2)返回一个带有wsignoutcleanup的嵌套iframe实际上,我是在试图找到解决方案时这样做的。但如上所述,这没有帮助。注销过程仍然在ADFS处停止。我不使用blogspot中的示例中建议的图像。我的自定义STS只是重定向回ADFS(https:///adfs/ls/?requestContextId=....)处理注销时,因为它是来自WCF STS Web服务模板
FederatedPassiveSecurityTokenServiceOperations.ProcessSignOutRequest(requestMessage、User、requestMessage.Reply、Response)的代码代码>。可能是问题吗?是的,这是个问题。按照我的教程进行操作,但渲染iFrame而不是IMG。在停止传递requestMessage后,它现在可以工作。回复ProcessSignOutRequest
,还有一个问题:当我显式地将wsignoutcleanup操作添加到requestMessage时,为什么它不起作用。在将它传递到ProcessSignOutRequest
之前回答?很难说没有http调试跟踪。使用Fiddler或HttpFox嗅探所有请求和响应,并将有效序列与无效序列进行比较。