Apache HTTPD:NTLM認證
NTLM是Windows環(huán)境下的單點認證機制,在Windows域環(huán)境下較為方便。如果服務(wù)器不在域中,會自動使用服務(wù)器的本機賬戶嘗試登錄。NTLM依靠Windows,它沒有獨立實現(xiàn),必須依賴一個具體的協(xié)議,比如HTTP(NTLM?over?HTTP)。注意,NTLM只是一個認證協(xié)議,如果要保證信息不被他人看到,請另外使用SSL。
?其認證過程有3步:
協(xié)商:確定協(xié)議版本。
質(zhì)詢:服務(wù)器和客戶端交換身份信息。
驗證:服務(wù)器向自身或域控制器(Domain?Controller,DC)驗證客戶端的身份。
詳細步驟如下:
客戶端嘗試登錄,計算用戶輸入密碼的摘要,然后丟棄密碼,將用戶名發(fā)送給服務(wù)器,啟動認證流程。
服務(wù)器發(fā)回一個16字節(jié)隨機數(shù)挑戰(zhàn)(Challenge),要求客戶端加密該隨機數(shù)。
客戶端使用密碼的摘要加密Challenge(加密算法是HMAC-MD5),將結(jié)果發(fā)回服務(wù)器。
如果服務(wù)器不在域環(huán)境里面,就通過本機的安全賬戶管理器數(shù)據(jù)庫(Security?Account?Manager?Database,SAM)查找用戶,同樣計算一遍加密Challenge。兩者相同,則說明用戶合法。如果服務(wù)器在域環(huán)境里面,上面的工作會被轉(zhuǎn)發(fā)給DC完成。
?在Apache?HTTPD上,可以使用mod_authn_ntlm模塊提供NTLM認證服務(wù),配置如下:
標簽: