http-authentication

了解HTTP 身份驗證


更新記錄

item note
20160306 第一版

目錄


HTTP 身份驗證

  • HTTP 身份驗證有兩個主要的驗證方案:
    HTTP 基本認證(Basic Authentication)
    HTTP 摘要認證(Digest Access Authentication)

HTTP 基本認證

  • 基本認證(Basic Authentication)
    “HTTP/1.0”, includes the specification for a Basic Access Authentication scheme.
    This scheme is not considered to be a secure method of user authentication
    用Base64算法编码: base64encode(username+”:”+password)
    使用Decode from Base64 format,驗證就可以得到(Aladdin:open sesame)

    1
    QWxhZGRpbjpvcGVuIHNlc2FtZQ==
  • 用戶名稱和密碼都是用 base64 編碼後傳送到伺服器,除非你的伺服器使用 SSL,否則這不算十分安全

  • wiki範例, HTTP基本认证

    [http-basic]

HTTP 摘要認證

  • 摘要認證(Digest Access Authentication)
    a scheme based on cryptographic hashes, referred to as “Digest Access Authentication”
    This can be used to confirm the identity of a user before sending sensitive information, such as online banking transaction history.
    表示密碼(即hash)採用之前認證, 因此每次傳送時減少被取得解碼key(即hash)

  • RFC 2069
    HA1=MD5(username:realm:password)
    HA2=MD5(method:digestURI)
    response=MD5(HA1:nonce:HA2)

  • RFC 2069 was later replaced by RFC 2617 (HTTP Authentication: Basic and Digest Access Authentication)
    introduced a number of optional security enhancements to digest authentication; “quality of protection” (qop)
    nonce counter incremented by client,

algorithm directive’s value

algorithm note
MD5 HA1=MD5(username:realm:password)
MD5-sess HA1=MD5(MD5(username:realm:password):nonce:cnonce)

qop directive’s value

gop note
auth HA2=MD5(method:digestURI)
auth-int HA2=MD5(method:digestURI:MD5(entityBody))
auth or auth-int response=MD5(HA1:nonce:nonceCount:cnonce:qop:HA2)
unspecified response=MD5(HA1:nonce:HA2)

來自伺服器的訊息

item note
realm 一個將會用於使用者介面和散列函式的字串
qop 它的全寫是 quality of protection,可以是 auth 或 auth-int,它決定散列函式的計算方法
nonce 一個獨特的代碼,這將會用於散列函式,用戶端需要發回這個代碼
opaque 這個可以視為會話 id,改變它的值會使瀏覽器註銷現有用戶的驗證

來自客戶端的訊息

item note
username 提供的用戶名稱
realm 與伺服器提供的 realm 相同
nonce 與伺服器提供的 nonce 相同
uri 用戶請求的 uri
response 驗證散列值
opaque 與伺服器提供的 opaque 相同
qop 與伺服器提供的 qop 相同
nc 一個十六進位的計數,每次客戶端送來一個請求這個數值便會遞增
cnonce 一個由客戶端產生的 id

參考來源