NTLM驗證過程

2021-05-25 07:21:06 字數 1418 閱讀 4990

原址:

is的各種身份驗證詳細測試(二)

2009-11-06 15:00

如果ie選擇了ntlm驗證,ie就會在傳送到iis的請求中加入乙個authorization: negotiate頭,內容為:

authorization: negotiate ntlmssp***************xx

藍色部分在實際中是經過base64編碼的,其中「ntlmssp」表示是ntlm驗證的請求,後面的「******xx」部分是二進位制的資料,告訴伺服器,客戶端現在選擇了ntlm驗證,請伺服器傳送質詢碼給客戶端。

伺服器在返回無授權訪問的http回應的頭部加入authorization: negotiate頭,內容為:

authorization: negotiate ntlmssp***************************************xx

伺服器返回的「******xx」部分中含有乙個八字節的質詢碼。

客戶端使用客戶端帳號的密碼派生出來的8位元組deskey使用des演算法加密收到的質詢碼。連同客戶端帳號的使用者名稱傳送到服務端,形式還是這樣:

authorization: negotiate ntlmssp***************xx

這裡的「******x」部分包含了加密後的質詢碼和客戶端使用者名稱,使用者名稱在其中以明碼形式存在。

服務端收到使用者名稱後,先查驗本機是否有這個使用者,如果沒有直接返回沒有授權的http回應。

如果有這個使用者,就用這個使用者的密碼派生出來的8位元組deskey使用des演算法加密發給客戶端的那個8位元組的質詢碼,然後跟收到客戶端傳送來的加密後的質詢碼比較,如果不相同,表示客戶端輸入密碼不正確看,返回沒有授權的http回應;如果相同,就表示客戶端輸入這個使用者的密碼正確,驗證通過,返回客戶端請求的資源。

如果客戶端選擇了kerberos驗證,客戶端直接在請求頭中加入authorization: negotiate頭,內容為:

authorization: negotiate ************************************x

其中「*********x」包含了客戶端登入使用者的身份驗證票(登入時域中的票據伺服器發放的標識此登入使用者身份的票據,其中不包含使用者的密碼)。

伺服器驗證使用者驗證票,如果有效的票據,服務端能據此獲得使用者的使用者名稱,並驗證使用者的有效性。驗證通過後,服務端返回客戶端請求的資源。

但是客戶端ie何時選擇ntlm、合適選擇kerberos呢?下面通過一系列的測試來找出答案。

分伺服器和客戶端在域不在域兩種情況測試。   

iis的各種身份驗證詳細測試(一)

is的各種身份驗證詳細測試(三)

HttpClient解決ntlm驗證

四個引數 使用者名稱 密碼 機器名 網域名稱 ntcredentials creds new ntcredentials 1525201 chengdazhi1997 myworkstation pkuschool 給client設定引數 保證相同的內容來用於執行邏輯相關的請求 首先執行簡便的方法。...

NTLM驗證的含義

早期的smb協議在網路上明文傳輸口令,後來出現了 lan manager challenge response 驗證機制,簡稱lm,它十分簡單以至很容易被破解,微軟隨後提出了windowsnt挑戰 響應驗證機制,即ntlm。現在已經有了更新的ntlmv2以及kerberos驗證體系。ntlm工作流程...

8 7 NTLM 身份驗證

8.7.2.hash 8.7.3.攻擊 8.7.4.參考鏈結 ntlm是nt lan manager的縮寫,ntlm是基於挑戰 應答的身份驗證協議,是 windows nt 早期版本中的標準安全協議。net ntlmv1協議的基本流程如下 net ntlmv1 response的計算方法為 這種方式...