2016-03-03 172 views
0

我試圖在asp.net(NTLM auth)中實現註銷功能。 Session.Abandon可以正常工作,但如果用戶沒有關閉瀏覽器窗口,Chrome瀏覽器會自動使用以前的憑據登錄。只有IE瀏覽器正確地要求提供新的證書。javascript stop autolog-in in firefox and chrome

所有瀏覽器窗口關閉後,瀏覽器會在「需要驗證」窗口中正確詢問用戶和密碼。

試圖清除Cookie與

xmlhttp.open("GET", ".force_logout_offer_login_mozilla", true, "logout", "logout"); 

xmlhttp.open("GET", '<DOMAIN>?&timeSpan=' + (new Date().getTime().toString()), true, "logout", "logout"); 

cookie將被清除,.NET再次創造了新的會話對象,但Firefox和 「透明」 鉻登錄用戶。

IE上的第二個版本要求輸入「註銷」用戶的憑據,但是在Firefox上,它只是使用以前發送的值登錄。

有什麼辦法可以阻止這種行爲?這似乎是嚴重的安全問題......

回答

0

Windows質詢/響應(NTLM)是網絡,其中包括運行Windows操作系統的系統和獨立的系統中使用的身份驗證協議。

這並不是嚴重的安全問題除非你不信任的人登錄到您的網絡域。

使用Windows身份驗證,除非用戶登出網絡(即他們的計算機)或關閉瀏覽器,否則無法使用戶的會話無效。 IE可能有解決方法,但它不適用於其他瀏覽器,因爲這不是他們的問題。他們只是遵循已建立的認證實踐。

一旦用戶通過網絡驗證,ASP.NET將「透明地」將其憑據「透明地」傳遞到Windows身份驗證的Web應用程序而無需提示。即使您通過代碼設法使會話無效,他們也可以點擊後退按鈕並繼續停止。

如果您想要將用戶註銷,則應選擇其他身份驗證機制,如基本或表單身份驗證。這通常是用戶不理解Windows身份驗證Web應用程序誰呼籲註銷按鈕的一個要求。