暴露的令牌-刷新它们



我想知道Google Drive API是否有任何类型的"灾难恢复"系统?例如,在紧急情况下,如果我的应用程序中的令牌暴露,我需要能够在不提示每个用户再次接受/重新接受权限的情况下重新创建令牌,这样用户的信息就不会泄露。我真的需要这样,以便为我的用户提供一个安全的环境。

例如,我在Box API中看到它们提供了一个访问令牌和一个刷新令牌。每次访问令牌到期时,它们都会告诉您通过刷新令牌请求一个新令牌,在这种情况下,访问令牌和刷新令牌都会更改。这对我们来说是理想的,因为我们可以运行一个脚本为我们拥有的每个帐户请求新的令牌,然后将新令牌存储在我们的数据库中。

谨致问候,Andrew

注意:我假设您的应用程序正在使用Google的OAuth 2.0 Web服务器应用程序流,并且您没有使用服务帐户

当您第一次要求用户授权您的应用程序(通过将其重定向到OAuth同意页面)并包含access_type=offline参数时,您将同时收到access_tokenrefresh_token。该refresh_token在被用户访问其"帐户设置"页面或您的应用程序调用revoke方法撤销之前一直有效。即使您的应用程序稍后收到同一用户的另一个refresh_token前一个refresh_token在被撤销之前仍然有效

因此,如果您有理由相信用户的refresh_token已经暴露,那么最安全的做法是撤销它,并再次将用户发送到OAuth流(提供approval_prompt=force以确保您获得另一个refresh_token)。

Google的OAuth2还为您提供了access_tokenrefresh_token,刷新令牌用于生成新的访问令牌。

但是,如果需要撤销刷新令牌,则用户需要重新进行身份验证。


然而,真正的根本问题是,如果安全令牌暴露会发生什么?(提前考虑一下对你来说很好。)

你需要做三件事:

  • 立即撤销令牌。

  • 立即告诉用户他们的帐户被破坏了。

  • 在您确定漏洞已得到修复后,请用户重新进行身份验证。

为什么我说你需要

  • 在我看来,你有道德义务告诉他们,攻击者可能已经访问了他们的数据。

  • 在某些地区,你可能有法律义务。

  • 谷歌API条款规定,您必须立即向用户报告,否则您可能会永久失去对API的访问权限。

提前制作多个刷新令牌似乎是个坏主意:

  • 你以为攻击者会合作只拿走一个代币?

  • 用户将需要重复验证才能生成它们。

  • 无论如何,您都需要通知用户。

最新更新