我正在使用表單身份驗證的MVC .NET項目。我試圖製作一個網站的副本並將其發佈到IIS(不同的虛擬目錄)上。我注意到我無法同時驗證這兩個站點:當我訪問一個站點時,我會自動斷開與另一站點的連接。爲了使用戶能夠同時訪問它們,應該改變什麼?這是一個餅乾問題?在IIS上覆制粘貼網站 - 身份驗證問題
我這麼認爲,因爲當我檢查網站元素很明顯,_ASPXAUTH cookie具有相同的價值爲他們兩個。我應該改變什麼?
我正在使用表單身份驗證的MVC .NET項目。我試圖製作一個網站的副本並將其發佈到IIS(不同的虛擬目錄)上。我注意到我無法同時驗證這兩個站點:當我訪問一個站點時,我會自動斷開與另一站點的連接。爲了使用戶能夠同時訪問它們,應該改變什麼?這是一個餅乾問題?在IIS上覆制粘貼網站 - 身份驗證問題
我這麼認爲,因爲當我檢查網站元素很明顯,_ASPXAUTH cookie具有相同的價值爲他們兩個。我應該改變什麼?
它是一個cookies問題?
是的,最有可能的。這兩個網站之間的SSO非常依賴於它們託管的域名。如果它們託管在同一頂級域名(如site1.example.com和site2.example.com)下的2個子域中,則只需在表單身份驗證中設置域屬性即可實現它們之間的SSO cookie來.example.com
,並確保這兩個應用程序共享同一臺機器按鍵:
<authentication mode="Forms">
<forms protection="All" domain=".example.com" />
</authentication>
<machineKey validationKey="XXXXX" decryptionKey="XXX" validation="SHA1" decryption="AES" />
如果2點都在不同的頂級域名,如example1.com
和example2.com
,那麼你需要做更多的工作,以實現跨域SSO。你可以在this answer
找到一些細節。
UPDATE:
我可能會誤解你的問題。看起來您不希望在網站之間擁有SSO,而是需要單獨的身份驗證。在這種情況下,所有你需要的是有不同的cookie名稱對他們倆的:
<forms name="SITE1AUTH" />
和:
<forms name="SITE2AUTH" />