【问题标题】:Implementing OAuth Refresh Tokens that never expire实现永不过期的 OAuth 刷新令牌
【发布时间】:2016-12-11 03:06:38
【问题描述】:

在 OAuth 2 的上下文中,如何处理 refresh_token 到期或未到期?

我使用 JSON Web 令牌 (JWT) 作为 access_tokens,生命周期很短(20 分钟后过期)。据我了解,这意味着我不必存储access_token,只需对其进行验证(并使用其中的受信任信息,例如作用域)。

但是,我想知道如何实现refresh_tokens。在我的研究中,我发现谷歌和其他人有refresh_tokens,它们永远是好的,除非它们被撤销,出于各种原因。我认为这意味着系统必须存储曾经发布的所有刷新令牌,以便将它们标记为已撤销。

在存储令牌时这是一个问题吗?您似乎有一组可能无限的令牌,需要永久存储和访问。

我错过了什么吗?是否有实施刷新令牌的最佳实践?它们应该是(还是不是)JWT?即使使用 JWT,也应该存储 access_tokens 吗?如果是这样,是否有任何理由让它们超过有效期?随着时间的推移,JWT 机密会发生什么变化?

【问题讨论】:

    标签: oauth-2.0 authorization storage jwt access-token


    【解决方案1】:

    这是个好问题,refresh_tokens 通常不会过期,这样应用程序就可以生成新的访问令牌,而无需定期要求用户重新进行身份验证,

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

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

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

    通过这种方式,您可以强制限制refresh_token的消耗,这就是问题所在,这也是Google的做法,

    参考Google OAuth2 Doc

    【讨论】:

      猜你喜欢
      • 2020-02-23
      • 1970-01-01
      • 2015-11-04
      • 2022-11-11
      • 2021-09-30
      • 2016-09-10
      • 2014-01-01
      • 2016-01-21
      • 1970-01-01
      相关资源
      最近更新 更多