HTTP 通信中的认证方式
目录
-
-
- 1. **基本认证 (Basic Authentication)**
- 2. **摘要认证 (Digest Authentication)**
- 3. **Bearer Token (令牌认证)**
- 4. **OAuth 2.0 / OpenID Connect**
- 5. **API Key**
- 6. **客户端证书认证 (TLS Client Certificate)**
- 7. **SAML (Security Assertion Markup Language)**
- 认证方式对比总结
- **关键选择建议**
-
在 HTTP 通信中,认证是确认客户端(用户或系统)身份的关键机制。以下是主要的认证方式及其原理、优劣势比较:
1. 基本认证 (Basic Authentication)
- 原理:
- 客户端发送请求时,在
Authorization
头中附带用户名:密码
的 Base64 编码字符串。 - 格式:
Authorization: Basic base64(username:password)
- 客户端发送请求时,在
- 优势:
- 实现简单,所有浏览器和服务器均支持。
- 无需复杂交互。
- 劣势:
- 安全性极低:Base64 编码可轻松解码,等同于明文传输密码。
- 无防重放机制,易被中间人攻击。
- 每次请求均需发送凭证,增加泄露风险。
- 适用场景:仅用于低安全性需求或配合 HTTPS 加密。
2. 摘要认证 (Digest Authentication)
- 原理:
- 服务器发送随机数
nonce
,客户端将用户名+密码+nonce
进行 MD5/SHA 哈希后返回。 - 流程:
客户端请求 → 服务器返回 401 和 nonce → 客户端发送哈希值 → 服务器验证哈希
- 服务器发送随机数
- 优势:
- 密码不在网络中明文传输(仅传输哈希值)。
- 通过
nonce
防止重放攻击。
- 劣势:
- 仍可能受中间人攻击(需配合 HTTPS)。
- 实现复杂,部分旧浏览器支持不佳。
- 哈希算法(如 MD5)存在碰撞风险。
- 适用场景:对安全性要求中等,且无法使用 HTTPS