无法验证来自 Google Cloud Scheduler 的 HTTP 函数调用

Unable to authenticate HTTP function call from Google Cloud Scheduler

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

我已经在项目中创建了一个服务帐户,角色只有一个:Cloud Functions Invoker。

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

在作业中,我已指定我希望它获取 OIDC 令牌以验证对 http 函数的请求:

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

我尝试过的事情:

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

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

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

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

所以,我把观众从

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

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