授權
HTTP Authorization 請求標頭可用於提供憑據,以對使用者代理進行伺服器身份驗證,從而允許訪問受保護的資源。
Authorization 標頭通常(但不總是)在使用者代理首次嘗試在沒有憑據的情況下請求受保護的資源後傳送。伺服器將響應一個401 Unauthorized 訊息,其中至少包含一個 WWW-Authenticate 標頭。此標頭指示可以使用哪些身份驗證方案來訪問資源(以及客戶端使用這些方案所需的任何其他資訊)。使用者代理應該從提供的方案中選擇其支援的最安全的方案,提示使用者輸入其憑據,然後重新請求資源(包括在 Authorization 標頭中編碼的憑據)。
此標頭將從跨域重定向中剝離。
注意:此標頭是 通用 HTTP 身份驗證框架 的一部分。它可以與許多 身份驗證方案 一起使用。
語法
Authorization: <auth-scheme> <authorization-parameters>
基本身份驗證
Authorization: Basic <credentials>
摘要身份驗證
Authorization: Digest username=<username>,
realm="<realm>",
uri="<url>",
algorithm=<algorithm>,
nonce="<nonce>",
nc=<nc>,
cnonce="<cnonce>",
qop=<qop>,
response="<response>",
opaque="<opaque>"
指令
<auth-scheme>-
定義如何對憑據進行編碼的 身份驗證方案。一些更常見的型別是(不區分大小寫):
Basic、Digest、Negotiate和AWS4-HMAC-SHA256。注意:有關更多資訊/選項,請參閱 HTTP 身份驗證 > 身份驗證方案
除了 <auth-scheme> 之外,其餘指令特定於每個 身份驗證方案。通常,您需要檢查相關規範才能瞭解這些指令(下面列出了部分方案的金鑰)。
基本
- <credentials>
-
根據指定的方案編碼的憑據。
注意:有關編碼演算法的資訊,請參閱以下示例:在
WWW-Authenticate中、在 HTTP 身份驗證 中以及在相關規範中。
摘要
- <response>
-
十六進位制數字字串,證明使用者知道密碼。該演算法對使用者名稱和密碼、領域、cnonce、qop、nc 等進行編碼。規範中對此進行了詳細說明。
username-
包含指定
realm中使用者名稱的帶引號字串,可以使用純文字或十六進位制表示的雜湊碼。如果名稱包含欄位中不允許的字元,則可以使用username*代替(而不是“以及”)。 username*-
使用 RFC5987 中定義的擴充套件表示法格式化的使用者名稱。僅當名稱無法在
username中編碼且userhash設定為"false"時才應使用此表示法。 uri-
有效請求 URI。有關更多資訊,請參閱規範。
realm-
請求的使用者名稱/密碼的領域(再次,應該與請求的資源的相應
WWW-Authenticate響應中的值匹配)。 opaque-
請求的資源的相應
WWW-Authenticate響應中的值。 algorithm-
用於計算摘要的演算法。必須是從請求的資源的
WWW-Authenticate響應中指定的受支援演算法之一。 qop-
指示應用於訊息的保護質量的令牌。必須與請求的資源的
WWW-Authenticate響應中指定的一組值中的一個值匹配。"auth":身份驗證"auth-int":具有完整性保護的身份驗證
cnonce-
客戶端提供的帶引號的 ASCII 字串值。客戶端和伺服器都使用它來提供相互身份驗證,提供一些訊息完整性保護,並避免“已知明文攻擊”。有關更多資訊,請參閱規範。
nc-
Nonce 計數。客戶端傳送當前
cnonce值(包括當前請求)的請求的十六進位制計數。伺服器可以使用重複的nc值來識別重放請求。 userhashOptional-
如果使用者名稱已雜湊,則為
"true"。預設情況下為"false"。
示例
基本身份驗證
規範
| 規範 |
|---|
| HTTP 語義 # field.authorization |
瀏覽器相容性
BCD 表僅在瀏覽器中載入