为何要使用 refresh Token

为什么需要refresh token

refreshToken就是用来在accessToken过期以后来重新获取accessToken的

0.使用流程

-> 1.登录成功获得 refresh token 并持久化
-> 2.通过 refresh token 请求刷新得到 access token 并临时储存
-> 3.请求业务接口使用 access token
-> 4.access token 过期或者快过期再次回到「 2 」
-> 5.refresh token 也过期则生命周期结束,需重新登录

1.使用场景来看

  1. 如果是一个前后端分离的项目,使用springsecurity+jwt这种,前端用户在登录以后,后端返回给前端一个accessToken,如果没有refresh token,又因为因为安全原因accessToken过期时间会设置的比较短,在accessToken过期以后,用户将会被强制重新登录,影响用户体验
    而如果使用refresh Token,如果用户持续地访问这个网站,他们可以一直保持登录状态,而不需要定期重新登录
  2. 如果是业务服务器之间的相互调用,那么此时只用一个Access Token即可,强制重新登录影响不大,只不过是如果使用 Refresh Token 在获取新的 Access Token 的时候比直接重新登录会方便一小丢丢

2.从是否需要读取额外的状态来看

token 的过期时间一般会比 refeshToken 的过期时间短很多,保证 token 被盗取后无法持久的做坏事,通过 AccessToken 访问,只要通过签名校验合法即可通行,无需读取额外的状态来进一步确认是否撤销,当 AccessToken 过期以后再通过 RefreshToken 读取额外的状态(数据库 /缓存)确认是否继续签发

3.从安全程度来看

access token 有效期短 被盗损失更小 安全性更高
如果refresh token被盗了 想刷新access token的话 也需要提供过期的refresh token 盗取难度增加

同时refresh token只有在第一次获取和刷新access token时才会在网络中传输,因此被盗的风险远小于access token 从而在一定程度上 更安全了一点
所谓的更安全就是让盗取信息者更不容易获得而已

关于 token 过期的疑惑,为什么需要 refresh token? - 糯米PHP (nuomiphp.com)
没有理解refresh token的必要性或者说其为何比access token安全
Web API与OAuth:既生access token,何生refresh token
RFC 6819: OAuth 2.0 Threat Model and Security Considerations (rfc-editor.org)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容