2016-10-06 182 views
1

我想知道我們是否使用NTLM(Windows)身份驗證 - 服務器如何確定用戶是否已經登錄。所以,當我第一次訪問該網站 - 服務器告訴我,他想通過NTLM身份驗證我:HTTP上的NTLM身份驗證

WWW-Authenticate: Negotiate 
WWW-Authenticate: NTLM 

然後客戶端和服務器交換幾個請求 - 實際上挑戰/響應階段發生在這裏,特別是服務器生成併發送挑戰到客戶端,客戶端根據它計算響應併發回,然後服務器聯繫域控制器進行驗證。好的,我們完成了。

但是,當我通過身份驗證並轉到任何頁面時,不再有任何身份驗證標頭。服務器如何知道我已經通過身份驗證?

P.S.我認爲IIS通過MAC或IP綁定客戶端,但事實並非如此。 NTLM適用於單一瀏覽器。也沒有找到NTLM特定的cookie。

回答

1

http上的NTLM使用HTTP persistent connection或http保持活動狀態。

創建單個連接,然後在會話的其餘部分保持打開狀態。

如果使用相同的身份驗證連接,則不必再發送身份驗證標頭。

這也是爲什麼NTLM不支持某些不支持保持連接的代理服務器的原因。

+0

謝謝,的確我還沒有想過。順便說一句 - 根據維基百科,持久連接超時60秒後可以通過Windows註冊表進行更改。「這是否意味着瀏覽器每1-2分鐘發送一張kerberos票? – seeker

+0

我真的不知道實現的細節,我猜憑據緩存在瀏覽器中,如果需要可能會重新發送。你可以看看網絡流量來找出答案。 –