中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

libcurl第五課 Digest Authentication摘要驗證使用

發布時間:2020-06-29 22:58:57 來源:網絡 閱讀:908 作者:fengyuzaitu 欄目:軟件技術

場景
???????? 在安迅士攝像機網頁上,配置系統選項,HTTP/RTSP Password Settings 中, 選擇Encrypted only。獲取設備的云臺狀態信息,使用的是摘要認證

例子
void CAnXunShiConn::TestlibCurlHTTPDegistAuth()
{
?CURL *pCurlHandle = curl_easy_init();
?curl_easy_setopt(pCurlHandle, CURLOPT_CUSTOMREQUEST, "GET");
?curl_easy_setopt(pCurlHandle, CURLOPT_URL, "http://192.168.18.84/axis-cgi/com/ptz.cgi?camera=1&query=position");
?curl_easy_setopt(pCurlHandle, CURLOPT_USERPWD, "root:admin12345");
?curl_easy_setopt(pCurlHandle, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
?curl_easy_setopt(pCurlHandle, CURLOPT_WRITEFUNCTION, WriteResponseBody);//設置回調函數??????????????????
//curl_easy_setopt(pCurlHandle, CURLOPT_HEADER, 1);//保存HTTP頭部信息到strResponseData
?curl_easy_setopt(pCurlHandle, CURLOPT_WRITEDATA, &strResponseData);//設置回調函數的參數,獲取反饋信息
?curl_easy_setopt(pCurlHandle, CURLOPT_TIMEOUT, 15);//接收數據時超時設置,如果10秒內數據未接收完,直接退出
?curl_easy_setopt(pCurlHandle, CURLOPT_MAXREDIRS, 1);//查找次數,防止查找太深
?curl_easy_setopt(pCurlHandle, CURLOPT_CONNECTTIMEOUT, 5);//連接超時,這個數值如果設置太短可能導致數據請求不到就斷開了
?CURLcode nRet = curl_easy_perform(pCurlHandle);
?if (0 == nRet)
?{
? std::cout << strResponseData << std::endl;
?}
?curl_easy_cleanup(pCurlHandle);
}

基礎知識
◆ 摘要認證 digest authentication   ← HTTP1.1提出的基本認證的替代方法
??? 服務器端以nonce進行質詢,客戶端以用戶名,密碼,nonce,HTTP方法,請求的URI等信息為基礎產生的response信息進行認證的方式。
??? ※ 不包含密碼的明文傳遞
???
??? 摘要認證步驟:
???? 1. 客戶端訪問一個受http摘要認證保護的資源。
???? 2. 服務器返回401狀態以及nonce等信息,要求客戶端進行認證。
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Digest
realm="testrealm@host.com",
qop="auth,auth-int",
nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",
opaque="5ccc069c403ebaf9f0171e9517f40e41"
???? 3. 客戶端將以用戶名,密碼,nonce值,HTTP方法, 和被請求的URI為校驗值基礎而加密(默認為MD5算法)的摘要信息返回給服務器。
?????????? 認證必須的五個情報:
     ? realm : 響應中包含信息
     ? nonce : 響應中包含信息
     ? username : 用戶名
     ? digest-uri : 請求的URI
     ? response : 以上面四個信息加上密碼信息,使用MD5算法得出的字符串。
Authorization: Digest
username="Mufasa",  ← 客戶端已知信息
realm="testrealm@host.com",   ← 服務器端質詢響應信息
nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",  ← 服務器端質詢響應信息
uri="/dir/index.html", ← 客戶端已知信息
qop=auth,   ← 服務器端質詢響應信息
nc=00000001, ← 客戶端計算出的信息
cnonce="0a4f113b", ← 客戶端計算出的客戶端nonce
response="6629fae49393a05397450978507c4ef1", ← 最終的摘要信息 ha3
opaque="5ccc069c403ebaf9f0171e9517f40e41"  ← 服務器端質詢響應信息
???? 4. 如果認證成功,則返回相應的資源。如果認證失敗,則仍返回401狀態,要求重新進行認證。

??? 特記事項:
???? 1. 避免將密碼作為明文在網絡上傳遞,相對提高了HTTP認證的安全性。
???? 2. 當用戶為某個realm首次設置密碼時,服務器保存的是以用戶名,realm,密碼為基礎計算出的哈希值(ha1),而非密碼本身。
???? 3. 如果qop=auth-int,在計算ha2時,除了包括HTTP方法,URI路徑外,還包括請求實體主體,從而防止PUT和POST請求表示被人篡改。
???? 4. 但是因為nonce本身可以被用來進行摘要認證,所以也無法確保認證后傳遞過來的數據的安全性。

?? ※ nonce:隨機字符串,每次返回401響應的時候都會返回一個不同的nonce。
?? ※ nounce:隨機字符串,每個請求都得到一個不同的nounce。
????? ※ MD5(Message Digest algorithm 5,信息摘要算法)
???????? ① 用戶名:realm:密碼 ? ha1
???????? ② HTTP方法:URI ? ha2
???????? ③ ha1:nonce:nc:cnonce:qop:ha2 ? ha3
?WSSE(WS-Security)認證  ← 擴展HTTP認證
?? WSSE UsernameToken
??? 服務器端以nonce進行質詢,客戶端以用戶名,密碼,nonce,HTTP方法,請求的URI等信息為基礎產生的response信息進行認證的方式。
??? ※ 不包含密碼的明文傳遞
???
??? WSSE認證步驟:
???? 1. 客戶端訪問一個受WSSE認證保護的資源。
???? 2. 服務器返回401狀態,要求客戶端進行認證。
HTTP/1.1 401 Unauthorized
WWW-Authenticate: WSSE
realm="testrealm@host.com",
profile="UsernameToken" ← 服務器期望你用UsernameToken規則生成回應
※ UsernameToken規則:客戶端生成一個nonce,然后根據該nonce,密碼和當前日時來算出哈希值。
???? 3. 客戶端將生成一個nonce值,并以該nonce值,密碼,當前日時為基礎,算出哈希值返回給服務器。
Authorization: WSSE profile="UsernameToken"
X-WSSE:UsernameToken
username="Mufasa",
PasswordDigest="Z2Y......",
Nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",
Created="2010-01-01T09:00:00Z"
???? 4. 如果認證成功,則返回相應的資源。如果認證失敗,則仍返回401狀態,要求重新進行認證。
?特記事項:
???? 1. 避免將密碼作為明文在網絡上傳遞。
???? 2. 不需要在服務器端作設置。
???? 3. 服務器端必須保存密碼本身,否則無法進行身份驗證。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

松桃| 酉阳| 隆昌县| 依安县| 南安市| 道真| 梁山县| 天门市| 三明市| 德化县| 孙吴县| 莱西市| 崇文区| 慈溪市| 彭州市| 舞钢市| 祁阳县| 米易县| 桐梓县| 凤庆县| 息烽县| 平果县| 若尔盖县| 博乐市| 临武县| 轮台县| 中西区| 贵南县| 东至县| 安图县| 海原县| 潼关县| 文山县| 德保县| 微博| 济源市| 商洛市| 连云港市| 庄浪县| 上饶市| 崇州市|