在我的项目中,我正在组合需要相互通信的App Engine和Container Engine服务。
Container Engine服务需要向我的App Engine服务发出经过身份验证的请求。由于我之前使用过应用程序默认凭据与Google API交谈,我以为我也可以将它们用于我自己的服务。
在App Engine yaml中,我已经使用如下登录限制定义了处理程序:
handlers:
- url: /.*
script: _go_app
login: admin
与用于发出请求的内容相匹配的简化代码:
client, _ := google.DefaultClient(ctx, "https://www.googleapis.com/auth/cloud-platform")
req, _ := http.NewRequest("GET", URL, nil)
client.Do(req)
在IAM权限中,我已将App Engine管理员权限授予服务帐户。
然而,结果是302重定向到Google登录页面。 这是否意味着这种设置不可能或者是配置错误?
答案 0 :(得分:0)
通过在app.yaml配置文件中提供login: admin
,您告诉App Engine将所有请求重定向到您的' /.*'处理程序到登录表单。然后,此表单将向请求者询问凭据,并将再次检查提供的凭据集IAM Administrators,以确保他们是您项目的成员。
由于使用Server-to-Server进行Application Default Credentials通信,而不是客户端到服务器,因此您可以删除app.yaml中针对此处理程序的login: admin
客户端身份验证步骤。