前言
OAuth 2.1 在 2026 年正式定稿,统一了过去 8 年的最佳实践。
一、OAuth 2.1 vs 2.0
1. 强制 PKCE
2. 禁用 Implicit Flow
3. 禁用 Password Grant
4. 简化 scopes
二、PKCE 流程
// 客户端生成 code_verifier
const verifier = generateRandomString(64);
const challenge = base64url(sha256(verifier));
// 发起授权
redirect: /authorize?code_challenge=xxx&code_challenge_method=S256
// 换 token
/token?code=xxx&code_verifier=verifier
三、Authorization Code + PKCE
Web 应用、SPA、移动端的统一方案。安全等级最高。
四、Token 安全最佳实践
1. Access Token 用 JWT,短期有效(15min)
2. Refresh Token 用 opaque,长期(7d),可吊销
3. 不要存 LocalStorage,存 HttpOnly Cookie
五、PKI 证书管理
1. 用 ACME 自动签发 - Let's Encrypt
2. mTLS 双向认证 - 服务间通信
3. 证书轮换自动化
六、常见漏洞
1. 重定向 URI 校验不严 - 严格白名单匹配
2. State 参数缺失 - 防止 CSRF
3. Token 泄露 - 启用 DPoP 或 mTLS sender-constrained
总结
OAuth 2.1 让认证更安全更简单。新项目直接用 2.1,老项目尽快迁移。