既然 Refresh Token 可以长期有效,那为什么不直接让 Access Token 也长期有效?
✅ 主要原因解析:
- Access Token 是“通行证”,泄露风险高
Access Token 是用来频繁请求接口的,如果被拦截或泄露,攻击者可以立即调用接口获取敏感数据。
如果它是长期有效的,就意味着攻击者可以“永久”持有用户身份。
👮♀️ 短期有效的 Access Token(如 15 分钟)即使被窃取,攻击窗口也被限制。
- Refresh Token 是“钥匙”,只用来换 Access Token
Refresh Token 不直接访问资源,仅用于重新申请 Access Token。
通常刷新接口会有额外的校验(如 IP、设备、行为分析等),服务端还可设置吊销机制。
所以,即使 refresh token 被盗,也可以控制风险面更小。
- 可实现 Token Rotation(令牌轮换)机制
每次使用 refresh token 刷新时,服务端会:
返回新 Access Token;
返回一个新的 Refresh Token;
作废旧的 Refresh Token。
一旦检测到 refresh token 被重复使用(replay attack),可立刻判定为攻击行为 → 强制登出所有设备。
- 提升用户体验与安全的平衡
用户只需要偶尔登录一次(refresh token 有效期长);
系统通过短期 Access Token 保证每次 API 调用是“新鲜安全”的。
🚫 为什么不直接长期有效的 Access Token?
方案 | 问题 |
---|---|
让 Access Token 长期有效 | 安全性差,token 一旦泄露无法控制 |
只用 Refresh Token | 请求接口时还得先换 token,增加延迟与复杂度 |
Access Token + Refresh Token ✅ | 分工明确,控制灵活,风险窗口小,用户体验好 |
总结一句话:
Access Token 是短期“门票”,Refresh Token 是长期“身份证”,一动一静,结合使用才安全。
共有 0 条评论