如何通过Firebase Auth Rest Api登出并禁用idToken?
怎么登出并禁用Firebase ID Token?
Firebase的ID Token是有效期1小时的无状态JWT,没法直接远程废掉单个Token,但可以通过以下两步实现彻底的登出+禁用效果:
1. 客户端本地清除Token
执行完增删操作后,先把客户端存储的idToken删掉,确保自己的应用不会再用这个Token发请求:
- Web端:删掉localStorage/sessionStorage里存的Token,比如
localStorage.removeItem('firebaseIdToken') - 移动端:清除对应存储介质里的Token记录
这一步能阻止你自己的客户端误用旧Token,但如果Token已经被别人拿到,这招没用,得配合下面的操作。
2. 调用Firebase Token撤销API废掉所有有效Token
Firebase提供了专门的API,可以把指定用户的所有当前有效Token都作废,哪怕别人已经拿到了Token,后续用它请求Realtime Database也会被拒绝。
调用这个API需要用到你登录时拿到的refreshToken(signInWithPassword接口返回的字段里有),具体请求如下:
POST https://securetoken.googleapis.com/v1/token?key=[你的API_KEY]
请求体为JSON格式:
{ "token": "[用户的refreshToken]", "token_type_hint": "refresh_token" }
调用成功后,该用户的所有ID Token(包括你刚使用的那个)都会立即失效,彻底解决Token被滥用的风险。
额外提醒
- 撤销操作是针对整个用户的,不是单个会话,也就是说这个用户在其他设备登录的Token也会一起失效;目前Firebase没有细粒度的单会话撤销支持,只能结合客户端清除+用户级撤销
- 务必妥善保管refreshToken,它既能用来刷新ID Token,也能用来执行撤销操作,泄露后会带来安全风险
- 如果业务对安全性要求极高,还可以在Realtime Database的规则里添加额外校验,比如结合设备信息、会话标识等,进一步限制Token的使用场景
内容的提问来源于stack exchange,提问作者Gurkan T
相关产品推荐
相关产品推荐

