2013-09-27 23 views
1

我有用WIF 3.5构建的自定义STS。我在同一台服务器上有两个依赖方。在配置如下:为什么一个RP中的WIF配置允许访问同一台服务器上的其他RP?

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我不是重定向到STS在Server2上,我可以访问RP2。

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

回答

3

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

+0

这正是原因,应用程序之间共享的cookie。 –

相关问题