私有服务器的Firebase身份验证

时间:2018-09-09 11:58:45

标签: firebase-authentication flutter lumen

我正在开发一款Flutter应用程序,并希望使用Firebase身份验证服务来使我的用户使用以下方式进行注册/登录:

  • 电子邮件/密码
  • google
  • facebook

我有一个带MySQL数据库的流明后端REST服务器。

问题:浏览大量的Firebase文档,我无法理解其工作原理的整个流程。

我可以使用该应用成功创建用户,并且这些用户会出现在firebase控制台中,但是,我不知道如何使他们能够安全地与我的后端服务器通信。

我希望Firebase能够像我的AWS cognito一样为我发布访问和刷新令牌,以用于我在应用程序和后端之间的私有通信。相反,它发出的是JWT令牌的“ ID令牌”,应在后端进行验证。但是,一旦验证了怎么办?

如何将数据库中的用户链接到经过身份验证的用户?存储在数据库中以映射到已认证用户的东西是什么?

我是否必须通过Admin SDK生成自定义令牌?

ID令牌是应该在每次请求时从客户端传递到后端然后进行验证的东西吗?但是,从ID令牌到我的数据库又该如何放置以将经过身份验证的用户与其数据链接起来?

1 个答案:

答案 0 :(得分:5)

这就是我现在的做法。效果很好。

  1. 在您的后端服务器上安装Firebase admin sdk(如果您使用的是php),这是我遵循并可以正常工作的内容:PHP Firebase Admin sdk
  2. 使用客户端(app)中的firebase SDK
  3. 获取firebase idToken ,我为此使用了Firebase auth package
  4. idToken 发送到您的后端
  5. 使用Admin SDK验证 idToken ,如果验证成功,您将返回一个Firebase用户对象。并且您可以对其执行各种管理操作(修改,删除,获取不同的数据等)。
  6. 从Firebase用户
  7. 获取 uid
  8. 在数据库中存储 uid
  9. 现在,每当这个经过身份验证的用户向您的后端服务器发出请求时,您都将 idToken 附加到请求的标头。
  10. 每次验证(请参阅步骤4)后端服务器上的 idToken 时,如果验证成功,则提取uid以知道要在数据库中查询哪个用户。

欢迎对此发表任何评论/改进:)