5. IANA 考虑 (IANA Considerations)
5.1 认证方案注册表 (Authentication Scheme Registry)
"Hypertext Transfer Protocol (HTTP) Authentication Scheme Registry" 定义了质询与凭证中认证方案的命名空间. 它已创建并维护于 http://www.iana.org/assignments/http-authschemes.
5.1.1 注册规程 (Procedure)
注册必须 (MUST) 包含以下字段:
-
认证方案名称 (Authentication Scheme Name)
-
指向规范文本的指针 (Pointer to specification text)
-
备注 (Notes, 可选)
加入该命名空间的值需要 IETF Review (见 [RFC5226] 第 4.1 节).
5.1.2 新认证方案的考量 (Considerations for New Authentication Schemes)
HTTP 认证框架的某些方面对新认证方案的工作方式施加了约束:
-
HTTP 认证被假定为无状态: 认证一个请求所需的全部信息必须在 (MUST) 请求中提供, 而不是依赖服务器记住先前的请求. 基于底层连接或绑定到底层连接的认证不在本规范的范围之内, 并且除非采取措施确保该连接不会被已认证用户之外的任何一方使用, 否则它存在固有缺陷 (见 [RFC7230] 第 2.3 节).
-
认证参数 "realm" 保留用于定义第 2.2 节所述的保护空间. 新方案禁止 (MUST NOT) 以与该定义不兼容的方式使用它.
-
引入 "token68" 记法是为了与既有认证方案兼容, 它在每个质询或凭证中只能使用一次. 因此, 新方案应当改用 auth-param 语法, 否则未来的扩展将不可能实现.
-
质询与凭证的解析由本规范定义, 不能被新的认证方案修改. 使用 auth-param 语法时, 所有参数都应当同时支持 token 与 quoted-string 语法, 并且语法约束应当定义在解析 (即 quoted-string 处理) 之后的字段值上. 这很有必要, 这样接收方才能使用一个适用于所有认证方案的通用解析器.
注意: "realm" 参数的值语法被限定为 quoted-string 是一个糟糕的设计选择, 新参数不应重蹈覆辙.
-
新方案的定义应当规定对未知扩展参数的处理. 一般而言, "必须忽略" (must-ignore) 规则优于 "必须理解" (must-understand) 规则, 否则将难以在存在旧接收方的情况下引入新参数. 此外, 最好描述定义新参数的策略 (例如 "更新规范" 或 "使用该注册表").
-
认证方案需要说明它们是否可用于源服务器认证 (即使用 WWW-Authenticate), 和/或代理认证 (即使用 Proxy-Authenticate).
-
Authorization 头部字段中携带的凭证特定于用户代理, 因此在它们出现的请求范围内, 对 HTTP 缓存的影响与 "private" Cache-Control 响应指令 ([RFC7234] 第 5.2.2.6 节) 相同.
因此, 选择不在 Authorization 头部字段中携带凭证 (例如使用新定义的头部字段) 的新认证方案, 需要显式禁止缓存, 方法是强制使用 Cache-Control 请求指令 (例如 "no-store", [RFC7234] 第 5.2.1.5 节) 或响应指令 (例如 "private").
5.2 状态码注册 (Status Code Registration)
位于 http://www.iana.org/assignments/http-status-codes 的 "Hypertext Transfer Protocol (HTTP) Status Code Registry" 已按以下注册项更新:
| 值 | 描述 | 引用 |
|---|---|---|
| 401 | Unauthorized | 第 3.1 节 |
| 407 | Proxy Authentication Required | 第 3.2 节 |
5.3 头部字段注册 (Header Field Registration)
HTTP 头部字段注册于维护在 http://www.iana.org/assignments/message-headers/ 的 "Message Headers" 注册表.
本文档定义了以下 HTTP 头部字段, 因此 "Permanent Message Header Field Names" 注册表已相应更新 (见 [BCP90]).
| 头部字段名 | 协议 | 状态 | 引用 |
|---|---|---|---|
| Authorization | http | standard | 第 4.2 节 |
| Proxy-Authenticate | http | standard | 第 4.3 节 |
| Proxy-Authorization | http | standard | 第 4.4 节 |
| WWW-Authenticate | http | standard | 第 4.1 节 |
变更控制者为: "IETF ([email protected]) - Internet Engineering Task Force".