1. 程式人生 > 其它 >HTTP 身份認證

HTTP 身份認證

身份認證資訊
密碼 只有本人知道的字串資訊
動態令牌 僅限本人持有的裝置的一次性密碼
數字證書 本人持有的終端資訊
生物認證 指紋,虹膜
IC卡

  • BASIC認證 基本認證
  • DIGEST認證 摘要認證
  • SSL客戶端認證
  • FormBase認證 基於表單認證

BASIC認證 傳送base64編碼過的明文

HTTP1.0 定義的認證
伺服器和客戶端定義的統一認證

過程:

  1. 伺服器收到請求,向客戶端返回狀態碼401(Authorization Required),告知客戶端需要進行驗證
  2. 客戶端通過basic認證,需要通過使用者名稱和密碼以Base64編碼(瀏覽器實現)傳送給伺服器(Authorization:Basic 編碼後字串)
  3. 如果成功返回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還是存在安全問題
基於程式碼的方式保證有效性和安全性