1

我有一个使用 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="/" />

当我浏览到 RP2 时登录到 RP1 后,我没有被重定向到 server2 上的 STS,我可以访问 RP2。

为什么 RP1 中的此配置会允许或拒绝对 RP2 的访问?

4

1 回答 1

3

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

于 2013-10-02T18:40:17.110 回答