我有一个使用WIF 3.5构建的自定义STS。我在同一台服务器上有2个依赖方。配置如下:
RP1:
<audienceUris mode="Always">
<clear />
<add value="https://server1:1843/RP1/" />
</audienceUris>
<federatedAuthentication>
<wsFederation passiveRedirectEnabled="true" issuer="https://server2:1743/" realm="https://server1:1843/RP1/" requireHttps="true" />
<cookieHandler requireSsl="true" />
</federatedAuthentication>
RP2:
<audienceUris mode="Always">
<clear />
<add value="https://server1:1643/" />
</audienceUris>
<federatedAuthentication>
<wsFederation passiveRedirectEnabled="true" issuer="https://server2:1743/" realm="https://server1:1643/" requireHttps="true" />
<cookieHandler requireSsl="true" />
</federatedAuthentication>
使用此配置,一切都按预期工作。如果我登录RP1然后浏览到RP2,我会被重定向到server2上的STS。但是,如果我按如下方式更改RP 1的配置:
<cookieHandler requireSsl="true" path="/" />
登录到RP1后,当我浏览到RP2时,我没有被重定向到server2上的STS,我可以访问RP2。
为什么RP1中的此配置允许或拒绝访问RP2?
答案 0 :(得分:3)
默认路径值为HttpRuntime.AppDomainAppVirtualPath
当您没有指定路径时,每个RP都拥有自己的cookie,并且一个RP中的身份验证不会影响另一个。当您指定cookie路径值为“/”时,它适用于RP1和RP2。因此,登录RP1时存储在客户端上的身份验证cookie也会重新用于RP2。
因此,您将自动登录到RP2,RP2不再重定向进行身份验证。