我想知道Google Drive API是否有任何类型的“灾难恢复”系统?例如,在紧急情况下,如果我的应用程序中的令牌被暴露,我需要能够重新创建令牌而不会提示每个用户再次接受/重新接受权限,以便用户的信息不会泄露。我真的需要这个,以便为我的用户提供安全的环境。
例如,我在Box API中看到它们提供了访问令牌和刷新令牌。每次访问令牌到期时,它们都会告诉您通过刷新令牌请求新的令牌,在这种情况下,访问令牌和刷新令牌都会发生变化。这对我们来说是理想的,因为我们可以运行一个脚本来为我们拥有的每个帐户请求新的令牌,然后在我们的数据库中存储新的令牌。
此致 安德鲁
答案 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_token
和refresh_token
。 refresh_token
有效有效,直到被撤销,要么是用户访问其“帐户设置”页面,要么是应用程序调用{{1}}方法。即使您的应用程序稍后为同一用户收到另一个revoke
,之前的refresh_token仍然有效,直到被撤销。
因此,如果您有理由相信某个用户的refresh_token
已被曝光,那么最安全的做法就是撤销它并再次将用户发送到OAuth流程(提供{ {1}}以确保您获得另一个refresh_token
。