为什么Google今天使所有OAuth2访问令牌无效?

时间:2015-03-06 00:30:26

标签: google-api google-oauth

今天早上7点左右,您的OAuth2 /令牌服务器发生了什么变化? 网址:https://accounts.google.com/o/oauth2/token

我们所有Google用户的令牌刷新失败(credential.refreshToken()== false)导致数百位客户失去访问权限和连接权!

然后有一段时间我们的用户无法重新授权,因为Google在响应以下API调用时返回503 Unavailable和CAPTURE:

GoogleAuthorizationCodeFlow gacf =
            new GoogleAuthorizationCodeFlow.Builder(new NetHttpTransport(),
                new JacksonFactory(), appId,
                appSecret, scopes).build();
tokenResponse = gacf.newTokenRequest(code).setRedirectUri(<callback_url>).execute();

com.google.api.client.auth.oauth2.TokenResponseException:503服务不可用

  

我们的系统检测到来自您计算机网络的异常流量。此页面检查是否真的是您发送请求,而不是机器人。

一段时间后,一切都重新开始工作,现在我们有数百个客户,我们的服务停止了工作,因为没有有效的OAuth2访问令牌了。

您能否解释一下Google今天早些时候所做的事情以及它如何设法使所有令牌无效?我们怎样才能找出它检测到的“异常流量”?

谢谢

1 个答案:

答案 0 :(得分:1)

你在AppEngine上?

如果是的话,也许就是这个......

内容:

2015年3月5日星期四,持续84分钟,通过HTTP访问某些Google API的Google App Engine应用程序的错误率提高了。对于此事件对您的服务或应用程序产生的任何影响,我们深表歉意,并立即进行了更改,以防止此问题再次发生。

影响的详细说明:

1月5日星期四上午07:04到08:28,一些通过HTTP拨打其他Google API的Google App Engine应用程序的错误率提高了。在此事件期间,所有API调用的全局错误率仍低于1%,总体而言,中断影响了事件期间活动的应用程序的2%。对这些应用程序的影响非常显着:发出OAuth令牌的请求的错误率超过85%。此外,googleapis.com/storage和googleapis.com/gmail的HTTP API收到的错误率介于50%和60%之间。其他googleapis.com端点受到影响,错误率为10%至20%。

ROOT原因:

Google的共享HTTP负载平衡结构中的一个组件经历了非恶意增加的流量,超过了其预配置容量。这触发了自动DoS保护,将一部分传入流量分流到CAPTCHA。意外的响应导致一些客户发出自动重试,加剧了问题。

补救和预防:

Google工程师在07:02通过自动监控向该问题发出警告,因为负载平衡系统检测到超额流量并尝试自动缓解该流量。在07:46,Google Engineers启用了备用负载平衡功能来纠正问题。从08:15到08:40,Google Engineers继续在负载平衡结构中配置额外资源,以便为增加的流量提供服务。在此期间,即08:28,Google工程师确定有足够的容量来提供常规和重试流量,并指示负载平衡系统停止缓解并恢复正常流量服务。这一行动标志着事件的结束。

为防止此问题再次发生,Google工程师正在全面重新检查受影响的负载平衡结构,以确保其正确配置并保持正确配置。此外,Google工程师正在改进监控规则,以提供容量不足的早期预警。最后,Google工程师正在检查依赖于此负载平衡系统的服务,并在适当的情况下将某些服务移至单独的更容易扩展的负载平衡器池中。