2013-03-20 35 views
1

我有一個帶有Forms身份驗證的ASP.NET應用程序。我也有一個子文件夾設置作爲一個單獨的應用程序(不是虛擬目錄),使用相同的應用程序池並使用相同的web.config身份驗證設置。應用程序之間的表單身份驗證

由於某些原因,我不明白,這兩個應用程序不共享相同的身份驗證。例如,FormsAuthentication.SetAuthCookie似乎獨立工作,並且User.Identity.Name在兩個應用程序中返回不同的值。

我的問題是,他們如何共享相同的身份驗證?我想登錄到一個應用程序,並出現在另一個相同的身份。我可以看到.ASPAUTH cookie具有相同的值(顯然,因爲它們位於同一個域中)。但是單點登錄如何工作?

感謝 Themos

回答

4

即使應用程序在同一個應用程序池,機器按鍵是兩個不同的。通常情況下,認證Cookie使用機器密鑰加密。

機器密鑰的默認行爲是使用IsolateApps,它會爲每個IIS站點應用程序生成不同的機器密鑰,而不是應用程序池。

由於您有兩個不同的機器密鑰,他們無法解密應用程序之間的身份驗證cookie。您需要爲兩個應用程序添加一個靜態機器密鑰(這是相同的)。

您可以使用sites like this one來生成您自己的機器密鑰。

此外MSDN文章,Forms Authentication Across Applications還規定,需要在兩個應用程序之間的設置相匹配。

相關問題