我有一個.NET 2.0 Web應用程序,它充當舊版.NET 1.1 Web應用程序的身份驗證存根。因此,用戶通過2.2應用程序登錄,然後重定向到1.1應用程序來完成他們的業務。我使用了技術described by Scott Guthrie,並在本地web.config文件中匹配機器密鑰,以便兩個應用程序都可以讀取身份驗證票證。這項技術在五年內爲我工作了幾年。爲什麼我的ASP.NET單一登錄停止工作?
直到現在。
截至今天早上,我們的配對應用程序中有四個配置爲如上所述,已停止生產:我們在(看起來)成功的身份驗證嘗試後退回。在登錄嘗試期間,我會彈回到登錄頁面。我檢查了事件日誌和IIS日誌,並沒有發現任何後果。我們可以看到auth cookie已經在我們的瀏覽器中設置。我們嘗試了多種瀏覽器(IE和Chrome)。在週末我知道在Web服務器上安裝了十多個補丁,其中一個增加了Framework 4.0,但我無法知道這些補丁是否會導致問題。有趣的是,在聖誕節前我注意到了我的開發箱上的相同行爲。從那時起,四個配對的應用程序中沒有一個已經重新部署,所以不要認爲這是導致它擴展到生產的部署問題。
有一個一對仍在工作的應用程序,我們正在比較代碼和配置以查看發生了什麼,但到目前爲止我們還沒有找到任何東西(否則我不會寫這篇文章!)
UPDATE 我想通了什麼孤對應用程序在做正確的:它是通過代碼處理授權。所以,我開發了我生病的應用解決方法:
ORIGINAL:
<authorization>
<allow deny="?" />
</authorization>
解決方法:
<authorization>
<allow users="*" />
</authorization>
然後,我添加代碼到我的ASPX基頁以檢查AUTH的cookie:
if (Request.Cookies.Get(FormsAuthentication.FormsCookieName) == null)
Response.Redirect(System.Configuration.ConfigurationSettings.AppSettings["MembershipLoginURL"],true);
我的代碼似乎履行了以前由ASP.NET執行的一個角色,即checki無論用戶是否被授權。所以 - 我有一個解決方法,但是這個謎仍然存在。
有沒有人知道是否有過去四個月發佈的微軟補丁(我們的服務器剛剛更新了四個月的補丁),這使ASP.NET無法在Web應用程序之間驗證/解密cookie .NET的不同版本?
不知道很多信息,沒有辦法回答這個問題。您可以開始將每個補丁應用到測試機器上,並查看它在什麼時候中斷,但是不知道補丁是什麼,我們甚至無法開始理解造成問題的原因。 – 2011-02-07 18:00:59
我們的服務器是虛擬機。今天下午我們將恢復更新之前拍攝的圖像。希望我們至少可以確定它是否是一個補丁問題。 – Aaronster 2011-02-07 18:46:05