令牌暴露 - 刷新它们?

时间:2015-11-16 22:52:07

标签: google-drive-api

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

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

此致 安德鲁

2 个答案:

答案 0 :(得分:0)

Google's OAuth2 also gives you both an access_token and a refresh_token,刷新令牌用于生成新的访问令牌。

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

真正的基本问题是,如果安全令牌暴露会发生什么? (很高兴你提前考虑这个。)

你需要做三件事:

  • 立即撤销令牌。

  • 及时告诉用户他们的帐户遭到破坏。

  • 在您确定违规行为已得到纠正后,请让用户重新进行身份验证。

为什么我说需要

  • 在我看来,您有道德义务告诉他们攻击者可能已获得对其数据的访问权。

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

  • Google API terms表示您必须及时向您的用户报告,否则您可能会永久失去对API的访问权限。

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

  • 您认为攻击者只会合作只使用一个令牌?

  • 用户需要反复进行身份验证才能生成它们。

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

答案 1 :(得分:0)

注意:我将假设您的应用程序使用的是Google OAuth 2.0 Web Server Applications flow并且您没有使用服务帐户。

当您首次要求用户授权您的应用程序时(通过将其重定向到OAuth许可页面)并添加access_type=offline参数,您将同时收到access_tokenrefresh_tokenrefresh_token有效有效,直到被撤销,要么是用户访问其“帐户设置”页面,要么是应用程序调用{​​{1}}方法。即使您的应用程序稍后为同一用户收到另一个revoke之前的refresh_token仍然有效,直到被撤销

因此,如果您有理由相信某个用户的refresh_token已被曝光,那么最安全的做法就是撤销它并再次将用户发送到OAuth流程(提供{ {1}}以确保您获得另一个refresh_token