日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Digest authentication

發(fā)布時間:2023/12/10 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Digest authentication 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
“摘要”式認證( Digestauthentication)是一個簡單的認證機制,最初是為HTTP協議開發(fā)的,因而也常叫做HTTP摘要,在RFC2671中描述。其身份驗證機制很簡單,它采用雜湊式(hash)加密方法,以避免用明文傳輸用戶的口令。
摘要認證就是要核實,參與通信的雙方,都知道雙方共享的一個秘密(即口令)。

當服務器想要查證用戶的身份,它產生一個摘要盤問(digestchallenge),并發(fā)送給用戶。典型的摘要盤問如下:

Digest realm="iptel.org", qop="auth,auth-int",
nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", opaque="",algorithm=MD5

這里包括了一組參數,也要發(fā)送給用戶。用戶使用這些參數,來產生正確的摘要回答,并發(fā)送給服務器。摘要盤問中的各個參數,其意義如下:

realm(領域):領域參數是強制的,在所有的盤問中都必須有。它是目的是鑒別SIP消息中的機密。在SIP實際應用中,它通常設置為SIP代理服務器所負責的域名。

在要求用戶輸入用戶名和口令時,SIP用戶代理則會顯示這個參數的內容給用戶,以便用戶使用正確的用戶名和口令(這個服務器的)。

nonce(現時):這是由服務器規(guī)定的數據字符串,在服務器每次產生一個摘要盤問時,這個參數都是不一樣的(與前面所產生的不會雷同)。“現時”通常是由一些數據通過md5雜湊運算構造的。這樣的數據通常包括時間標識和服務器的機密短語。這確保每個“現時”都有一個有限的生命期(也就是過了一些時間后會失效,并且以后再也不會使用),而且是獨一無二的(即任何其它的服務器都不能產生一個相同的“現時”)。

客戶端使用這個“現時”來產生摘要響應(digestresponse),這樣服務器也會在一個摘要響應中收到“現時”的內容。服務器先要檢查了“現時”的有效性后,才會檢查摘要響應的其它部分。

因而,“現時”在本質上是一種標識符,確保收到的摘要機密,是從某個特定的摘要盤問產生的。還限制了摘要盤問的生命期,防止未來的重播攻擊。


opaque(不透明體):這是一個不透明的(不讓外人知道其意義)數據字符串,在盤問中發(fā)送給用戶。

在摘要響應中,用戶會將這個數據字符串發(fā)送回給服務器。這使得服務器可以是無狀態(tài)的。如果需要在盤問和響應之間維護一些狀態(tài),可以用這個參數傳送狀態(tài)給客戶端,此后當摘要響應回來時,再讀這個狀態(tài)。

algorithm(算法):這是用來計算雜湊的算法。當前只支持MD5算法。

qop(保護的質量)。這個參數規(guī)定服務器支持哪種保護方案。客戶端可以從列表中選擇一個。值

“auth”表示只進行身份查驗,“auth-int”表示進行查驗外,還有一些完整性保護。需要看更詳細的描述,請參閱RFC2617。

在收到了摘要盤問后,如果沒有預先配置,用戶代理軟件通常會提示用戶輸入用戶名和口令,產生一個摘要響應,并將這個響應發(fā)送給服務器。例如,摘要響應可能如下:

Digest username="jan", realm="iptel.org",
nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",uri="sip:iptel.org",
qop=auth, nc=00000001, cnonce="0a4f113b",
response="6629fae49393a05397450978507c4ef1", opaque=""

摘要響應類似于摘要盤問。相同的參數,則與摘要盤問有相同的意義。這里只描述新的參數:

uri(統一資源指示符):這個參數包含了客戶端想要訪問的URI。
qop:客戶端選擇的保護方式。
nc:“現時”計數器,這是一個16進制的數值,即客戶端發(fā)送出請求的數量(包括當前這個請求),這

些請求都使用了當前請求中這個“現時”值。例如,對一個給定的“現時”值,在響應的第一個請求中,客戶端將發(fā)送“nc=00000001”。這個指示值的目的,是讓服務器保持這個計數器的一個副本,以便檢測重復的請求。如果這個相同的值看到了兩次,則這個請求是重復的。

cnonce:這也是一個不透明的字符串值,由客戶端提供,并且客戶端和服務器都會使用,以避免用明文文本。這使得雙方都可以查驗對方的身份,并對消息的完整性提供一些保護。

response(響應):這是由用戶代理軟件計算出的一個字符串,以證明用戶知道口令。

當服務器接收到摘要響應,也要重新計算響應中各參數的值,并利用客戶端提供的參數值,和服務器上存儲的口令,進行比對。如果計算結果與收到的客戶響應值是相同的,則客戶已證明它知道口令,因而客戶的身份驗證通過。

總結

以上是生活随笔為你收集整理的Digest authentication的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。