使用双 token 安全的刷新 token 实现长期保存 token

双 Token 方案是一种常见的安全策略,用于解决长时间保留 Token 导致的安全问题。该方案同时优化了用户体验,并能储存失败请求并在刷新 accessToken 后重新请求这部分接口。

1. 双 Token 方案概述:

双 Token 方案在登录后获取短期的 accessToken 和长期的 refreshToken,accessToken 有效期短,refreshToken 有效期长,在 accessToken 过期后,通过 refreshToken 获取新的 accessToken。

2. 双 Token 方案的优点:

安全性提升: 用户体验优化:

3. 刷新 accessToken 的过程:

当accessToken过期时,客户端请求受保护资源会得到未授权响应。此时,使用refreshToken向认证服务器请求新的accessToken,认证服务器验证refreshToken有效后,发放新的accessToken给客户端并重置其有效期。如果refreshToken也过期或被撤销,客户端需重新登录以获取新的refreshToken。

4. 储存失败请求并刷新 accessToken:

当accessToken过期且客户端尝试访问受保护资源时,将获得未授权响应。客户端可保存该请求,包括相关信息和参数。刷新accessToken后,客户端重新发送之前保存的失败请求,此次请求将获得授权。这确保用户在重新登录后不会受之前请求失败的影响,同时保障受保护资源的安全性。

5. 实现双 Token 方案时,需要注意以下安全问题:

(1) 在传输 accessToken 和 refreshToken 时,务必使用安全的方式(如 HTTPS),以避免拦截或劫持。

(2) 为防止恶意应用程序或攻击者获取,必须安全地储存这些令牌。

伪代码示例