場景
???????? 在安迅士攝像機(jī)網(wǎng)頁上,配置系統(tǒng)選項(xiàng),HTTP/RTSP Password Settings 中, 選擇Encrypted only。獲取設(shè)備的云臺狀態(tài)信息,使用的是摘要認(rèn)證
創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),西工企業(yè)網(wǎng)站建設(shè),西工品牌網(wǎng)站建設(shè),網(wǎng)站定制,西工網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,西工網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
例子
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);//設(shè)置回調(diào)函數(shù)??????????????????
//curl_easy_setopt(pCurlHandle, CURLOPT_HEADER, 1);//保存HTTP頭部信息到strResponseData
?curl_easy_setopt(pCurlHandle, CURLOPT_WRITEDATA, &strResponseData);//設(shè)置回調(diào)函數(shù)的參數(shù),獲取反饋信息
?curl_easy_setopt(pCurlHandle, CURLOPT_TIMEOUT, 15);//接收數(shù)據(jù)時(shí)超時(shí)設(shè)置,如果10秒內(nèi)數(shù)據(jù)未接收完,直接退出
?curl_easy_setopt(pCurlHandle, CURLOPT_MAXREDIRS, 1);//查找次數(shù),防止查找太深
?curl_easy_setopt(pCurlHandle, CURLOPT_CONNECTTIMEOUT, 5);//連接超時(shí),這個(gè)數(shù)值如果設(shè)置太短可能導(dǎo)致數(shù)據(jù)請求不到就斷開了
?CURLcode nRet = curl_easy_perform(pCurlHandle);
?if (0 == nRet)
?{
? std::cout << strResponseData << std::endl;
?}
?curl_easy_cleanup(pCurlHandle);
}
基礎(chǔ)知識
◆ 摘要認(rèn)證 digest authentication ← HTTP1.1提出的基本認(rèn)證的替代方法
??? 服務(wù)器端以nonce進(jìn)行質(zhì)詢,客戶端以用戶名,密碼,nonce,HTTP方法,請求的URI等信息為基礎(chǔ)產(chǎn)生的response信息進(jìn)行認(rèn)證的方式。
??? ※ 不包含密碼的明文傳遞
???
??? 摘要認(rèn)證步驟:
???? 1. 客戶端訪問一個(gè)受http摘要認(rèn)證保護(hù)的資源。
???? 2. 服務(wù)器返回401狀態(tài)以及nonce等信息,要求客戶端進(jìn)行認(rèn)證。
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Digest
realm="testrealm@host.com",
qop="auth,auth-int",
nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",
opaque="5ccc069c403ebaf9f0171e9517f40e41"
???? 3. 客戶端將以用戶名,密碼,nonce值,HTTP方法, 和被請求的URI為校驗(yàn)值基礎(chǔ)而加密(默認(rèn)為MD5算法)的摘要信息返回給服務(wù)器。
?????????? 認(rèn)證必須的五個(gè)情報(bào):
? realm : 響應(yīng)中包含信息
? nonce : 響應(yīng)中包含信息
? username : 用戶名
? digest-uri : 請求的URI
? response : 以上面四個(gè)信息加上密碼信息,使用MD5算法得出的字符串。
Authorization: Digest
username="Mufasa", ← 客戶端已知信息
realm="testrealm@host.com", ← 服務(wù)器端質(zhì)詢響應(yīng)信息
nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", ← 服務(wù)器端質(zhì)詢響應(yīng)信息
uri="/dir/index.html", ← 客戶端已知信息
qop=auth, ← 服務(wù)器端質(zhì)詢響應(yīng)信息
nc=00000001, ← 客戶端計(jì)算出的信息
cnonce="0a4f113b", ← 客戶端計(jì)算出的客戶端nonce
response="6629fae49393a05397450978507c4ef1", ← 最終的摘要信息 ha3
opaque="5ccc069c403ebaf9f0171e9517f40e41" ← 服務(wù)器端質(zhì)詢響應(yīng)信息
???? 4. 如果認(rèn)證成功,則返回相應(yīng)的資源。如果認(rèn)證失敗,則仍返回401狀態(tài),要求重新進(jìn)行認(rèn)證。
??? 特記事項(xiàng):
???? 1. 避免將密碼作為明文在網(wǎng)絡(luò)上傳遞,相對提高了HTTP認(rèn)證的安全性。
???? 2. 當(dāng)用戶為某個(gè)realm首次設(shè)置密碼時(shí),服務(wù)器保存的是以用戶名,realm,密碼為基礎(chǔ)計(jì)算出的哈希值(ha1),而非密碼本身。
???? 3. 如果qop=auth-int,在計(jì)算ha2時(shí),除了包括HTTP方法,URI路徑外,還包括請求實(shí)體主體,從而防止PUT和POST請求表示被人篡改。
???? 4. 但是因?yàn)閚once本身可以被用來進(jìn)行摘要認(rèn)證,所以也無法確保認(rèn)證后傳遞過來的數(shù)據(jù)的安全性。
?? ※ nonce:隨機(jī)字符串,每次返回401響應(yīng)的時(shí)候都會返回一個(gè)不同的nonce。
?? ※ nounce:隨機(jī)字符串,每個(gè)請求都得到一個(gè)不同的nounce。
????? ※ MD5(Message Digest algorithm 5,信息摘要算法)
???????? ① 用戶名:realm:密碼 ? ha1
???????? ② HTTP方法:URI ? ha2
???????? ③ ha1:nonce:nc:cnonce:qop:ha2 ? ha3
?WSSE(WS-Security)認(rèn)證 ← 擴(kuò)展HTTP認(rèn)證
?? WSSE UsernameToken
??? 服務(wù)器端以nonce進(jìn)行質(zhì)詢,客戶端以用戶名,密碼,nonce,HTTP方法,請求的URI等信息為基礎(chǔ)產(chǎn)生的response信息進(jìn)行認(rèn)證的方式。
??? ※ 不包含密碼的明文傳遞
???
??? WSSE認(rèn)證步驟:
???? 1. 客戶端訪問一個(gè)受WSSE認(rèn)證保護(hù)的資源。
???? 2. 服務(wù)器返回401狀態(tài),要求客戶端進(jìn)行認(rèn)證。
HTTP/1.1 401 Unauthorized
WWW-Authenticate: WSSE
realm="testrealm@host.com",
profile="UsernameToken" ← 服務(wù)器期望你用UsernameToken規(guī)則生成回應(yīng)
※ UsernameToken規(guī)則:客戶端生成一個(gè)nonce,然后根據(jù)該nonce,密碼和當(dāng)前日時(shí)來算出哈希值。
???? 3. 客戶端將生成一個(gè)nonce值,并以該nonce值,密碼,當(dāng)前日時(shí)為基礎(chǔ),算出哈希值返回給服務(wù)器。
Authorization: WSSE profile="UsernameToken"
X-WSSE:UsernameToken
username="Mufasa",
PasswordDigest="Z2Y......",
Nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",
Created="2010-01-01T09:00:00Z"
???? 4. 如果認(rèn)證成功,則返回相應(yīng)的資源。如果認(rèn)證失敗,則仍返回401狀態(tài),要求重新進(jìn)行認(rèn)證。
?特記事項(xiàng):
???? 1. 避免將密碼作為明文在網(wǎng)絡(luò)上傳遞。
???? 2. 不需要在服務(wù)器端作設(shè)置。
???? 3. 服務(wù)器端必須保存密碼本身,否則無法進(jìn)行身份驗(yàn)證。
標(biāo)題名稱:libcurl第五課DigestAuthentication摘要驗(yàn)證使用
標(biāo)題網(wǎng)址:http://jinyejixie.com/article4/jpdjoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、域名注冊、企業(yè)建站、網(wǎng)站維護(hù)、全網(wǎng)營銷推廣、網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)