6

在使用 Firebase 的 REST API 测试我们的一个产品(一个 Web 应用程序)的安全性时,当我们意识到在 Firebase 实现的 V3 中刷新令牌永不过期时,我们感到很惊讶,允许任何刷新令牌永远创建新令牌.

虽然本地存储在今天似乎是一个相当安全的解决方案,但我们担心它明天可能会失败,即使是很短的时间,而且我们无法阻止某人使用这些刷新令牌中的任何一个。

两因素身份验证将有助于缓解该问题,但第一步仍然会受到影响。

有没有办法使用 Firebase 将代币或类似行为列入黑名单,而不需要我们自己处理所有代币交换,例如铸币?我们在浏览文档时找不到这样的功能。

任何建议表示赞赏。

4

2 回答 2

5

身份验证会话不会因 Firebase 登录而过期。但是 ID 令牌必须每小时刷新一次,以保持对服务的访问。如果您禁用帐户,则刷新令牌将失败,并且该帐户将无法再访问服务。没有办法使单个令牌无效。

于 2017-05-19T14:09:06.447 回答
3

Firebase 最近revokeRefreshTokens()在 admin sdk 中实现。虽然这不会让你杀死一个无效的 JWT,但它确实允许你阻止刷新令牌(至少从我到目前为止的测试来看),它允许在 firebase 数据库中进行更清晰的控制流。

有关粗略示例,请参阅管理员管理会话

于 2018-02-07T06:24:06.250 回答