導航
digest認證是為了修復基本認證協議的嚴重缺陷而設計的,秉承「絕不通過明文在網路傳送密碼」的原則,通過「密碼摘要」進行認證,大大提高了安全性。相對於基本認證,主要有如下改進:
需要注意的是,摘要認證除了能夠保護密碼之外,並不能保護其他內容,與https配合使用仍是乙個良好的選擇。以下是摘要認證的具體流程圖:
看到上面出現了那麼多之前沒見過的引數,是不是有點慌(或是興奮)?別著急,這裡先給出乙個概覽:
1.當開啟需要認證的頁面時,會彈出乙個對話方塊,要求使用者輸入使用者名稱和密碼
2.使用fidder監聽請求,可以看到在未進行認證或認證失敗的情況下,服務端會返回401 unauthorized
給客戶端,並附帶challenge
3.輸入正確的使用者名稱和密碼後,瀏覽器會生成密碼摘要以及其他資訊傳送給服務端,服務端認證成功後,返回一些與授權會話相關的附加資訊,放在authorization-info
中。
其中,客戶端選擇的保護質量策略為auth
,response
就是通過計算得到的密碼摘要,具體計算方式如下(使用預設的md5加密演算法):md5(md5(a1):::::md5(a2))
演算法a1
md5(預設)
::md5-sess
md5(::)::
qopa2
auth(預設)
:auth-int
::md5()
另外,rspauth
使得客戶端可以對伺服器進行認證,稱為響應摘要。響應摘要的計算與請求摘要類似,但由於響應中沒有方法,而且報文實體資料有所不同,所有只有報文主題資訊a2不同。具體區別如下:
qopa2
auth(預設)
4.當服務端隨機數過期時,再次請求認證,可以看到質詢中增加了stale=true
,使用者無需再次輸入使用者名稱和密碼,瀏覽器會自動使用新的質詢引數進行密碼摘要的計算。
2.rfc 2617建議採用這個假想的隨機數公式:base64(timestamp md5(timestamp ":" etag ":" private-key))
其中,timestamp
是伺服器產生隨機數的時間或其他不重複的值,etag
是與所請求實體有關的http etag首部的值,private-key
是只有伺服器知道的私鑰。
HTTP 基本認證,摘要認證,擴充套件HTTP認證
http請求報頭 authorization http響應報頭 www authenticate http認證 基於質詢 回應 challenge response 的認證模式。基本認證 basic authentication http1.0提出的認證方法 客戶端對於每乙個realm,通過提供使用...
http摘要認證
摘要 認證步驟 1.客戶端訪問乙個受http摘要認證保護的資源。2.伺服器返回401狀態以及nonce等資訊,要求客戶端進行認證。3.客戶端將以使用者名稱,密碼,nonce值,http方法,和被請求的uri為校驗值基礎而加密 預設為 md5演算法 的摘要資訊返回給伺服器。認證必須的五個情報 real...
HTTP 摘要認證
基本認證便捷靈活,但極不安全。使用者名稱和密碼都是以明文形式傳送的,也沒有採取任何措施防止對報文的篡改。安全使用基本認證的唯一方式就是將其與 ssl 配合使用。摘要認證是另一種 http 認證協議,它與基本認證相容,但卻更為安全。摘要認證試圖修復基本認證協議的嚴重缺陷。具體來說,摘要認證進行了如下改...