Oauth 2.0 实现永不过期的OAuth刷新令牌

Oauth 2.0 实现永不过期的OAuth刷新令牌,oauth-2.0,authorization,storage,jwt,access-token,Oauth 2.0,Authorization,Storage,Jwt,Access Token,在OAuth 2的上下文中,如何处理refresh\u令牌到期或缺少到期 我使用JSON Web令牌(JWTs)作为access\u令牌s,使用寿命很短(20分钟后过期)。据我所知,这意味着我不必存储access\u令牌,只需验证它(并使用其中的可信信息,如作用域) 然而,我想知道如何实现refresh\u令牌s。在我的研究中,我看到谷歌和其他公司有refresh\u tokens,它们永远都是好的,除非出于各种原因被撤销。我假设这意味着系统必须存储所有已发布的刷新令牌,以便将它们标记为已撤销

在OAuth 2的上下文中,如何处理
refresh\u令牌
到期或缺少到期

我使用JSON Web令牌(JWTs)作为
access\u令牌
s,使用寿命很短(20分钟后过期)。据我所知,这意味着我不必存储
access\u令牌
,只需验证它(并使用其中的可信信息,如作用域)

然而,我想知道如何实现
refresh\u令牌
s。在我的研究中,我看到谷歌和其他公司有
refresh\u token
s,它们永远都是好的,除非出于各种原因被撤销。我假设这意味着系统必须存储所有已发布的刷新令牌,以便将它们标记为已撤销

这是代币存储的问题吗?似乎您有一组潜在的无限令牌,它们需要永久存储和访问


我错过什么了吗?是否有实现刷新令牌的最佳实践?他们应该是(或不是)JWTs吗?即使在使用JWTs时,是否也应存储access_令牌?如果是,是否有任何理由使其过期?JWT机密会随着时间的推移而变化吗?

这是一个好问题,刷新令牌通常不会过期,因此应用程序可以生成新的访问令牌,而无需要求用户定期重新验证

但应用程序需要强制限制单个客户端允许的活动刷新令牌的数量,例如:

每个OAuth客户端最多只能有20个活动刷新令牌,如果该限制达到,则必须撤销最旧的令牌,并应在不拒绝请求的情况下授予新的令牌

而且,如果某个刷新令牌在某段时间内(比如6个月)没有被使用,那么该令牌也需要被撤销

通过这种方式,您可以强制限制刷新令牌的使用,下面是一个陷阱,谷歌也是这样做的

提及