基本認證與摘要認證


本文總結自: https://www.cnblogs.com/huey/p/5490759.html

瀏覽器與服務端之間可以通過cookie進行身份驗證,那么,桌面應用程序與服務端呢?

BASIC認證(基本認證)

當客戶端向服務端進行數據請求時,如果客戶端尚未被認證,則http服務器將使用基本認證對客戶端的用戶名密碼進行認證,以確認用戶是否合法,一般方法為 將 用戶名:密碼 用base64加密后放入請求頭中的Authorization,再發送給服務器,此方式為基本認證。

基本認證也能用於瀏覽器端,但相對較少。

基本認證過程:

1.http請求頭中添加Authorization: Basic + base64加密字段

2.驗證通過,返回內容;驗證不通過,返回頭中的WWW-Authenticate中會有相關說明

備注: 基本認證使用base64編碼,安全性低容易解碼,因此一般使用HTTPS傳輸,相對安全性會高一些。

 

Digest認證(摘要認證)

http1.1中提出的用以替代基本認證的方案

1.密碼不再明文傳遞,而是用摘要來代替,一般使用MD5加密(基本不可逆,除非太簡單)生成,服務端只存儲摘要與客戶端發來的摘要對比。

2.防止重放攻擊,服務端向客戶端發送隨機數nonce,客戶端生成摘要時得把nonce放在密碼上,服務端知道用戶的原始密碼及nonce,接收到請求后再臨時生成摘要與之對比

3. 通過客戶端產生隨機數cnonce的方式,支持客戶端對服務器的認證。

4.通過對內容也加入摘要計算的方式,可有選擇的防止對報文內容的篡改。

摘要認證過程:

1.服務端接受客戶端請求,生成隨機數nonce,放在響應頭WWW-Authenticate,狀態碼為401 Unauthorized

2.客戶端發現是401,彈出讓用戶輸入用戶名密碼的認證窗口,用戶輸入后生成摘要,放入請求頭中的Authorization,

如果此時客戶端也要對服務端進行認證,可生成並發送客戶端隨機數cnonce

3.服務端基於用戶原始密碼及nonce重新生成摘要與客戶端發來的摘要對比,如果客戶端反過來用客戶端隨機數對服務器進行質詢,就會創建客戶端摘要。

服務器可以預先將下一個隨機數計算出來,提前將其傳遞給客戶端,這樣下一次客戶端就可以預先發送正確的摘要了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM