自更新以来,Appengine remote_api_shell 无法使用应用程序默认凭据

Posted

技术标签:

【中文标题】自更新以来,Appengine remote_api_shell 无法使用应用程序默认凭据【英文标题】:Appengine remote_api_shell not working with application-default credentials since update 【发布时间】:2016-10-31 20:15:57 【问题描述】:

我最近将我的 gcloud 库从 118.0.0 更新到 132.0.0,然后 remote_api_shell 立即不再工作。我经历了许多重新登录的排列,通过 gcloud 设置应用程序默认凭据,并使用服务帐户和环境变量。所有排列都失败并显示相同的错误消息:

    Traceback (most recent call last):
  File "/Users/mbostwick/google-cloud-sdk/bin/remote_api_shell.py", line 133, in <module>
    run_file(__file__, globals())
  File "/Users/mbostwick/google-cloud-sdk/bin/remote_api_shell.py", line 129, in run_file
    execfile(_PATHS.script_file(script_name), globals_)
  File "/Users/mbostwick/google-cloud-sdk/platform/google_appengine/google/appengine/tools/remote_api_shell.py", line 160, in <module>
    main(sys.argv)
  File "/Users/mbostwick/google-cloud-sdk/platform/google_appengine/google/appengine/tools/remote_api_shell.py", line 156, in main
    oauth2=True)
  File "/Users/mbostwick/google-cloud-sdk/platform/google_appengine/google/appengine/tools/remote_api_shell.py", line 74, in remote_api_shell
    secure=secure, app_id=appid)
  File "/Users/mbostwick/google-cloud-sdk/platform/google_appengine/google/appengine/ext/remote_api/remote_api_stub.py", line 769, in ConfigureRemoteApiForOAuth
    rpc_server_factory=rpc_server_factory)
  File "/Users/mbostwick/google-cloud-sdk/platform/google_appengine/google/appengine/ext/remote_api/remote_api_stub.py", line 839, in ConfigureRemoteApi
    app_id = GetRemoteAppIdFromServer(server, path, rtok)
  File "/Users/mbostwick/google-cloud-sdk/platform/google_appengine/google/appengine/ext/remote_api/remote_api_stub.py", line 569, in GetRemoteAppIdFromServer
    response = server.Send(path, payload=None, **urlargs)
  File "/Users/mbostwick/google-cloud-sdk/platform/google_appengine/google/appengine/tools/appengine_rpc_httplib2.py", line 259, in Send
    NeedAuth()
  File "/Users/mbostwick/google-cloud-sdk/platform/google_appengine/google/appengine/tools/appengine_rpc_httplib2.py", line 235, in NeedAuth
    RaiseHttpError(url, response_info, response, 'Too many auth attempts.')
  File "/Users/mbostwick/google-cloud-sdk/platform/google_appengine/google/appengine/tools/appengine_rpc_httplib2.py", line 85, in RaiseHttpError
    raise urllib2.HTTPError(url, response_info.status, msg, response_info, stream)
urllib2.HTTPError: HTTP Error 401: Unauthorized Too many auth attempts.

返回 131.0.0 和 130.0.0 后,我回到 118.0.0,重新登录,一切正常。

更新 gcloud 后我没有更新正在运行的应用程序,因为我目前正处于发布周期的中间,所以这可能是问题所在,但我们将不胜感激。谢谢!

【问题讨论】:

【参考方案1】:

TL;DR:这已在 gcloud 版本 134 中修复

原答案:跑

gcloud auth application-default login --scopes=https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/userinfo.email

现在您的远程 shell 应该可以再次工作了。

详情: 我认为 128.0.0 更新以及对 gcloud auth login 命令的更改打破了这一点。旧令牌具有以下范围(根据 Google 的 tokeninfo 端点):

https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/cloud-platform https://www.googleapis.com/auth/appengine.admin https://www.googleapis.com/auth/compute https://www.googleapis.com/auth/plus.me

gcloud auth application-default login 没有任何选项的新令牌只有:

https://www.googleapis.com/auth/cloud-platform

这在gcloud auth application-default login --help中有记录

版本 134 详细信息:现在请求的范围是:

https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/cloud-platform

查看https://groups.google.com/d/msg/google-appengine/ptc-76K6Kk4/9qr4601BBgAJ的讨论

【讨论】:

谢谢,这看起来很有希望。您是否碰巧知道 Google 在代码或文档方面是否存在未解决的问题? 我不知道有没有。我确实在应用引擎 Google Group 上发帖,试图引起人们的注意。我对公共问题跟踪器不太信任:groups.google.com/forum/#!topic/google-appengine/ptc-76K6Kk4 这也是 firebase rest API 的问题,见***.com/questions/40443525/…

以上是关于自更新以来,Appengine remote_api_shell 无法使用应用程序默认凭据的主要内容,如果未能解决你的问题,请参考以下文章

自更新 WordPress 和 ACF 插件以来,标签 ACF 'repeater' 不再起作用

Unity:Collider.bounds.extends.x 自最新更新以来返回半径 - 为啥?

App Engine上的Django vs webapp2 [关闭]

自更新以来,Laravel mix 不会在生产模式下构建

自上次 chrome 更新以来,我的 HTML 输入字段默认为“只读”

自 Symfony2 更新到 2.8 以来覆盖注册表单(SonataUserBundle)