JWT为什么要设置2个token?

发布于 2022-09-07 22:45:35 字数 315 浏览 13 评论 0

发现网上很多人用JWT时都会设置2个token:access_token和refresh_token,access_token设置成2个小时过期,refresh_token设置成7天过期,如果access_token过期了refresh_token没有过期就重新生成一个新的access_token,如果refresh_token过期了就让用户重新登录。

我就纳闷直接设置一个token让它7天过期不就行了吗,有说设置2个token安全性更高,可是人家能拿到你其中一个token必定就能拿到另一个。或者设置2个token难道是有些特殊场景需要?希望有经验的能帮助答疑解惑!

谢谢!!!

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

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

发布评论

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

评论(3

梦开始←不甜 2022-09-14 22:45:35

这个问题看了不少帖子,确实都没怎么太讲清楚。就我的理解,refresh token的出现完全是应对accessToken存储在客户端的场景下: access token存储在客户端,这就有泄露的可能,所以一般授权服务器给了access token更短的过期时间。 一旦过期,会要求用户重新登录授权(比如两个小时后), 这样的用户体验一点也不好。接着出现了refresh token,它一般是直接存储在服务器上,作用就是在access token过期后重新获取,减少用户重新登录的频次。

还在原地等你 2022-09-14 22:45:35

refresh token如果不存在客户端那客户端怎么让服务器知道它曾经拥有这个refresh token呢

表情可笑 2022-09-14 22:45:35

为了安全原因,refresh_token只会在请求资源方身份验证方之间通信用来获取新的access_token,而access_token除了上述两个服务器,还会和资源提供方(resource server)通信来请求获取资源,必然增加了安全风险

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文