难以使 Cloud Run 服务成为 Apps 脚本项目的目标 - 受众和范围



我无法创建 OpenID Connect 身份令牌以作为云运行请求的持有者令牌发送。 从应用程序脚本中,我无法使用(ScriptApp.getIdentityToken(((制作令牌,该令牌具有Google前端将允许通过的受众。 当我安排脚本发送一个令牌而不是我用gcloud print-identity-token(除了受众之外相同(制作的令牌时,调用成功了。

注意 我相信这可能是与此处看到的相同问题:通过Google Apps Script安全地调用Google Cloud Function。

还有谷歌云认证与持有者令牌通过nodejs。

一种解决方法是重组 GCP/应用脚本项目。 其他人主要使用服务帐户,并使用服务帐户密钥。 我相信可以使用 IAM 并使用谷歌身份验证来生成可用的 SA 身份令牌(短期服务帐户凭据(,但我无法证明它。

我目前正在解决这个问题,但我想了解基本问题。我认为这与云运行服务的托管项目的 Oauth 同意屏幕以及无法将关联的 Web 应用程序客户端 ID 添加为范围有关。

在 Cloud Run文档中,有一节介绍了如何从 GCP 外部的其他服务对 Cloud Run 执行经过身份验证的调用。该过程如下:

  1. 对服务帐户 JWT 进行自签名,并将target_audience声明设置为接收服务的 URL。

  2. 将自签名 JWT 换成 Google 签名的 ID 令牌,该令牌应将 aud 声明设置为上述网址。

  3. 在对服务的请求中包含 ID 令牌:持有者ID_TOKEN标头。

步骤 1 可以按照此处所述执行,同时将 aud 声明设置为接收服务的 URL。我相信 ScriptApp.getIdentityToken(( 没有为 JWT 设置正确的受众

对于第 2 步,我认为您应该执行POST请求,以使用适当的参数grant_typeassertion进行https://oauth2.googleapis.com/token。此处的"发出访问令牌请求"部分对此进行了说明

生成的令牌应在步骤 3 中使用

我刚刚写了一篇关于该主题的文章,并提供了一种基于服务帐户凭据 API 的简单方法。让我们看一下,如果需要,我们可以进一步讨论。

相关内容

最新更新