HTTP認證之摘要認證 Digest(一)

2022-01-11 22:30:53 字數 1616 閱讀 6720

導航

digest認證是為了修復基本認證協議的嚴重缺陷而設計的,秉承「絕不通過明文在網路傳送密碼」的原則,通過「密碼摘要」進行認證,大大提高了安全性。

相對於基本認證,主要有如下改進:

需要注意的是,摘要認證除了能夠保護密碼之外,並不能保護其他內容,與https配合使用仍是乙個良好的選擇。以下是摘要認證的具體流程圖:

看到上面出現了那麼多之前沒見過的引數,是不是有點慌(或是興奮)?別著急,這裡先給出乙個概覽:

1.當開啟需要認證的頁面時,會彈出乙個對話方塊,要求使用者輸入使用者名稱和密碼

2.使用fidder監聽請求,可以看到在未進行認證或認證失敗的情況下,服務端會返回401 unauthorized給客戶端,並附帶challenge

3.輸入正確的使用者名稱和密碼後,瀏覽器會生成密碼摘要以及其他資訊傳送給服務端,服務端認證成功後,返回一些與授權會話相關的附加資訊,放在authorization-info中。

其中,客戶端選擇的保護質量策略為authresponse就是通過計算得到的密碼摘要,具體計算方式如下(使用預設的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 認證協議,它與基本認證相容,但卻更為安全。摘要認證試圖修復基本認證協議的嚴重缺陷。具體來說,摘要認證進行了如下改...