没有 Firebase 身份验证的 Firebase 安全规则

Firebase Security Rules Without Firebase Authentication

我使用 Firebase 存储应用程序的实时状态更新。我有自己的用户登录身份验证系统。我想将我存储在 Firebase 上的数据分享给使用我们 API 的供应商,但我想确保他们对我们的数据只有读取权限。

根据我的阅读,似乎必须通过 Firebase 自己的身份验证系统来保护用户的数据。有没有办法在不使用他们的身份验证系统(可能通过令牌系统)的情况下做到这一点?

您绝对可以在您的应用程序代码中生成 Firebase 令牌,其中包含随后可能在 Firebase 安全规则中使用的自定义属性。查看 Firebase 文档中的 Generating a Secure Token

另请参阅 Can a Firebase Security Rule check if someone has specific access rights?, where @Frank van Puffelen 提供了更全面的基于角色的方法。

我最终使用了一个系统,其中供应商调用我的一个 API(受我自己的内部授权系统保护),returns 一个令牌,用户可以使用该令牌通过 Firebase 进行身份验证。

我使用 PHP 并且有一个由 Firebase 团队编写的令牌生成器 here. Don't forget the JWT PHP library 这个令牌生成器所依赖的。

令牌生成器将所谓的 Firebase 秘密(您可以在特定的 Firebase 实例页面中找到它)传递到其 class 构造函数和 returns 基于此秘密的随机令牌。