2013-09-27 33 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。 –

相關問題