如何以安全的方式从 Cloud Tasks 调用 Firebase 函数?

Posted

技术标签:

【中文标题】如何以安全的方式从 Cloud Tasks 调用 Firebase 函数?【英文标题】:How to call a Firebase Function from Cloud Tasks in a secure manner? 【发布时间】:2021-12-18 17:26:27 【问题描述】:

我遵循了Using Cloud Tasks to Trigger Cloud Functions 中的 Google 示例代码。我可以使用具有工作服务帐户电子邮件和受众的 OIDC 令牌配置将任务作为 HTTP 请求添加到队列中(Cloud Tasks 库不允许您发布无效配置),但是在处理任务时它会失败身份验证错误。

首先,我必须修改示例代码,以便观众是 Firebase 项目 ID,因为这是 Firebase 抱怨的第一件事。一旦我解决了这个问题,我就开始收到有关无效发行人的错误。你不能在 oidcToken 配置中设置颁发者,所以这是一个死胡同。

有人能够让 Cloud Tasks 与 Firebase Functions 一起使用吗?

【问题讨论】:

【参考方案1】:

能够解决这个问题。

首先,我在 Firebase 函数中使用了 onCall,而正确使用的函数是 onRequest。我假设前者使用 Firebase SDK 访问令牌来授权调用者,而后者使用服务令牌。

我遇到的第二个问题是,观众需要是 complete 函数 URL,而不是文档所说的 URL 的来源。之后一切都好。

【讨论】:

✅ 谢谢你的第二点,彼得! ? 在尝试了我能想到的所有设置后,这有助于解决问题。 The documentation 还声明 如果未指定,将使用 target 中指定的 URI,所以当我完全离开 audience 字段时,事情就开始起作用了。

以上是关于如何以安全的方式从 Cloud Tasks 调用 Firebase 函数?的主要内容,如果未能解决你的问题,请参考以下文章

ImportError:无法从“google.cloud”导入名称“tasks_v2”

Spring Cloud中如何保证各个微服务之间调用的安全性(下篇)

Cloud Tasks + Cloud Functions - 重复执行

从 Cloud Tasks 触发 HTTP Cloud Function 时出现 PERMISSION_DENIED 403 错误

Google Cloud Tasks 无法向 Cloud Run 进行身份验证

Cloud Tasks 条件执行