【问题标题】:how many refresh tokens and access tokens can one single client possess simultaneously for Google?一个客户端可以同时为 Google 拥有多少个刷新令牌和访问令牌?
【发布时间】:2020-06-09 22:45:50
【问题描述】:

假设,我有一个谷歌应用程序,一个用户多次使用 OAuth2 授权我的应用程序,并且我的应用程序存储了从授权生成的所有刷新令牌。我的应用可以保留多少个有效的刷新令牌?每个刷新令牌生成的访问令牌有多少是有效的?

【问题讨论】:

标签: oauth2


【解决方案1】:

我目前正在使用 OAuth2 与其他 API 合作,每当用户授权您的应用程序获取信息时,旧令牌就会失效。在我的情况下,如果用户重新授权,我会扔掉旧令牌并插入新令牌。访问令牌可以并且在大多数情况下具有有限的生命周期。如果访问令牌已过期,您将收到错误消息,并且您需要使用您的刷新令牌请求新的访问令牌。在某些情况下,您还会在访问令牌之外获得一个新的刷新令牌,以请求下一个访问令牌。请参阅 https://developers.google.com/identity/protocols/OAuth2 以了解特定于 google 的信息。

【讨论】:

  • 一个用户向我的应用程序授权了许多令牌,我将它们全部用于不同的用途怎么样?我可以持有多少个有效的刷新令牌。
  • 使用 OAuth2,clientID 将只有 1 组活动令牌(访问+刷新)。如果您有来自 API 的多个 ClientID,您可以定义不同的范围,但是用户必须授权所有不同的应用程序(您的客户端 ID),我假设这不是您的用例。传统上,您将拥有一个生命周期有限的访问令牌和一个刷新令牌以获取新的访问令牌。您的应用程序的范围,因为它已被用户授权,与您的 ClientID 耦合。如果用户重新授权您的应用程序,旧令牌将失效。
  • @martwetzels 这似乎不是 100% 正确的,尽管它确实取决于解释。我一直在努力寻找答案,我只能推测当客户端(不是 clientId)收到新的 refresh_token 时,它必须丢弃旧的。然而,RFC 只说服务器可以撤销旧的刷新令牌,而不是必须。因此,如果客户端与另一个客户端共享了之前的 client_id/access_token/refresh_token 组合,它可以使用相同的 client_id,但不同的 access_token/refresh_token 组合。这一切都取决于服务器是否撤销了旧...
  • 这取决于提供令牌的服务。根据我的经验,旧的刷新令牌已失效,因此维护旧令牌的副本将浪费空间。一些 API,而不是谷歌,甚至不提供刷新令牌。为什么系统会持有为连接到同一个 ClientID 的同一个客户端发出的多个有效刷新令牌?你能详细说明一下你的评论吗?
猜你喜欢
  • 2019-09-29
  • 2014-02-10
  • 2016-03-13
  • 2014-07-18
  • 2016-03-22
  • 2023-03-27
  • 2020-03-20
  • 2019-06-29
  • 1970-01-01
相关资源
最近更新 更多