我有一个关于firebase身份验证的问题。实际上,我正在为我的公司制作一个 Jmeter 板,我将在firebase中主持它。我想限制电子邮件认证仅限于我的公司域名(例如:cat.com)。但我浏览了stackoverflow的答案,发现我可以在数据库中强加规则。但问题是,我将调用外部数据库fetcj数据使用firebase功能,并提供给网站( Jmeter 板)。因此,没有特定领域的规则将适用于那里。下面是我的 Jmeter 板架构的概要
我怎样才能做到这一点?我希望人们x@cat.com“将能够验证和查看 Jmeter 板数据
2条答案
按热度按时间wsewodh21#
如果您的公司通过“使用谷歌登录”使用gsuite和logins
firebase的google登录是建立在普通google登录的基础上的,其中的一个问题是当他们在gcp中创建一个新的oauth2.0客户端时。这将被命名为
Web client (auto created by Google Service)
此客户端自动链接到oauth同意屏幕,您可以在其中提及应用程序的显示名称,并将其限制为组织中具有google帐户的用户
如果您的公司使用电子邮件和密码登录
最简单的方法是通过firebase后台auth触发器立即检查组织电子邮件
onCreate
正如本在回答中提到的。如果该帐户不属于您的组织-请立即删除它。这会让恶意用户暂时访问您的系统。为了进一步保护,您可以为您的组织用户设置自定义声明(当他们在firebase函数中注册时)&确保对firestore/real-time数据库的每个请求都检查了这些自定义声明。类似地,在调用数据库之前,可以在firebase函数中检查自定义声明
t3psigkw2#
案例1:用户已经创建了自己的帐户,您希望将一个云功能限制为特定的电子邮件地址。
您可以获取与云函数调用相关联的用户信息,并查看他们的电子邮件。如果外部数据库具有正确的电子邮件域,则可以调用它们。您还应该做一些ui更改,这样用户在没有错误的情况下就不会出现错误
@cat.com
.案例2:限制firebase项目中的所有用户发送包含以下内容的电子邮件
@cat.com
?如果是这样的话,你就不能在firebase身份验证中直接限制电子邮件,所以你必须在云函数后面添加用户注册码,在那里创建用户帐户。你可以在他们注册时查看他们的电子邮件。
您可以在云函数中使用firebase管理sdk来实现这一点。文件
客户端将使用所需的电子邮件和密码调用云函数,然后再调用此函数
.createUser
,并且您可以在使用创建用户之前检查正确的电子邮件"dog@cat.com".toLowerCase().endsWith("cat.com")
.另外,使用电子邮件域作为访问控制的一种形式听起来不是一个好主意。在帐户创建过程中,您可以根据电子邮件手动添加对用户文档的访问。当你想给某人一封电子邮件,但不想让他们访问数据库时会发生什么?