javascript - Firebase Admin SDK 或客户端是否应该处理令牌刷新?
问题描述
我正在尝试在我的服务器上使用 firebase 进行身份验证,并为不需要拉入 firebase 客户端(目前)的用户提供身份验证体验。
/login
端点接收用户名和密码。使用firebase.auth().signInWithEmailAndPassword
,然后我将 JWT 令牌返回给用户。然后,他们可以在对我的 RESTful API 的后续请求中使用它作为不记名令牌。
我正在努力解决的问题是该令牌何时到期(一小时后)。当请求进入需要身份验证验证时,我的部分流程是使用 验证令牌admin.auth().verifyIdToken
,如果不再有效则拒绝该请求。
是否正确:
(1) 在初始登录时也向客户端提供refresh
令牌,以便他们可以处理拒绝,然后请求新的 JWT 令牌?(2) 在 admin SDK 上执行一些操作以代表用户刷新令牌
在我之前使用过的典型 oauth 场景中,客户端始终负责刷新令牌,但是我终其一生都无法弄清楚如何使用 theadmin SDK
或firebase SDK
我不知道通常驻留在客户端的 firebase SDK 是否在与firebase.database
等一起使用时在后台处理此令牌刷新。如果我不使用该客户端 SDK,而是使用令牌作为不记名令牌,我可以让客户端传递刷新令牌以从后端交换新的 JWT 令牌吗?
它可能正盯着我的脸,我只是没看到。
解决方案
Firebase 身份验证 SDK 将刷新令牌与 ID 令牌一起保存在客户端代码中,然后在需要时使用前者生成新的 ID 令牌(当前令牌过期前大约 5 分钟)。
推荐阅读
- php - 如何使用 php 将数据发布到网页表单并获得响应
- c# - 如何使用 C# 通过 Microsoft Graph 使用模板 educationClass 创建团队
- react-native - 如何在单个 API 调用中多次使用相同的 GraphQL 查询。放大,DynamoDB
- c++ - 如何使用cpp在qt中的sqlite数据库中获取一行
- reactjs - React Router 在受保护的路由上显示空白屏幕
- python - 使用 python dict 值在键部分添加数字
- java - 根据数据库记录(占位符)从动态json对象中获取值(真实值)并用真实值替换占位符
- android - Android:有没有办法在一个页面上使用相同的片段两次?
- javafx - 如何获取屏幕上显示的节点的物理像素大小?
- micronaut - 注释处理器和 Micronaut 2.0 事务的问题