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

浏览器兼容性

另见