使用Firebase身份验证服务对Twilio短信用户进行身份验证/授权

时间:2019-03-21 22:26:14

标签: node.js firebase firebase-authentication google-cloud-firestore twilio

我有一个使用Firebase身份验证,Firestore和Firebase云存储的Web应用程序。我还使用Google admin在Node.js中访问这些相同的资源。我使用google函数来创建自定义声明,以按用户角色进行更精细的授权。

我还为用户提供访问权限,以使用Twilio通过SMS来存储和读取云存储和Firestore DB中的图像和文档。我想使用Firebase授权服务,以根据授权用户的Firebase凭证,限制对云存储和Firestore DB部分的各种访问。我更喜欢继续使用Firebase进行身份验证和授权,因为我喜欢它,它易于使用,并且都在同一位置进行管理,非常适合我的需求。

设置应用程序的方式,用户必须先使用Firebase Auth在网站上进行身份验证,然后才能允许他们通过Twilio SMS发送消息。现在,当用户通过Web进行身份验证时,我在Firestore数据库中创建了基本用户信息(包括其auth UID),该过程还允许他们输入其Twilio电话号码和手机号码。当Twilio收到一条短信时,我检查该用户是否存在于Firestore中,如果不存在,则不允许他们继续。如果用户在数据库中,我让他们继续。

问题在于,即使使用Firestore凭据,也无法对sms用户(即使在Firestore dB中)进行身份验证,因此他们无法访问我已应用身份验证规则以确保它们是经过身份验证的用户的任何云存储或Firestore集合。我必须将这些Firebase规则留在“测试模式”下才能通过SMS读写这些位置。显然,这在现实世界中是行不通的。

在过去的几周中,我一直在进行大量研究,发现使用Auth0或Authy的关闭选项,但是我仍然不明白我遇到的简单问题-我想使用他们的身份验证Twilio SMS用户Firebase身份验证信息,因此他们具有其Firebase凭据,可用来控制他们对Firebase资源的访问。我认为需要某种方式来将Twilio用户映射到正确的Firebase身份验证用户的自定义令牌。正如我提到的那样,我很想得到这里和附近的其他Google搜索都非常接近的信息,但在他看来,解决方案还差得远。

0 个答案:

没有答案