OAuth 2.0 定义授权流程:让用户在不交出密码的情况下,授权第三方访问受保护资源。JWT(JSON Web Token)是一种可验证的令牌格式,常携带用户身份、过期时间等声明。两者经常一起出现——例如 OAuth 发放的 Access Token 采用 JWT——但职责不同:一个管流程,一个管令牌形态。
实践建议
- 分清 Authentication(你是谁)与 Authorization(你能做什么)
- Access Token 保持短生命周期,降低泄露窗口
- Refresh Token 妥善存储,并支持吊销
- 校验签发方、受众、过期时间与签名算法,拒绝 alg=none 等危险配置
常见坑
把 JWT 当加密方案(它默认是签名而非加密);在前端长期存放高权限 Refresh Token;忽略时钟偏差导致的间歇失败。移动端与 SPA 的存储位置选择要权衡 XSS 与 CSRF。对服务间调用,客户端凭证模式与用户授权模式也不要混用。
调试思路
用解码工具查看 Payload(勿在不可信环境粘贴生产令牌),对照文档核对 scope。本站工具导航中的 JWT 相关条目可用于学习解码概念;生产密钥与令牌请只在安全环境处理。
团队协作建议
画一张授权时序图放进文档,标明谁颁发、谁校验、谁吊销。联调环境使用独立客户端与回调地址。安全评审时重点看密钥轮换与权限范围,而不是只看能不能登录成功这一表面结果。
生产环境禁止使用弱密钥,轮换算法与密钥时保留短暂双验窗口。把常见错误码翻译成产品文案,减少用户卡在授权页。权限范围能小则小,定期审计长期未用的客户端。