jwt 的 refresh token怎么使用的才能起到安全作用?

发布于 2022-09-12 00:46:31 字数 181 浏览 32 评论 0

refresh token 要和access tokn 一起 发送吗?
如果一起发送,那还能保证安全吗?

如果不一起发送,如果一个请求 access token 过期,需要客户端重新发送新的access token,那么用户这次请求的数据和已经发出的过期token请求的数据岂不是不能保存? 这样用户体验岂不是很差劲??

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

陪你搞怪i 2022-09-19 00:46:31

RefreshToken 的正确用法应当是由客户端自行判断,临近 AccessToken 过期前、由客户端主动向服务端换取新的 AccessToken(这一过程一般称之为:续约),续约结束后,由客户端自动发起本应发起的请求。所以整个续约过程用户是 无感知 的。

而不是 每个请求都携带 AccessToken+RefreshToken,然后服务端判断 AccessToken 是否过期、如果过期用 RefreshToken 续约


客户端发起每个请求的大致流程:

  1. 判断本地存储的 AccessToken 是否临近过期。如果是,跳转到流程 2;如果不是,跳转到流程 6。
  2. 传递本地存储的 RefreshToken 给服务端以续约,跳转到流程 3。
  3. 服务端判断 RefreshToken 是否有效。如果有效,生成新的 AccessToken+RefreshToken 返回给客户端,跳转到流程 4;如果无效,跳转到流程 5。
  4. 客户端记录续约后的 AccessToken+RefreshToken,自动返回流程 1。
  5. 客户端提示登录已过期,引导重新登录,流程结束。
  6. 服务端判断 AccessToken 是否有效。如果有效,返回响应;如果无效,返回异常。
猫弦 2022-09-19 00:46:31
  1. 初次生成的时候一起发送,安全性上你要这么理解, refresh token 只是用来获取 access token 的,但是你 access token 都已经一起泄漏了,还在意 refresh token 泄漏与否没有意义。
  2. refresh token 只会在登录的时候申请和发送,而且没有申请资源的权限,只有在 access token 过期的时候用来刷新 access token 的作用,所有暴露在外的频率很低。
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文