在客户端级别(而非最终用户级别)保护 Firebase REST API

Posted

技术标签:

【中文标题】在客户端级别(而非最终用户级别)保护 Firebase REST API【英文标题】:Secure Firebase REST APIs at a client level (not end user level) 【发布时间】:2021-08-19 23:14:29 【问题描述】:

我正在尝试创建一个 REST API(通过 Firebase 云函数)并将其发布给我的客户,以便他们创建自己的移动应用程序。他们将创建的移动应用程序由公共用户使用。但是,用户不应该处理我们的 API 和身份验证。所以我不需要最终用户身份验证。由我们的客户(应用程序制造商)决定使用 “client id”“api key”。 根据我的研究,Firebase Admin SDK 可能不是一个好的解决方案,因为我们担心客户端级别的身份验证。

我正在寻找一种标准解决方案来为第 3 方客户端生成 api 密钥。此密钥生成不是手动过程,而是客户端用于获取密钥的服务。类似于 google map api 之类的面向 3rd 方开发人员的东西。我们希望跟踪列入白名单的客户,而不需要他们的应用用户处理身份验证。

感谢您提供建议和指导,为我们的 REST API 找到最佳解决方案。

【问题讨论】:

【参考方案1】:

我想到的第一个解决方案是新的Firebas App Check。它会限制您为项目列入白名单的应用程序和网页之外的任何访问。我不知道这在您的用例中是否可行(与其他应用程序的合作情况如何),但我肯定会先尝试一下。

【讨论】:

感谢您的回复。我已经检查过了。但是,我正在寻找一种为新客户生成 api 密钥的标准方法。据我了解,App Check 更多的是查明请求是否来自真实设备。 您可以使用 App Check 来限制从任何其他不属于您(链接到您的项目)的应用或网站访问您的 Firebase 服务。 我需要以编程方式允许新客户将自己添加到白名单中。通过 AppCheck 是不可行的。你知道怎么做吗?

以上是关于在客户端级别(而非最终用户级别)保护 Firebase REST API的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 AppSync GraphQL 转换为双向一对多 @connection 执行字段级别 @auth?

将 JSON 解码为 Swift 模型而非根级别

安全保护能力是什么意思?等保不同级别保护能力分别是怎样?

安全保护能力是什么意思?等保不同级别保护能力分别是怎样?

在SQL数据访问中如何对不同级别设置访问权限

安全组在啥级别提供保护