10

我知道相關的安全風險並將它與業務聯繫起來,但他們希望有5個域共享登錄cookie。使用FormsAuthentication交叉域名Cookie

我們正在使用並沒有計劃停止使用ASP.Net成員資格和配置文件。這可能嗎?黑客甚至將不勝感激。

回答

9

開箱即用的ASP.NET是不可能的。

基於表單的身份驗證基於Cookie,Cookie只能設置爲特定的域。

如果您想要真正的跨域(不是子域)共享身份驗證,您需要一個單一登錄解決方案。

我已經推出了自己的,它相對簡單。基本原則是您擁有一個擁有認證cookie(票證)的主域。然後,您將從所有其他域重定向到該域。這不太好,但事件微軟護照工作的方式。

你可以找到很多的在網上的例子,來看看這兩個環節:

Authentication cookies

Cross domain authentication

+0

在那第二個鏈接,如果您有運行演示,因爲「鍵不適於在指定狀態下使用」的麻煩,試試這個:確保密鑰文件實際上是在你認爲的地方創建的。看起來示例代碼包含一個密鑰文件,但是我們當然想要創建自己的密鑰文件。爲了保存密鑰文件(tripleDES.key),我首先必須將配置保存在企業庫配置工具中(右鍵單擊,保存)。一旦我保存了配置,我的密鑰文件也會立即保存,並且我可以運行演示應用程序。 – northben 2013-04-15 17:02:34

2

不僅與ASP.Net這是不可能的,但不在所有。 Cookie始終是特定於域的 - 任何商業瀏覽器都不能以其他方式工作。這是設計和非常必要的,以防止廣泛濫用Cookie。 Muerte指出你正確的方向(單點登錄)。

4

您可以設置所有這些領域的子域爲您的公司:

www.company.com 
shop.company.com 
sales.company.com 
research.company.com 
.. 

,那麼你就可以設置cookie到父域,這將是可見的所有子域。

var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket); 
cookie.Domain = ".company.com"; 
Repsonse.Cookies.Add(cookie); 

問候, 最大Chernyshov http://prontocoder.com