HTTP 身份認證
阿新 • • 發佈:2022-05-25
身份認證資訊
密碼 只有本人知道的字串資訊
動態令牌 僅限本人持有的裝置的一次性密碼
數字證書 本人持有的終端資訊
生物認證 指紋,虹膜
IC卡
- BASIC認證 基本認證
- DIGEST認證 摘要認證
- SSL客戶端認證
- FormBase認證 基於表單認證
BASIC認證 傳送base64編碼過的明文
HTTP1.0 定義的認證
伺服器和客戶端定義的統一認證
過程:
- 伺服器收到請求,向客戶端返回狀態碼401(Authorization Required),告知客戶端需要進行驗證
- 客戶端通過basic認證,需要通過使用者名稱和密碼以Base64編碼(瀏覽器實現)傳送給伺服器(Authorization:Basic 編碼後字串)
- 如果成功返回200,失敗繼續返回401
由於明文資訊經過base64解碼後就是資訊文字,安全性不高
DIGEST認證 通過指定演算法如md5+質詢碼加密
HTTP 1.1
為彌補BASIC認證存在的弱點,從HTTP1.1起就有了digest認證
digest認證同樣使用質詢/響應的方式,但不會像basic認證那樣直接傳送明文密碼
提供了高於basic認證的安全機制
在HTTP1.1提供的digest認證中,伺服器收到請求以後,返回的是digest認證所需要的頭部欄位
- 狀態碼401和臨時質詢碼nonce
- www-Authenticate:Digest realm ... algorithm=MD5,qop="auth"...
- 客戶端傳送摘要以及由質詢碼計算得來的響應碼給伺服器(比如經過MD5演算法計算得來的字串)
防止密碼竊聽的機制,但是沒有防止使用者偽裝機制,使用上不便捷靈活
SSL客戶端認證
SSL客戶端認證是皆有HTTPS的客戶端證書完成認證的方式。
憑藉客戶端證書認證,伺服器可確認訪問是否來自於已登入的客戶端
證書會通過報文的方式傳送給服務端
客戶端把證書以client-satificate的方式傳送給伺服器
伺服器驗證客戶端證書,驗證通過後,領取公開密碼
具有一定的使用成本,一般是金融相關行業使用
高度安全等級,因為匯入,費用問題,導致難以維持,一般是金融機構使用
FormBase 基於表單的認證(cookie和session機制,用得更多,由web應用程式定義)
基於表單的認方法並不是在HTTP協議中定義的
使用由Web應用程式各自實現基於表單的認證方式
通過cookie和session的方式來保持使用者的狀態
cookie和session還是存在安全問題
基於程式碼的方式保證有效性和安全性