在同一项目中验证来自Container Engine的App Engine请求

时间:2016-11-02 13:07:57

标签: google-app-engine authentication google-kubernetes-engine

在我的项目中,我正在组合需要相互通信的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登录页面。 这是否意味着这种设置不可能或者是配置错误?

1 个答案:

答案 0 :(得分:0)

通过在app.yaml配置文件中提供login: admin,您告诉App Engine将所有请求重定向到您的' /.*'处理程序到登录表单。然后,此表单将向请求者询问凭据,并将再次检查提供的凭据集IAM Administrators,以确保他们是您项目的成员。

由于使用Server-to-Server进行Application Default Credentials通信,而不是客户端到服务器,因此您可以删除app.yaml中针对此处理程序的login: admin客户端身份验证步骤。