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

如何生成Firebase Auth令牌用于Golang Admin SDK单元测试

Firebase Go Admin SDK 单元测试生成验证令牌的两种方案

方案1:使用Firebase Auth模拟器生成(推荐,最贴近真实场景)

这个方案不需要处理签名密钥逻辑,校验逻辑和生产环境完全一致:

  • 本地启动Firebase Auth模拟器,提前设置环境变量FIREBASE_AUTH_EMULATOR_HOST为模拟器地址(默认值为localhost:9099)
  • 先调用Admin SDK的CustomToken方法生成指定UID的自定义令牌:
customToken, err := client.CustomToken(context.Background(), "test-user-uid-001")
if err != nil {
  // 处理错误
}
  • 向模拟器接口发送POST请求,把自定义令牌兑换为可直接用于校验的ID令牌,请求地址为http://{FIREBASE_AUTH_EMULATOR_HOST}/www.googleapis.com/identitytoolkit/v3/relyingparty/verifyCustomToken?key=dummy_key,请求体为{"token":"刚生成的自定义令牌","returnSecureToken":true},返回结果中的idToken字段就是可用的测试令牌
  • 此时调用VerifyIDToken方法会自动识别模拟器环境,跳过真实公钥校验,直接向模拟器完成令牌验证,无需额外配置

方案2:本地自签名生成(无外部依赖,适合轻量单元测试)

如果不想启动模拟器,可以自行构造符合Firebase ID令牌规范的JWT用于测试:

  • 构造JWT payload必须包含以下字段:
    • iss:固定值为https://securetoken.google.com/你的Firebase项目ID
    • aud:值为你的Firebase项目ID
    • sub:测试用户的UID,也就是你后续要提取的字段
    • iat:令牌签发时间戳(Unix时间)
    • exp:令牌过期时间戳,建议设置为签发后1小时内
    • auth_time:用户认证时间戳,和iat一致即可
  • 用RS256算法,使用你自行生成的RSA密钥对签名生成JWT
  • 初始化Firebase Auth客户端时,自定义拦截公钥请求的HTTP客户端,直接返回你生成的RSA公钥,即可让VerifyIDToken正常校验本地生成的令牌

注意:自签名方案仅限单元测试使用,严禁上线到生产环境

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:15:03