RFC 7617 - 'Basic' HTTP 认证方案
发布日期: 2015年9月
状态: 标准跟踪 (Standards Track)
作者: J. Reschke (greenbytes)
废止: RFC 2617
摘要
本文档定义了 "Basic" 超文本传输协议 (HTTP) 认证方案,该方案以用户 ID/密码对的形式传输凭据,使用 Base64 编码。
本备忘录状态
这是一份互联网标准跟踪文档。
本文档是互联网工程任务组 (IETF) 的产品。它代表了 IETF 社区的共识。它已经过公开审查,并已获得互联网工程指导组 (IESG) 的发布批准。有关互联网标准的更多信息,请参见 RFC 5741 的第 2 节。
有关本文档当前状态、任何勘误表以及如何提供反馈的信息,可从 http://www.rfc-editor.org/info/rfc7617 获取。
目录
- 1. 简介 (Introduction)
- 1.1 术语与符号
- 2. 'Basic' 认证方案
- 2.1 'charset' 认证参数
- 2.2 重用凭据
- 3. 国际化考虑
- 4. 安全考虑
- 5. IANA 考虑
- 6. 参考文献
- 6.1 规范性参考文献
- 6.2 信息性参考文献
附录
- 附录 A. 相对 RFC 2617 的变更
- 附录 B. 'charset' 参数的部署考虑
- B.1 用户代理
- B.2 服务器
- B.3 为何不直接将默认编码切换为 UTF-8?
- 致谢
核心概念
Basic 认证方案概述
Basic 认证是 HTTP 最基础的认证方式,使用用户名和密码的 Base64 编码传输凭据。
⚠️ 安全警告: Basic 认证以明文方式传输密码(仅使用 Base64 编码,并非加密),除非与 TLS/HTTPS 结合使用,否则不被认为是安全的认证方法。
认证流程
客户端 服务器
| |
|-------- 1. GET /protected -------->|
| |
|<----- 2. 401 Unauthorized ---------|
| WWW-Authenticate: Basic |
| realm="WallyWorld" |
| |
|-------- 3. GET /protected -------->|
| Authorization: Basic |
| QWxhZGRpbjpvcGVuIHNlc2FtZQ== |
| |
|<------- 4. 200 OK + 资源 ----------|
| |
Base64 编码示例
用户名: Aladdin
密码: open sesame
编码过程:
- 拼接:
Aladdin:open sesame - Base64 编码:
QWxhZGRpbjpvcGVuIHNlc2FtZQ== - 发送:
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
RFC 7617 vs RFC 2617 主要变更
- 新增 'charset' 参数: 允许服务器指示使用 UTF-8 编码
- 国际化支持: 改进对非 ASCII 字符的支持
- 规范重写: 与 RFC 7235 保持一致
相关资源
- 官方原文: RFC 7617
- 官方页面: RFC 7617 DataTracker
- 勘误表: RFC Editor Errata
- 相关 RFC: RFC 7235 (HTTP/1.1 Authentication)