HTTP認證方式

2021-09-07 09:59:56 字數 3771 閱讀 3842

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狀態,要求重新進行認證。

特記事項:

1. 避免將密碼作為明文在網路上傳遞。

2. 不需要在伺服器端作設定。

3. 伺服器端必須儲存密碼本身,否則無法進行身份驗證。

HTTP認證方式

http請求報頭 authorization http響應報頭 www authenticate http認證 基於 質詢 回應 challenge response 的認證模式。基本認證 basic authentication http1.0提出的認證方法 客戶端對於每乙個realm,通過提供使...

http認證方式

http請求報頭 authorization http響應報頭 www authenticate http認證基於 質詢 回應 challenge response 的認證模式。基本認證 basic authentication http1.0提出的認證方法 客戶端對於每乙個realm,通過提供使用...

HTTP認證方式

閱讀目錄 什麼是http基本認證 http基本認證的過程 http基本認證的優點 每次都要進行認證 http基本認證和https一起使用就很安全 http oauth認證 其他認證 客戶端的使用 桌面應用程式也通過http協議跟web伺服器互動,桌面應用程式一般不會使用cookie,而是把 使用者名...