首页 > 解决方案 > Firebase httpsCallable 与“允许未经身份验证”的云功能

问题描述

我有一些通过 httpsCallable 调用的 HTTP 函数。我注意到在 GCloud UI 中,它们以authentication: Allow unauthenticated.

当您通过 httpsCallable 调用 HTTP 函数时,会自动包含用户身份验证令牌并为接收端解码。

我认为允许未经身份验证的函数调用一定是一件坏事,所以我从allUsers组中删除了 IAM 策略,如此处所述但是这样做我的应用程序停止工作,给我如下错误:

[错误] 预检响应不成功

[错误]由于访问控制检查,Fetch API 无法加载https://europe-west2-my-project-dev.cloudfunctions.net/someFunction 。

我是否需要允许所有用户调用我的函数,即使它们是由已经通过 Firebase 身份验证的用户使用 httpsCallable 调用的?

我觉得这很混乱,所以希望有人可以解决这个问题。

标签: firebasefirebase-authenticationgoogle-cloud-functions

解决方案


Google Cloud Platform 的 IAM 访问控制不了解 Firebase 身份验证用户。

由于 Callable Cloud Functions 与 Firebase 身份验证的用户集成,您必须允许所有用户访问 GCP 基础架构级别才能使用它们。然后在您的 Cloud Functions 代码中,检查 Firebase 身份验证用户是否有权执行该操作。

我同意,如果您也可以锁定 GCP IAM 层中的 Firebase 身份验证用户组,那会很酷,但目前情况并非如此。


推荐阅读