Authorization header

Baseline 廣泛可用 *

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

* 此特性的某些部分可能存在不同級別的支援。

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

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

此頭將從跨域重定向中刪除。

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

頭型別 請求頭
禁止請求頭

語法

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

// Basic authentication
Authorization: Basic <credentials>

// Digest authentication
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

隨機數計數。客戶端傳送當前 cnonce 值的請求的十六進位制計數(包括當前請求)。伺服器可以使用重複的 nc 值來識別重放請求。

userhash 可選

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

示例

基本認證

對於 Basic 身份驗證,憑據的構造方法是:首先將使用者名稱和密碼用冒號組合起來(例如,aladdin:opensesame),然後將結果字串編碼為 base64(例如,YWxhZGRpbjpvcGVuc2VzYW1l)。

http
Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l

警告: Base64 編碼可以很容易地反轉以獲取原始名稱和密碼,因此 Basic 身份驗證不提供加密安全性。HTTPS 在使用身份驗證時始終推薦,但在使用 Basic 身份驗證時更是如此。

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

規範

規範
HTTP 語義
# field.authorization

瀏覽器相容性

另見