You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase Admin SDK verifyIdToken为何能验证任意Firebase项目的Token?

为什么FirebaseAuth.getInstance().verifyIdToken()可以验证所有Firebase项目的ID Token

Firebase Admin SDK的verifyIdToken方法默认仅执行JWT的基础合法性校验,规则如下:

  • 校验JWT签名是否匹配Google公开的签名公钥
  • 校验JWT是否在有效期内
  • 校验JWT的签发者iss字段是否符合https://securetoken.google.com/<Firebase项目ID>的格式
  • 校验JWT的受众aud字段非空

默认逻辑不会校验aud/iss字段是否和当前Admin SDK配置的服务账号所属项目一致,只要是合法的Firebase签发的ID Token都能通过校验,属于设计正常行为。

如果需要限制仅当前项目的ID Token可通过验证,在调用verifyIdToken得到解析后的Token对象后,需要额外增加两层校验:

  • Token的aud字段必须等于你的后端关联的Firebase项目ID
  • Token的iss字段必须等于https://securetoken.google.com/你的Firebase项目ID
    不符合上述规则的Token直接判定为验证失败即可。
三个项目返回的JWT kid参数相同是否属于配置遗漏

不属于配置遗漏,属于正常现象。
kid是密钥ID,用于标识JWT签名使用的是Google公钥池中的哪一个密钥。所有Firebase项目的ID Token签名都复用Google统一维护的公共签名密钥池,不同项目签发的JWT如果恰好使用了同一个密钥进行签名,kid值就会完全一致。
不要使用kid作为JWT所属项目的判断依据,项目归属必须通过aud和iss字段校验实现。


内容的提问来源于stack exchange,提问作者Eric

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 03:39:03