如何以安全的方式从 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 错误