私有服务器的 Firebase 身份验证
Firebase authentication for private server
我正在开发一个 flutter 应用程序并希望使用 Firebase 身份验证服务使我的用户能够 signup/login 使用:
- email/pass
- google
- 脸书
我有一个带 MySQL 数据库的 lumen 后端 REST 服务器。
问题:浏览大量的 firebase 文档,我无法理解它应该如何工作的整个流程。
我可以使用该应用程序成功创建用户,并且他们会出现在 firebase 控制台中,但是,我不知道如何让他们能够安全地与我的后端服务器对话。
我希望 Firebase 为我发布一个访问和刷新令牌,用于我在应用程序和后端之间的私人通信,就像 AWS cognito 所做的那样。相反,它发出一个 "ID Token" 是 JWT 令牌,应该在后端进行验证。但是一旦验证了我该怎么办?
我如何 link 我的数据库中的用户到经过身份验证的用户?存储在数据库中以映射到经过身份验证的用户的东西是什么?
我是否必须通过 Admin SDK 生成自定义令牌?
或者 ID Token 是应该在每次请求时从客户端传递到后端然后进行验证的东西吗?但是,我如何从这个 ID 令牌到我的数据库向 link 经过身份验证的用户提供他们的数据?
这是我现在的做法。效果很好。
- 在您的后端服务器上安装 Firebase admin sdk,如果您使用的是 php,这是我遵循并完美工作的方法:PHP Firebase Admin sdk
- 在您的客户端(应用程序)中使用 firebase SDK 获取 firebase idToken,我为此使用了 Firebase auth package。
- 将 idToken 发送到您的后端
- 使用 Admin SDK 验证 idToken,如果验证成功,则它是 returns Firebase 用户 object。您可以对其执行各种管理操作(修改、删除、获取不同的数据等)。
- 从 Firebase 用户 object 获取 uid。
- 将 uid 存储在您的数据库中。
- 现在每次此经过身份验证的用户向您的后端服务器发出请求时,您将 idToken 附加到请求的 header。
- 每次验证(参见第 4 步)后端服务器上的 idToken,如果验证成功,您将提取 uid 以了解要在数据库中查询哪个用户。
欢迎任何 comments/improvements :)
我正在开发一个 flutter 应用程序并希望使用 Firebase 身份验证服务使我的用户能够 signup/login 使用:
- email/pass
- 脸书
我有一个带 MySQL 数据库的 lumen 后端 REST 服务器。
问题:浏览大量的 firebase 文档,我无法理解它应该如何工作的整个流程。
我可以使用该应用程序成功创建用户,并且他们会出现在 firebase 控制台中,但是,我不知道如何让他们能够安全地与我的后端服务器对话。
我希望 Firebase 为我发布一个访问和刷新令牌,用于我在应用程序和后端之间的私人通信,就像 AWS cognito 所做的那样。相反,它发出一个 "ID Token" 是 JWT 令牌,应该在后端进行验证。但是一旦验证了我该怎么办?
我如何 link 我的数据库中的用户到经过身份验证的用户?存储在数据库中以映射到经过身份验证的用户的东西是什么?
我是否必须通过 Admin SDK 生成自定义令牌?
或者 ID Token 是应该在每次请求时从客户端传递到后端然后进行验证的东西吗?但是,我如何从这个 ID 令牌到我的数据库向 link 经过身份验证的用户提供他们的数据?
这是我现在的做法。效果很好。
- 在您的后端服务器上安装 Firebase admin sdk,如果您使用的是 php,这是我遵循并完美工作的方法:PHP Firebase Admin sdk
- 在您的客户端(应用程序)中使用 firebase SDK 获取 firebase idToken,我为此使用了 Firebase auth package。
- 将 idToken 发送到您的后端
- 使用 Admin SDK 验证 idToken,如果验证成功,则它是 returns Firebase 用户 object。您可以对其执行各种管理操作(修改、删除、获取不同的数据等)。
- 从 Firebase 用户 object 获取 uid。
- 将 uid 存储在您的数据库中。
- 现在每次此经过身份验证的用户向您的后端服务器发出请求时,您将 idToken 附加到请求的 header。
- 每次验证(参见第 4 步)后端服务器上的 idToken,如果验证成功,您将提取 uid 以了解要在数据库中查询哪个用户。
欢迎任何 comments/improvements :)