【问题标题】:Unable to authenticate HTTP function call from Google Cloud Scheduler无法验证来自 Google Cloud Scheduler 的 HTTP 函数调用
【发布时间】:2022-01-12 00:34:29
【问题描述】:

我创建了一个不允许未经身份验证的请求的 HTTP Google Cloud 函数。

我在项目中创建了一个具有一个角色的服务帐户:Cloud Functions Invoker。

此服务帐户被列为我的 http 云功能的主体,并显示具有该角色: 我创建了一个 Cloud Scheduler Job 来运行这个功能。

在工作中,我已经指定我希望它获得一个 OIDC 令牌来验证对 http 函数的请求:

每当我触发作业时,它都会失败并显示一条消息,指示请求未经身份验证:

我尝试过的事情:

  1. 重新创建函数
  2. 重新创建作业
  3. 使用其他用户(主服务帐户用户 - 那个也不起作用)
  4. 从调度程序作业执行 POST 而不是 GET(我之前已经成功地为经过身份验证的 http 函数创建了调度作业,但这是我第一次执行 GET - 真的只是抓住了稻草)

我错过了什么吗?知道为什么它会返回“未经身份验证”消息吗?

【问题讨论】:

  • 该功能是否只允许内部连接?如果是,它将返回 403,因为调度程序不被认为是内部的
  • 你设置了观众吗?
  • @guillaumeblaquiere 我按照我通常使用的方法将其留空,它会自动填充观众。将其设置为与云函数 url 相同。
  • @FerreginaPelona 我没有明确设置 - 我将不得不阅读如何做到这一点。

标签: google-cloud-functions


【解决方案1】:

我今天重温了这个。我的受 IAP 保护的 HTTP 函数期望将查询字符串参数传递给它。 Cloud Platform Web UI 在创建计划作业时自动将受众设置为相同的 URL(包括参数)。我想 Google 知道他们在做什么,所以我最初就这样离开了。

出于绝望,我尝试从观众中删除此参数,这使得身份验证正常工作。

所以,我把观众从

https://<myProject>.cloudfunctions.net/myFunction?p=abc

https://<myProject>.cloudfunctions.net/myFunction

【讨论】:

    猜你喜欢
    • 2019-04-10
    • 1970-01-01
    • 2019-10-30
    • 2019-11-30
    • 1970-01-01
    • 2020-09-09
    • 2016-07-15
    • 2019-04-11
    • 1970-01-01
    相关资源
    最近更新 更多