【问题标题】:Firebase Auth Token Persistence Security RisksFirebase 身份验证令牌持久性安全风险
【发布时间】:2021-02-21 22:36:27
【问题描述】:

当前设置

我正在为我的后端使用云功能和 admin sdk。前端是 React、Firebase Auth (web sdk) 和 redux firebase 的组合,用于身份验证。目前,我为我的 react 应用程序的特定组件的每个请求强制刷新令牌并将令牌保存到本地存储。

推理

最初,我想我可以简单地在前端的 index.js 中监听身份验证状态的变化,然后相应地刷新令牌,即 firebase.auth().onAuthStateChanged 我的应用程序上的一些进程可能需要很长时间(即上传内容) 并且我注意到在初始登录或注销之外的任何时候都不会触发身份验证状态的更改。

例如,用户在令牌设置为过期前 1 分钟开始上传内容。上传后的最终 API 请求将失败,因为它们在令牌过期后完成。令牌没有得到更新,请求失败到我的后端,因为 403 未经授权。解决方案是在第一次加载这些组件时使用currentUser.getIdToken(true)。因此确保新令牌始终可用。

问题

这种方法是否存在安全风险?如果是,我该如何减轻它们,或者是否有更好的方法来持久化令牌?我很担心让用户能够无限期地刷新他们的令牌。

【问题讨论】:

    标签: firebase firebase-authentication


    【解决方案1】:

    有没有更好的方法来持久化令牌?

    您应该使用onIdTokenChanged 来监听用户 ID 令牌随时间变化的变化。它像onAuthStateChanged 一样工作,除了你得到了 ID 令牌。它会根据客户端 SDK 的需要自动更新。您可以存储最新的令牌以供您的调用使用,而无需每次都通过 API 调用来获取。

    这种方法是否存在安全风险?

    不是真的。刷新 ID 令牌是必要的,而且 Auth SDK 无论如何都会在内部自动完成。

    【讨论】:

    • 成功了,道格。一如既往,感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2013-02-12
    • 2012-09-24
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    • 2019-08-31
    • 2019-07-04
    • 2020-03-15
    相关资源
    最近更新 更多