gpt4 book ai didi

security - 移动应用程序的 OAuth2 访问 token 是否必须过期?

转载 作者:行者123 更新时间:2023-12-03 10:56:03 24 4
gpt4 key购买 nike

此处接受的关于 why OAuth2 access tokens expire 的答案:

  • 许多提供商支持安全性非常弱的不记名 token 。通过使它们短暂存在并需要刷新,它们可以限制攻击者滥用被盗 token 的时间。 ( 这是什么意思?我认为这意味着允许没有 TLS 的传输?还有什么?)。
  • 大规模部署不想在每次 API 调用时都执行数据库查找,因此他们发布可通过解密进行验证的自编码访问 token 。但是,这也意味着无法撤销这些 token ,因此它们的发行时间很短,必须刷新。
  • 刷新 token 需要客户端身份验证,这使得它更强大。与上述访问 token 不同,它通常是通过数据库查找来实现的。

  • 假设我们不支持访问 token 的非加密传输,请注意第一个要点。

    假设我们可以对一个可撤销的、完全随机的访问 token 进行数据库查找,那么第二个 token 就会得到处理。

    对于移动应用,客户端身份验证不能再强,因为“注册时获得的 client_id 和 client_secret 已嵌入到您的应用程序的源代码中。在这种情况下,client_secret 显然不被视为 secret 。” ( Google )。这消除了第三个担忧。

    那么在这种情况下分离短期访问 token 和长期刷新 token 有什么好处呢?只发布非过期的访问 token 并忽略整个刷新 token 部分是否“可以”?

    最佳答案

    刷新 token 和非过期访问 token 在安全方面的区别是对授权服务器的一次额外调用。
    如果攻击者可以访问您的 未过期的访问 token ,他可以直接调用您的资源服务器并获取 secret 数据作为响应。
    现在如果他偷了你的刷新 token ,他首先必须调用授权服务器并接收访问 token 作为响应。然后他可以向资源服务器查询 secret 数据。
    每次使用刷新 token 从授权服务器请求访问 token 时,OAuth 2 规范(至少是目前的最新草案)要求服务器check the client identity and if it is bound to the token , 如果可能的话。
    由于使用客户端 secret 的常规方法无法在开放平台上明确识别已安装的应用程序,因此运行该应用程序的平台必须提供执行此操作的方法。谷歌例如要求 Android 应用程序由开发人员签名。使用 Google API Console 为 Android 应用程序请求凭据时,因此您必须指定 the fingerprint of the certificate you used for signing the application并且只获得客户端 ID,但没有 secret 响应。在发行 token 时,Google 可以决定应用程序是否已获得开发人员的授权,可以以他的名义请求 token 。
    如果您绝对无法验证客户端身份,则至少在某些情况下可以识别刷新 token 被盗。该规范有一个 example for this :

    When client authentication is not possible, the authorization server SHOULD deploy other means to detect refresh token abuse.

    For example, the authorization server could employ refresh token rotation in which a new refresh token is issued with every access token refresh response. The previous refresh token is invalidated but retained by the authorization server. If a refresh token is compromised and subsequently used by both the attacker and the legitimate client, one of them will present an invalidated refresh token, which will inform the authorization server of the breach.

    关于security - 移动应用程序的 OAuth2 访问 token 是否必须过期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11357176/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com