gpt4 book ai didi

oauth-2.0 - Oauth 2 : why refresh tokens must be stateful?

转载 作者:行者123 更新时间:2023-12-04 19:48:10 25 4
gpt4 key购买 nike

我正在开发一个基于 Node 的 SPA 应用程序,使用 JWT 进行基于 token 的身份验证。现在,jwt token 永不过期,这不好。

我希望它过期以提高安全性,但我不希望我的用户被迫重新登录。这就是我需要刷新 token 的原因。

所以我正在阅读有关 OAuth2 的信息。我很难理解为什么刷新 token 必须存储在数据库中,而访问 token 是使用 key 即时生成的。为什么不能像访问 token 一样生成刷新 token ?

谢谢大家!

最佳答案

刷新 token 的生成方式通常与访问 token 相同。如果请求,授权服务器通常会返回刷新和访问 token (并且您没有使用隐式授权类型)。

区别在于它们的使用方式。

访问 token 通常是不记名 token :任何拥有它的人都可以对资源服务器使用它,但它只在短时间内有效。在这种情况下,将它们存储在数据库中通常毫无意义,因为它们一旦过期就毫无值(value)。

然而,刷新 token 就像访问“锻造”一样,它允许您类型转换新 token 。

如果您将刷新 token 提供给授权服务器(而不是资源服务器),您将取回一个新的访问 token ,并且可能还有一个新的刷新 token 。当然,前提是用户没有撤​​销/更改对您的应用程序的访问权限,并且该用户仍然是有效用户。

所以您可能会将它们保存在数据库中,因为您的用户很少登录。因此,您可能在获得刷新 token 数周后需要它。

刷新 token 的替代方法。

如果您使用隐式授权(这在 SPA 中很常见,但不推荐)。您可以尝试让您的最终用户登录到授权服务器使用的身份提供者。通过这种方式,您可以继续从身份验证服务器请求新的访问 token ,而身份验证服务器不会提示用户输入凭据,因为 session 将在身份提供者和用户的浏览器之间保持不变。

关于oauth-2.0 - Oauth 2 : why refresh tokens must be stateful?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48987471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com