firebase - 将 Firebase 与自定义身份验证 (JWT) 结合使用
问题描述
我目前有一个完全运行的前端(Swift、iOS)和后端(node.js)。我现在正在研究我的应用程序某些部分的实时更新,我决定使用 Firebase,因为它允许我快速部署并在以后轻松扩展。
但是,由于我已经有一个完整的后端设置,它对用户进行身份验证并发送回一个令牌 (JWT),我想知道如何对 Firebase 使用相同的身份验证。想法是根据用户 ID 在 Firebase 中设置自定义规则,并使用此用户 ID(它只是一个常规 ID,例如我的用户 ID 是 1,而不是 UUID)在实时数据库和 Firestore 中创建集合。
我已经阅读了关于自定义令牌的文档,但我有几个问题:
- 我可以在不使用 Firebase 身份验证的情况下使用它来登录用户吗?或者这也会在 Firebase Auth 中创建一个用户?
- 我只能在最大到期时签署 JWT。从现在开始还有 60 分钟,所以一小时。这是否意味着我必须每小时重新进行身份验证?我该怎么办?我当前的应用程序授予有效期为 21 天的 JWT。
- 我应该为 Firebase 使用与我的整个应用程序相同的 JWT,还是应该生成一个新的 JWT 并将其也发回,主要目的是在我的 Swift 应用程序中将它用于 Firebase Auth?
解决方案
JWT 需要使用 Google 提供的一组不同的密钥生成,以便 Firebase 验证 JWT。您不能使用由现有服务器上的另一组密钥签名的现有 JWT。
但是您可以做的是使用您现有的用户 ID 并在为现有系统签名密钥的同时使用 Google 的密钥对其进行签名,最终得到 2 个您传递给客户的 JWT。
推荐阅读
- flutter - ParentDataWidget的错误使用“与其他人不相似”
- postgis - 为什么 ST_Distance_Spheroid() 比 ST_Distance_sphere() 快?
- processmaker - 安装后processmaker登录页面出错
- python - pyspark 的用户定义函数 (UDF) 是否需要单元测试?
- rust - Rust LinkedList 第二个可变借用,同时将第一项移动到末尾
- reactjs - React-router history.push 实际上并没有重定向
- php - 在 laravel 中返回多对多关系结果,如果不存在则返回 null
- node.js - npm 错误!执行 npm install 时的代码 1
- python - 如何解决这个 chrome webdriver 错误?
- python - 如何在pyspark中为以下情况使用if条件?