6

我正在嘗試爲位於相同域中的2個網站設置單點登錄使用表單身份驗證進行單點登錄

例如,

http://mydomain(包含表單的身份驗證登錄頁面頂級站點)

http://mydomain/admin(父網站內駐留在虛擬應用程序seperately開發的網站)

讀過關於單點登錄幾篇文章 例如

http://www.codeproject.com/KB/aspnet/SingleSignon.aspx

http://msdn.microsoft.com/en-us/library/dd577079.aspx

他們似乎認爲這只是其在每個web.config中相同的machineKey部分的情況下,使該Cookie加密和解密是爲每個應用程序

相同

我已經設置了這一點,我從來沒有得到提示在子網站(虛擬應用程序)的憑據

我總是會在父站點得到提示。

除了具有相同的machineKey我也嘗試添加相同<authentication><authorisation>元素

任何想法,我可能會錯過?

+0

這個問題的任何成功? – AlfeG 2010-11-15 11:46:47

回答

1

我曾在的HttpModules部分使用<clear/>,因爲有父項沒有在bin目錄中存在的孩子(/管理)

這樣做(使用<clear/>這是)我有無意中清除了在web.config中指定的FormsAuthentication模塊 C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ CONFIG

所以我需要重新添加這些顯式給子(/ admin)配置

+0

我正在嘗試做類似的事情。我們可以爲同一個網站提供Forms AuthN和SSO嗎?也許有兩個不同的起始頁面,但單個web.config?任何意見,建議? – VoodooChild 2011-11-16 02:35:12

0

嘗試在兩個應用程序的web.config中配置httpCookies部分以使用相同的域。這樣,當您登錄到一個應用程序時,您獲得的FormsAuthentication cookie將對其他應用程序可見。

+0

感謝您的建議 - 不幸的是,沒有任何區別 – ChrisCa 2010-03-16 11:02:49

1

web.config中的表單部分也需要相同。

Quote from - Forms Authentication Across Applications

要在應用程序配置表單身份驗證,您正在參與共享Forms身份驗證的所有應用程序設置的形式和Web.config文件的machineKey的部分以相同的值的屬性。

以下示例顯示了Web.config 文件的 驗證部分。除非另有說明,否則在所有應用程序中,解密屬性必須爲 相同的名稱,保護,路徑,validationKey, 驗證,解密密鑰和 。 類似地,用於認證票據 (cookie數據)的加密和 驗證密鑰值和 加密方案和驗證 方案必須相同。如果 設置不匹配,則不能共享認證 門票。

+0

謝謝 - 正如我前面所說,我已經嘗試了相同的身份驗證和授權部分 OPne警告我注意到事情是,當我使用完全限定路徑loginURL例如「http://mydomain/login.aspx」我得到Windows Credentials的提示(不是我期望的表單登錄頁面) – ChrisCa 2010-03-16 11:27:31

+0

只是想確保我得到這個權利。如果您登錄到Mydomain,您應該通過Mydomain/admin進行身份驗證,並且此工作正常。 而且你希望它能夠以相反的方式工作?即當你登錄到管理你的身份驗證Mydomain? 您是否看過MyDomain中的身份驗證代碼?它與/ admin有什麼不同嗎? – 2010-03-16 13:01:12

+0

不。當我訪問包含登錄頁面的mydomain時,我想要對mydomain和mydomain/admin進行身份驗證。 當我訪問http:// mydomain時,我被重定向到登錄頁面 - 這正是我想要發生的事情。 當我訪問http:// mydomain/admin時,我沒有被重定向 - 我可以完全訪問/ admin網站。即它沒有從父母 – ChrisCa 2010-03-16 15:05:32

0

您需要在web.config中具有相同的驗證元素。在包含的表單元素中,確保爲每個應用程序賦予name屬性相同的值。對於loginUrl屬性,我使用相對路徑併爲所有應用程序使用相同的登錄頁面(例如,loginUrl = 「/ MainApp/login.aspx的」)。

另外,您是否手動創建身份驗證票證?

+0

獲取認證是的,已嘗試在父級中使用本地路徑(login.aspx),並在/ admin中使用完整路徑(mydomain/login.aspx),但我從來沒有重定向到登錄頁面/管理員。如果我把兩個完整的路徑,然後我得到一個Windows登錄提示(不是表單頁面登錄)的提示。已經嘗試了IIS中的所有安全設置,但無法重定向到子站點上的登錄頁面 – ChrisCa 2010-03-16 15:34:12

+0

即使用戶已經登錄到非管理站點,您是否嘗試顯示登錄頁面?另外,你是否將限制用戶部分放在授權元素中? – 2010-03-17 14:57:46

相關問題