繁体   English   中英

使用计算引擎默认服务帐户的从计算引擎到应用引擎标准的HTTP请求

[英]HTTP requests from compute engine to app-engine standard with compute engine default service account

我们希望从计算引擎向Appengine标准发出安全的HTTP请求,并使用Appengine用户API进行身份验证

用户API: https//cloud.google.com/appengine/docs/standard/go/users/

GAE标准处理程序(受“用户Api”保护-登录:必填):

handlers:
- url: /securehandler/.*
  script: _go_app
  login: required
  secure: always

我们尝试使用该库从计算引擎Go应用程序向上述GAE处理程序发出经过身份验证的HTTPS请求:

https://godoc.org/golang.org/x/oauth2/google#ComputeTokenSource

client := &http.Client{
    Transport: &oauth2.Transport{
        // Fetch from Google Compute Engine's metadata server to retrieve
        // an access token for the provided account.
        // If no account is specified, "default" is used.
        Source: google.ComputeTokenSource(""),
    },
}
client.Get("https://myapp.appspot.com/securehandler/search")

我们收到403禁止HTTP错误。

我们的默认计算引擎服务帐户在IAM中具有App Engine管理员和编辑者权限。

Google支持人员告诉我们,我们应该能够使用默认的计算引擎服务帐户向GAE标准处理程序发出请求。

谢谢

从Compute Engine到App Engine应用程序进行安全的HTTP请求时,您必须利用用户授权流程[1],因为您希望GAE应用程序中的用户向来自GCE的请求授予访问权限。 App Engine用户API仅适用于在App Engine平台上运行的应用。 我假设您的运行在GCE实例上。

来自其他GCP服务(例如GCE)的HTTP请求在这种情况下需要直接路由,其中​​URL包括资源的名称或ID [2]。

例如

http://[VERSION_ID].[SERVICE_ID].[MY_PROJECT_ID].appspot.com

https://[VERSION_ID]-dot-[SERVICE_ID]-dot-[MY_PROJECT_ID].appspot.com)

查看本文档,以了解如何在请求中提供对应用所需的用户信息的访问范围[3]。

希望这有助于指出正确的方向。

[1] https://cloud.google.com/compute/docs/api/how-tos/authorization

[2] https://cloud.google.com/appengine/docs/standard/go/communicating-between-services

[3] https://cloud.google.com/compute/docs/api/how-tos/authorization#user_auth_flow

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM