了解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 摘要認證
摘要認證(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) |
- http digest 範例,Digest access authentication
來自伺服器的訊息
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 |