Authorization header
Baseline 广泛可用 *
HTTP Authorization 请求头可用于提供凭据,以便用户代理向服务器进行身份验证,从而访问受保护的资源。
Authorization 头通常(但并非总是)在用户代理首次尝试在没有凭据的情况下请求受保护资源之后发送。服务器会响应 401 Unauthorized 消息,该消息至少包含一个 WWW-Authenticate 头。此头指示可用于访问资源的身份验证方案,以及客户端使用它们所需的任何附加信息。用户代理应从提供的方案中选择其支持的最安全的身份验证方案,提示用户输入凭据,然后使用 Authorization 头中编码的凭据重新请求资源。
此头将从跨域重定向中删除。
注意:此头是通用 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>-
定义凭据编码方式的身份验证方案。一些更常见的类型(不区分大小写)包括:
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-
随机数计数。客户端发送当前
cnonce值的请求的十六进制计数(包括当前请求)。服务器可以使用重复的nc值来识别重放请求。 userhash可选-
如果用户名已被哈希,则为
"true"。默认为"false"。
示例
基本认证
对于 Basic 身份验证,凭据的构造方法是:首先将用户名和密码用冒号组合起来(例如,aladdin:opensesame),然后将结果字符串编码为 base64(例如,YWxhZGRpbjpvcGVuc2VzYW1l)。
Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l
另请参阅 HTTP 身份验证,了解如何配置 Apache 或 Nginx 服务器以使用 HTTP 基本身份验证保护您的网站密码的示例。
规范
| 规范 |
|---|
| HTTP 语义 # field.authorization |
浏览器兼容性
加载中…