使用服务帐户验证从Cloud Functions向Google端点的请求

时间:2019-11-06 15:41:43

标签: google-cloud-platform google-cloud-functions google-cloud-endpoints

我有一个简单的云功能,该功能由在Firebase Auth上创建新用户触发,该功能向在Google {{ 1}}和ESP(Google-Endpoints)。

据我所了解,通过阅读"Authentication between services",我应该能够通过分配与具有服务帐户令牌创建者角色的服务帐户相关的安全性定义来定义服务到服务的身份验证。 我将如何使用服务帐户对请求进行身份验证,以便只有此功能才能发出此请求?可以将此服务帐户归因于该功能吗?请引导我解决这个问题。

谢谢!

2 个答案:

答案 0 :(得分:0)

Cloud Functions默认情况下使用App Engine服务帐户。

要实现这一点,您需要执行以下四个步骤:

1)将服务帐户添加到受Cloud IAP保护的项目的访问权限list

2)生成基于JWT的access token

3)请求OIDC令牌作为Cloud IAP保护的客户端ID

4)将OIDC令牌包括在Authorization:Bearer标头中,以向Cloud IAP-受保护的应用程序发出经过身份验证的请求

Here,您会看到指南,其中详细解释了这些步骤以及一些代码示例,以实现对默认服务帐户的编程授权。

答案 1 :(得分:0)

此服务帐户可以以某种方式归属于该功能吗?请引导我解决这个问题。

在函数执行期间,Cloud Functions使用服务帐户PROJECT_ID@appspot.gserviceaccount.com作为其标识。但是,您可以为其功能分配自己的标识。您可以使用具有正确角色的服务帐户来部署云功能。

然后该函数使用服务帐户的私钥对安全的JSON Web令牌(JWT)进行签名,并将请求中的签名JWT发送到您的API。

您将通过在OpenAPI文档中将服务帐户添加为发行者来配置API以支持身份验证。

在ESP将请求转发到您的API之前,ESP验证:签名,发行人声明,受众声明和令牌。

只有这种功能才能发出api请求。

在这里您可以找到官方文档Function IdentityAuthentication between services