【问题标题】:Use Firebase with custom authentication (JWT)将 Firebase 与自定义身份验证 (JWT) 结合使用
【发布时间】:2019-12-08 06:21:09
【问题描述】:

我目前有一个完全运行的前端(Swift、iOS)和后端(node.js)。我现在正在研究应用程序某些部分的实时更新,我决定使用 Firebase,因为它可以让我在以后快速部署并轻松扩展。

但是,由于我已经有一个完整的后端设置,它对用户进行身份验证并发送回一个令牌 (JWT),我想知道如何为 Firebase 使用相同的身份验证。想法是根据用户 ID 在 Firebase 中设置自定义规则,并使用此用户 ID(它只是一个常规 ID,例如我的用户 ID 是 1,而不是 UUID)在实时数据库和 Firestore 中创建集合。

我已经阅读了docs on custom tokens,但我还有一些担忧:

  • 我可以在不使用 Firebase 身份验证的情况下使用它来登录用户吗?或者这也会在 Firebase Auth 中创建一个用户?
  • 我只能在 JWT 的最大期限内签名。从现在开始 60 分钟,所以一小时。这是否意味着我必须每小时重新进行身份验证?我该怎么办?我当前的应用授予有效期为 21 天的 JWT。
  • 我应该为 Firebase 使用与我用于整个应用程序的 JWT 相同的 JWT,还是应该生成一个新的 JWT 并将其也发回,主要目的是在我的 Swift 应用程序中将它用于 Firebase Auth?李>

【问题讨论】:

  • 是敏感数据吗?如果是,您需要使用 Firebase 身份验证。如果没有,将规则更改为公开
  • 当然。将用于小型的一对一聊天(问题>回答),所以我不希望任何人访问所有记录。那么 Firebase Auth 与我现有的身份验证系统并行吗?

标签: firebase firebase-realtime-database google-cloud-firestore firebase-authentication jwt


【解决方案1】:

需要使用 Google 提供的一组不同的密钥生成 JWT,以便 Firebase 验证 JWT。您不能使用由现有服务器上的另一组密钥签名的现有 JWT。

但您可以做的是使用您现有的用户 ID,并在为现有系统签名密钥的同时使用 Google 的密钥对其进行签名,最终得到 2 个 JWT,您将其传递给您的客户。

【讨论】:

    猜你喜欢
    • 2019-10-25
    • 2020-04-01
    • 2022-12-10
    • 2022-06-13
    • 2018-05-17
    • 2013-01-04
    • 1970-01-01
    • 1970-01-01
    • 2016-10-18
    相关资源
    最近更新 更多