在相同代码工作几天后,Google OAuth令牌验证网址会返回HTTP错误400

时间:2015-12-09 13:52:29

标签: google-oauth http-status-code-400

以下是在Tomcat上运行的代码,它可以运行大约10天,其中有几个用户可以使用OAuth 20 SSO登录,之后它会收到来自Google的HTTP 400响应:(https://accounts.google.com/o/oauth2/token

请建议可能遗漏的内容:

CloseableHttpClient httpclient = HttpClientBuilder.create()。build();

        HttpUriRequest post = RequestBuilder.post(data.getOauthTokenURI())
      .addParameter("code", code)
            .addParameter("grant_type", "authorization_code")
            .addParameter("client_id", data.getOauthClientId())
            .addParameter("client_secret", data.getOauthClientSecretDec())
            .addParameter("redirect_uri", data.getOauthRedirectURI())
      .build();

        String postResponseBody = null;
  CloseableHttpResponse httpResponse = null;
        try {
            httpResponse = httpclient.execute(post);
    int httpCode = httpResponse.getStatusLine().getStatusCode();

1 个答案:

答案 0 :(得分:0)

内容:

2015年12月7日星期一,在17小时3分钟内向Google API发出经过身份验证的来电时,1.29%的Google App Engine应用程序收到错误。在45分钟内,从App Engine外部对Google API进行的身份验证调用也会收到错误,错误率达到12%。对于此问题对您和您的服务的影响,我们深表歉意。我们认为此级别和持续时间的服务质量下降非常严重,我们正计划进行许多更改,以防止将来再次出现这种情况。

影响的详细说明:

在2015年12月7日星期一太平洋标准时间2015年12月7日星期二和2015年12月8日星期二13:12之间,1.29%使用服务帐户的Google App Engine应用程序收到错误401"访问被拒绝"对于要求身份验证的所有Google API请求。未经身份验证的API调用不受影响。不同的应用程序在不同的时间都会受到影响,很少有应用程序在整个事件期间受到影响。

此外,在23:05到23:50之间,平均有7%的Google Cloud API请求失败或超时,短暂达到12%。在此时间之外,只有来自App Engine的API调用受到影响。

ROOT原因:

Google工程师最近将Google帐户系统迁移到新的存储后端,其中包括复制API身份验证服务凭据数据以及将API调用重定向到新的后端。

要完成此迁移,计划从先前的存储后端删除凭据。此过程于2015年12月7日星期一太平洋标准时间20:09开始。由于软件错误,API身份验证服务继续在旧存储后端中查找某些凭据,包括Google App Engine服务帐户使用的凭据。随着这些凭据逐步删除,其相应的服务帐户将无法再进行身份验证。

随着更多凭据被删除以及一些Google App Engine应用程序开始发出大量重试请求,影响力也随之增加。在23:05,重试量超过了API身份验证服务的区域容量,导致1.3%的所有经过身份验证的API调用失败或超时,包括从Google App Engine外部调用的Google API。在23:30,API身份验证服务超出了其全局容量,导致高达12%的所有经过身份验证的API调用都失败,直到23:50,当过载问题得到解决时。