http請求報頭: authorization
http響應報頭: www-authenticate
http認證
基於
質詢
/回應(challenge/response)的認證模式。
◆ 基本認證 basic authentication← http1.0提出的認證方法
客戶端對於每乙個realm,通過提供使用者名稱和密碼來進行認證的方式。
※ 包含密碼的明文傳遞
基本認證步驟:
1. 客戶端訪問乙個受http基本認證保護的資源。
2. 伺服器返回401狀態,要求客戶端提供使用者名稱和密碼進行認證。
401 unauthorized
www-authenticate: basic realm="wallyworld"
3. 客戶端將輸入的使用者名稱密碼用base64進行編碼後,採用非加密的明文方式傳送給伺服器。
authorization: basic *********x.
4. 如果認證成功,則返回相應的資源。如果認證失敗,則仍返回401狀態,要求重新進行認證。
特記事項:
1. http是無狀態的,同乙個客戶端對同乙個realm內資源的每乙個訪問會被要求進行認證。
2. 客戶端通常會快取使用者名稱和密碼,並和authentication realm一起儲存,所以,一般不需要你重新輸入使用者名稱和密碼。
3. 以非加密的明文方式傳輸,雖然轉換成了不易被人直接識別的字串,但是無法防止使用者名稱密碼被惡意盜用。
◆ 摘要認證 digest authentication← http1.1提出的基本認證的替代方法
伺服器端以nonce進行質詢,客戶端以使用者名稱,密碼,nonce,http方法,請求的uri等資訊為基礎產生的response資訊進行認證的方式。
※ 不包含密碼的明文傳遞
摘要
認證步驟:
1. 客戶端訪問乙個受http摘要認證保護的資源。
2. 伺服器返回401狀態以及nonce等資訊,要求客戶端進行認證。
3. 客戶端將以使用者名稱,密碼,nonce值,http方法, 和被請求的uri為校驗值基礎而加密(預設為md5演算法)的摘要資訊返回給伺服器。
認證必須的五個情報:
・ realm : 響應中包含資訊
・ nonce : 響應中包含資訊
・ username : 使用者名稱
・ digest-uri : 請求的uri
・ response : 以上面四個資訊加上密碼資訊,使用md5演算法得出的字串。
authorization:digest
username="mufasa",← 客戶端已知資訊
realm="[email protected]", ← 伺服器端質詢響應資訊
nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", ← 伺服器端質詢響應資訊
uri="/dir/index.html", ← 客戶端已知資訊
qop=auth, ← 伺服器端質詢響應資訊
nc=00000001, ← 客戶端計算出的資訊
cnonce="0a4f113b", ← 客戶端計算出的客戶端nonce
response="6629fae49393a05397450978507c4ef1", ← 最終的摘要資訊 ha3
opaque="5ccc069c403ebaf9f0171e9517f40e41" ← 伺服器端質詢響應資訊
4. 如果認證成功,則返回相應的資源。如果認證失敗,則仍返回401狀態,要求重新進行認證。
特記事項:
1. 避免將密碼作為明文在網路上傳遞,相對提高了http認證的安全性。
2. 當使用者為某個realm首次設定密碼時,伺服器儲存的是以使用者名稱,realm,密碼為基礎計算出的雜湊值(ha1),而非密碼本身。
3. 如果qop=auth-int,在計算ha2時,除了包括http方法,uri路徑外,還包括請求實體主體,從而防止put和post請求表示被人篡改。
4. 但是因為nonce本身可以被用來進行摘要認證,所以也無法確保認證後傳遞過來的資料的安全性。
※ nonce:隨機字串,每次返回401響應的時候都會返回乙個不同的nonce。
※ nounce:隨機字串,每個請求都得到乙個不同的nounce。
※ md5(message digest algorithm 5,資訊摘要演算法)
① 使用者名稱:realm:密碼 ⇒ ha1
② http方法:uri ⇒ ha2
③ ha1:nonce:nc:cnonce:qop:ha2 ⇒ ha3
◆ wsse(ws-security)認證← 擴充套件http認證
wsse usernametoken
伺服器端以nonce進行質詢,客戶端以使用者名稱,密碼,nonce,http方法,請求的uri等資訊為基礎產生的response資訊進行認證的方式。
※ 不包含密碼的明文傳遞
wsse
認證步驟:
1. 客戶端訪問乙個受wsse認證保護的資源。
2. 伺服器返回401狀態,要求客戶端進行認證。
profile="usernametoken" ← 伺服器期望你用usernametoken規則生成回應
※ usernametoken規則:客戶端生成乙個nonce,然後根據該nonce,密碼和當前日時來算出雜湊值。
3. 客戶端將生成乙個nonce值,並以該nonce值,密碼,當前日時為基礎,算出雜湊值返回給伺服器。
authorization:wsseprofile="usernametoken"
x-wsse:usernametoken
username="mufasa",
passworddigest="z2y......",
nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",
created="2010-01-01t09:00:00z"
4. 如果認證成功,則返回相應的資源。如果認證失敗,則仍返回401狀態,要求重新進行認證。
HTTP認證機制
http請求報頭 authorization http響應報頭 www authenticate http認證 基於 質詢 回應 challenge response 的認證模式。基本認證 basic authentication http1.0提出的認證方法 客戶端對於每乙個realm,通過提供使...
HTTP認證機制(翻譯)
發現一篇介紹http認證的好文章,就嘗試翻譯了一下,記錄在下面。翻譯的很挫,哈哈哈 原文 http協議 rfc 2616 定義了一種簡單的訪問認證模式。假設有某一組網頁,它們通常作為乙個被保護的領域被引用,或者僅僅對能夠對伺服器驗證提供憑證的使用者開放訪問。如果乙個http客戶端 例如乙個web瀏覽...
PHP的HTTP認證機制
php的http認證機制因此該功能不適用於 cgi 版本。在 apache 模組的 php 指令碼中,可以用 header 函式來向客戶端瀏覽器傳送authentication required資訊,使其彈出乙個使用者名稱 密碼輸入視窗。當使用者輸入使用者名稱和密碼後,包含有 url 的 php 指...