私有服务器的 Firebase 身份验证

Firebase authentication for private server

我正在开发一个 flutter 应用程序并希望使用 Firebase 身份验证服务使我的用户能够 signup/login 使用:

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

问题:浏览大量的 firebase 文档,我无法理解它应该如何工作的整个流程。

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

我希望 Firebase 为我发布一个访问和刷新令牌,用于我在应用程序和后端之间的私人通信,就像 AWS cognito 所做的那样。相反,它发出一个 "ID Token" 是 JWT 令牌,应该在后端进行验证。但是一旦验证了我该怎么办?

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

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

或者 ID Token 是应该在每次请求时从客户端传递到后端然后进行验证的东西吗?但是,我如何从这个 ID 令牌到我的数据库向 link 经过身份验证的用户提供他们的数据?

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

  1. 在您的后端服务器上安装 Firebase admin sdk,如果您使用的是 php,这是我遵循并完美工作的方法:PHP Firebase Admin sdk
  2. 在您的客户端(应用程序)中使用 firebase SDK 获取 firebase idToken,我为此使用了 Firebase auth package
  3. idToken 发送到您的后端
  4. 使用 Admin SDK 验证 idToken,如果验证成功,则它是 returns Firebase 用户 object。您可以对其执行各种管理操作(修改、删除、获取不同的数据等)。
  5. 从 Firebase 用户 object 获取 uid
  6. uid 存储在您的数据库中。
  7. 现在每次此经过身份验证的用户向您的后端服务器发出请求时,您将 idToken 附加到请求的 header。
  8. 每次验证(参见第 4 步)后端服务器上的 idToken,如果验证成功,您将提取 uid 以了解要在数据库中查询哪个用户。

欢迎任何 comments/improvements :)