首页 > 解决方案 > Firebase Admin SDK 或客户端是否应该处理令牌刷新?

问题描述

我正在尝试在我的服务器上使用 firebase 进行身份验证,并为不需要拉入 firebase 客户端(目前)的用户提供身份验证体验。

/login端点接收用户名和密码。使用firebase.auth().signInWithEmailAndPassword,然后我将 JWT 令牌返回给用户。然后,他们可以在对我的 RESTful API 的后续请求中使用它作为不记名令牌。

我正在努力解决的问题是该令牌何时到期(一小时后)。当请求进入需要身份验证验证时,我的部分流程是使用 验证令牌admin.auth().verifyIdToken,如果不再有效则拒绝该请求。

是否正确:

(1) 在初始登录时也向客户端提供refresh令牌,以便他们可以处理拒绝,然后请求新的 JWT 令牌?(2) 在 admin SDK 上执行一些操作以代表用户刷新令牌

在我之前使用过的典型 oauth 场景中,客户端始终负责刷新令牌,但是我终其一生都无法弄清楚如何使用 theadmin SDKfirebase SDK

我不知道通常驻留在客户端的 firebase SDK 是否在与firebase.database等一起使用时在后台处理此令牌刷新。如果我不使用该客户端 SDK,而是使用令牌作为不记名令牌,我可以让客户端传递刷新令牌以从后端交换新的 JWT 令牌吗?

它可能正盯着我的脸,我只是没看到。

标签: javascriptfirebase-authentication

解决方案


Firebase 身份验证 SDK 将刷新令牌与 ID 令牌一起保存在客户端代码中,然后在需要时使用前者生成新的 ID 令牌(当前令牌过期前大约 5 分钟)。


推荐阅读