Firebase身份验证令牌持久性安全风险

Firebase身份验证令牌持久性安全风险,firebase,firebase-authentication,Firebase,Firebase Authentication,当前设置 我正在为我的后端使用云函数和管理sdk。前端是React、Firebase Auth(web sdk)和redux Firebase的组合,用于身份验证。目前,我强制对react应用程序特定组件的每个请求进行令牌刷新,并将令牌保存到本地存储 推理 起初,我认为我可以简单地在前端的index.js中监听身份验证状态的变化,然后相应地刷新令牌,即firebase.auth()。onAuthStateChanged我的应用程序上的一些过程可能需要相当长的时间(即上传内容)我注意到,除了初始登

当前设置

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

推理

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

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

问题

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

是否有更好的方法来持久化令牌

您应该使用来监听用户ID令牌随时间的变化。它的工作原理类似于onAuthStateChanged,只不过您可以获得fed ID令牌。它会根据客户端SDK的需要自动更新。您可以存储最新的令牌以便在调用中使用,而无需每次使用API调用获取令牌

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


不是真的。刷新ID令牌是必要的,而且Auth SDK在内部自动执行此操作。

Doug,这就成功了。一如既往,我感谢你的帮助!