授權

HTTP Authorization 請求標頭可用於提供憑據,以對使用者代理進行伺服器身份驗證,從而允許訪問受保護的資源。

Authorization 標頭通常(但不總是)在使用者代理首次嘗試在沒有憑據的情況下請求受保護的資源後傳送。伺服器將響應一個401 Unauthorized 訊息,其中至少包含一個 WWW-Authenticate 標頭。此標頭指示可以使用哪些身份驗證方案來訪問資源(以及客戶端使用這些方案所需的任何其他資訊)。使用者代理應該從提供的方案中選擇其支援的最安全的方案,提示使用者輸入其憑據,然後重新請求資源(包括在 Authorization 標頭中編碼的憑據)。

此標頭將從跨域重定向中剝離。

注意:此標頭是 通用 HTTP 身份驗證框架 的一部分。它可以與許多 身份驗證方案 一起使用。

標頭型別 請求標頭
禁止的標頭名稱

語法

http
Authorization: <auth-scheme> <authorization-parameters>

基本身份驗證

http
Authorization: Basic <credentials>

摘要身份驗證

http
Authorization: Digest username=<username>,
    realm="<realm>",
    uri="<url>",
    algorithm=<algorithm>,
    nonce="<nonce>",
    nc=<nc>,
    cnonce="<cnonce>",
    qop=<qop>,
    response="<response>",
    opaque="<opaque>"

指令

<auth-scheme>

定義如何對憑據進行編碼的 身份驗證方案。一些更常見的型別是(不區分大小寫):BasicDigestNegotiateAWS4-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 值來識別重放請求。

userhash Optional

如果使用者名稱已雜湊,則為 "true"。預設情況下為 "false"

示例

基本身份驗證

對於 "Basic" 身份驗證,憑據的構建方式是:首先使用冒號 (aladdin:opensesame) 將使用者名稱和密碼組合在一起,然後使用 base64 (YWxhZGRpbjpvcGVuc2VzYW1l) 對生成的字串進行編碼。

http
Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l

警告:Base64 編碼很容易被反轉以獲取原始名稱和密碼,因此基本身份驗證完全不安全。使用身份驗證時始終推薦使用 HTTPS,但使用 Basic 身份驗證時尤其如此。

另請參閱 HTTP 身份驗證,以瞭解如何配置 Apache 或 Nginx 伺服器以使用 HTTP 基本身份驗證對您的站點進行密碼保護。

規範

規範
HTTP 語義
# field.authorization

瀏覽器相容性

BCD 表僅在瀏覽器中載入

另請參閱