为什么一个RP中的WIF配置允许访问同一服务器上的其他RP?

时间:2013-09-27 15:02:08

标签: asp.net c#-4.0 wif

我有一个使用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?

1 个答案:

答案 0 :(得分:3)

默认路径值为HttpRuntime.AppDomainAppVirtualPath 当您没有指定路径时,每个RP都拥有自己的cookie,并且一个RP中的身份验证不会影响另一个。当您指定cookie路径值为“/”时,它适用于RP1和RP2。因此,登录RP1时存储在客户端上的身份验证cookie也会重新用于RP2。 因此,您将自动登录到RP2,RP2不再重定向进行身份验证。