【问题标题】:Is a refresh token linked to the web applications client ID / client secret?刷新令牌是否链接到 Web 应用程序客户端 ID/客户端密码?
【发布时间】:2016-04-14 04:56:10
【问题描述】:

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

  1. 从 Google 获取客户端 ID 和客户端密码。
  2. 我的 Web 应用程序的用户授予了对其日历的权限。
  3. 我得到一个刷新和一个访问令牌。
  4. 我将访问令牌发送到日历 API 并获得对用户日历的访问权限。

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

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

谢谢

【问题讨论】:

    标签: security oauth access-token


    【解决方案1】:

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

    【讨论】:

    • 那么唯一的可能就是停用/更改您的 Web 应用程序的客户端 ID?
    • 如果您能够检测到刷新令牌被盗,您应该撤销它;如果 client_id/client_secret 很可能与它一起被盗,则应轮换客户端密钥;请注意,client_id 不是秘密,任何人都可以获得它
    【解决方案2】:

    是的,可以/不应该将刷新令牌用于不同的客户端。

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

    【讨论】:

      猜你喜欢
      • 2016-08-11
      • 2017-10-27
      • 1970-01-01
      • 2019-01-25
      • 2017-05-22
      • 2017-11-28
      • 2018-12-08
      • 2016-05-31
      • 1970-01-01
      相关资源
      最近更新 更多