【问题标题】:Schedule a Google Cloud Function with both custom header and OIDC token使用自定义标头和 OIDC 令牌调度 Google Cloud Function
【发布时间】:2022-01-02 22:03:24
【问题描述】:

我部署了一个 Google Cloud Function,它需要身份验证才能执行。 然后,我使用 Google Cloud Scheduler 安排了这个功能,并设置了 authentication through OIDC token,这基本上是调度的 HTTP POST 中的一个身份验证标头。

现在,我也想为 Cloud Function 提供一些自定义参数,使用 Cloud Scheduler 中的正确标头,但似乎不起作用。

恐怕是here所说的造成的,即覆盖了身份验证标头。

有人遇到过同样的问题吗? 怎么解决?

谢谢

【问题讨论】:

  • 作为一个我发现在正文中显式参数的解决方案(例如 {"n_round": "2"}),并强制输入Cloud Scheduler Content-Type=application/json。然后我使用以下命令在 Cloud Function 正文中读取我的参数:n_round = request.get_json(silent=True)['n_round']

标签: authentication google-cloud-functions header openid-connect google-cloud-scheduler


【解决方案1】:

您可以使用 Cloud Scheduler 中的标头添加所需的标头,但激活 OIDC 身份验证时自动设置的 Authorization 标头除外。

如果需要,您也可以在正文中放置一些参数,这一切都取决于您要读取数据的位置(标题或正文。)


编辑 1

我有一个 Cloud Run“记录器”来简单地记录请求的标头/正文。它在我的测试期间有效,我有 2 个自定义标头 + 自动设置的授权标头。看看:

【讨论】:

  • 是的,我终于通过在body里面放参数解决了。不幸的是,在 Cloud Scheduler 中使用 Headers 似乎不起作用,至少在与 OIDC auth 结合使用时。我尝试同时使用 request.args 和 request.headers 来检索这些参数;他们都没有。恐怕 OIDC 身份验证也会覆盖它们。
  • 它在标题和授权方面对我有用。当然,授权头是保留的,但是其他头可以随意设置。
  • 你是对的,我检索标题的方式是错误的。在函数体中获取 headers 的正确方法是:request.headers['param']。谢谢纪尧姆
猜你喜欢
  • 2021-01-01
  • 2018-02-01
  • 2019-12-31
  • 1970-01-01
  • 2020-03-03
  • 2017-12-17
  • 2020-05-20
相关资源
最近更新 更多