gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 02:01:54 27 4
gpt4 key购买 nike

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

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

GAE 标准处理程序(使用 Users 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 错误。

我们的默认计算引擎服务帐户拥有 App Engine Admin& IAM 中的编辑权限。

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

关于google-app-engine - 使用计算引擎默认服务帐户从计算引擎到应用引擎标准的 HTTP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50702420/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com