微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

安全地为 Firebase 用户设置第一个自定义声明

如何解决安全地为 Firebase 用户设置第一个自定义声明

为所有 Firebase 用户设置第一自定义声明的标准、安全方式是什么?

Firebase 提供了一些很好的文档和示例来理解和使用自定义声明 - 例如this great video example -- 但大多数示例使用现有的自定义声明来授权创建其他自定义声明;截至本文,Firebase 控制台无法设置/编辑/查看自定义声明,也无法通过 CLI 设置自定义声明。

以下是我正在考虑的一些选项:

  • 创建一个独特的管理项目,服务帐号可以使用该项目通过 Firebase Admin SDK 创建自定义声明。
  • 如果执行了某个 Firebase 控制台操作,例如,使用 Cloud Function 执行自定义声明创建在无法通过安全规则访问的集合中创建 Firestore 文档。
  • 忽略创建第一个自定义声明的安全性;只有在这已经是对 Firebase 用户自定义声明之后才添加安全性。

您是否遇到过这个问题并更优雅地解决了它?

解决方法

没有真正的标准方法来设置自定义声明。如您所知,唯一的限制是它们只能由 Firebase Admin SDK 在特权服务器环境中设置,即从您的一台服务器中设置,或者通过 Cloud Function 更容易且更面向无服务器。

因此,在此限制范围内,您可以随心所欲。 IMO,您问题中的前两个选项完全有效且很好。我大约在一年前 (How to create an Admin module for managing Firebase users access and roles) 写过一篇文章,其中我们使用可调用的云函数来完成这项工作。今天,在我的大多数项目中,我更喜欢使用触发 Cloud Functions 的 Firestore 集合,但它或多或少是等效的(文章中的 Callable Cloud 函数实际上创建了一个 Firestore 文档)。

在本文中,我分享了创建第一个声明(我称之为管理员用户声明)的简单方法:使用临时 Cloud Functions 函数,您可以通过在临时、安全的 Firestore 集合中创建文档来触发该函数。不是一个非常详细和优雅的方法,但它可以完成工作......


关于您的第三个选项(“忽略创建第一个自定义声明的安全性”),我认为您不需要也不应该这样做。

您可以按照文章及以上所述进行操作。简而言之:

  1. 设置您的系统的访问权限仅限于具有 Admin Custom 声明的用户(例如,用于在专用 Firestore 集合中创建文档的安全规则,或检查调用方具有 Admin 声明的可调用云函数)
  2. 在 Auth 服务中创建管理员用户
  3. 通过上面详述的方法将管理员用户声明分配给他。

大功告成,没有安全漏洞。


最后,值得注意的是,今年 1 月推出了一个新的实验性扩展程序,专门用于使用 Firestore 设置声明。请参阅 herehere

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?