Firebase 如何设置 Cloud Functions 的默认身份验证?

How does Firebase set a Cloud Function's default Authentication?

我有一个 Web 应用程序,我已将其部署到多个 Firebase 项目(即开发、暂存、生产)。它的后端功能使用 Cloud Functions for Firebase。

最近,在部署到新环境后,我开始收到其中一个函数的 CORS 错误。经过一番搜索后,我发现 Cloud Functions panel 中的身份验证设置会影响这一点,在这种情况下,让所有用户都可以访问该函数解决了我的 CORS 问题。

在 Functions 控制台中,我注意到大多数(但不是全部)我的 Firebase 函数默认将身份验证设置为“允许未经身份验证”。然而,奇怪的是,在不同的环境(即开发与暂存)中,一个函数可能被设置为允许未经身份验证,但在其他环境中则不会(即使我从未手动更改任何这些设置)。

本质上,我的问题是,这些设置是如何确定的?我只通过 firebase deployfirebase deploy --only functions 部署了我的函数。这里的预期行为是什么?通过 Firebase 部署的 Cloud Functions 是否应该默认设置为“允许未经身份验证”,而那些不只是在部署过程中遇到某种错误?

Are Cloud Functions deployed via Firebase expected to be set to "Allow unauthenticated" by default?

是的,这就是 Firebase CLI 所做的,它允许在没有 Google IAM 的情况下调用函数。这是对支持移动或 Web 应用程序的代码的期望,因为它们不会使用 IAM。

该设置与 CORS 无关。 CORS 在函数的代码中完全在您的控制之下。