firebase - 云功能错误:禁止,除非我向所有用户打开功能
问题描述
这是一个位于 Firebase 托管的网页,通过重写云功能动态提供服务
浏览 url 时,我收到“错误:禁止您的客户端无权从该服务器获取 URL [/theURL]。
只要我通过 GCP 控制台在函数上添加了“allUsers”作为云函数调用程序,一切正常。我已经通过测试证实了这一点,只需抛出一个开关并得到两个不同的结果。
我使用与 GCP 项目所有者相同的 Google 帐户登录 Chrome 浏览器
我使用同一个 Google 帐户登录到我的 Firebase 网站(Firebase 身份验证和 Firestore 角色管理),并使用 Firebase __session cookie 等。
当我将我的 Node.js 引擎从 8 升级到 10 时,这开始了,谷歌最近警告他们正在放弃对 8 的支持。(我假设,但没有真正的想法,版本 8 运行时环境没有此功能?)
我在没有任何 GCP 身份验证知识的情况下编写了这些 Cloud Functions,因此我相对确信我在 Cloud Functions 中的编码是安全的,但如果我可以/应该使用另一层安全性,我完全赞成。
我希望这个网站可以公开访问,但如有必要,我可以将功能细化为公共与非公共。(基本上,我将它们编写为所有可公开访问且内部经过身份验证/保护的内容。)
我对 GCP 身份验证要求一无所知,因此我很难将其归结为一个核心问题,但这里有一些我知道我不知道的问题:
- 是否应将 Firebase 托管作为成员添加到 GCP 的身份验证组,以便 GCP 仅允许为重写请求提供云功能服务?这似乎是最安全和最直接的方法。
- 当我是整个 doggone 项目的所有者时,为什么 GCP 会告诉我我被禁止?这是否与 Firebase 重写或 HTTP 请求是匿名的有关?如果是这样,那么如何对云功能进行身份验证呢?
对不起,问题的范围很广;非常感谢任何正确方向的指导。
解决方案
GCP allUsers 与 Firebase 身份验证无关。他们处理不同的用户集。函数应具有 GCP allUsers 调用者权限,以便允许从用户使用 Firebase 身份验证登录的 Web 和移动应用程序进行访问。GCP 不会检查 Firebase 用户 - 如果需要,这取决于使用 Firebase Admin SDK 的功能。
推荐阅读
- java - Kafka Streams 在多个流中拆分 1 个流
- java - 带有 REST API 的文件附件
- image - 为什么可以显示带有“image/jpeg”数据 URL 的 base64 编码的 PNG?
- c - 如何在 Linux 中使用 GLFW 编译文件?
- php - 如何使用 select2 和 Laravel 默认选择多个选项
- c - 从父进程获取结果后如何从子进程获取输入
- c++ - C++ 中的 While 循环结束,但不会继续执行其余语句
- python - 从熊猫数据框中的句子列表中删除标点符号
- java - 验证http get的返回值
- sql - 如何防止无效数据插入SQL