【问题标题】:Should the Firebase Admin SDK or Client handle token refresh?Firebase Admin SDK 或客户端是否应该处理令牌刷新?
【发布时间】:2020-09-04 23:31:57
【问题描述】:

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

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

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

是否正确:

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

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

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

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

【问题讨论】:

    标签: javascript firebase-authentication


    【解决方案1】:

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

    【讨论】:

    • 好的。因此,由于我不能真正存储刷新令牌服务器端,如果我将它提供给客户端,他们可以在另一个安静的调用中使用它来请求一个新的 JWT 令牌,因为之前的调用失败了。更类似于通常的 oauth 流程。 admin 或 firebase SDK 中是否有 SDK 通过节点允许我在使用刷新令牌检索更新的 ID 令牌后创建新的 JWT 令牌?
    • ID 令牌已经是 JWT。另请参阅medium.com/@jwngr/…:“ID 令牌是短暂的 JWT”
    猜你喜欢
    • 2016-03-22
    • 1970-01-01
    • 2016-04-14
    • 2015-04-25
    • 2018-12-08
    • 2017-04-30
    • 2020-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多