刷新令牌是否链接到 Web 应用程序客户端 ID/客户端密码?

Is a refresh token linked to the web applications client ID / client secret?

我对使用刷新令牌时的安全性有疑问。假设我有一个 Web 应用程序可以访问用户的 google 日历。因此我需要执行以下步骤:

  1. 从 Google 获取客户端 ID 和客户端密码。
  2. 我的网络应用程序的用户允许使用他的日历。
  3. 我获得了刷新和访问令牌。
  4. 我将访问令牌发送到日历 API 并获得对用户日历的访问权限。

我可以使用保存在数据库中的刷新令牌来刷新访问令牌。

如果有人可以访问我的数据库,或者通常会有我的一个用户的刷新令牌,会发生什么情况? 攻击者能否使用刷新令牌访问日历,或者令牌是否链接到我的客户端 ID 和客户端密码?是否只有当我的 Web 应用程序使用我的客户端 ID 和客户端密码通过 OAUTH2 API 进行身份验证时才能访问用户日历?

谢谢

是的,is/should无法将刷新令牌用于与颁发给不同的客户端。

刷新令牌通常是不透明的字符串,但在颁发者中它们应该链接到经过身份验证的客户端。这就是为什么您需要在使用刷新令牌时发送您的客户端和秘密。

假设客户端能够从攻击者那里保留 client_idclient_secret,常规方法是以相同的方式处理和存储 refresh_token。因此,即使从技术上讲,如果没有客户端凭据就不可能获得新的访问令牌,但实际上攻击者将以与获取刷新令牌相同的方式获取客户端凭据。