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

MongoDB自定义JWT认证报错'aud'声明未找到'hrms-dev'如何解决?

MongoDB + Firebase自定义JWT认证报错解决方案
  • 核对JWT的aud声明值:Firebase默认生成的自定义JWT的aud为https://identitytoolkit.googleapis.com/google.identity.identitytoolkit.v1.IdentityToolkit,你需要在生成JWT的代码中手动指定aud为你配置的hrms-dev,Node.js环境下使用Firebase Admin SDK生成的示例代码如下:
const additionalClaims = {
  // 你需要的自定义元数据字段
  email: "user@example.com"
}
const customToken = await admin.auth().createCustomToken(uid, additionalClaims, {
  audience: "hrms-dev"
})
  • 核对JWT的iss(签发者)声明:MongoDB配置的JWT提供商签发地址必须和JWT的iss完全一致,使用Firebase作为签发方时,iss固定为https://securetoken.google.com/<你的Firebase项目ID>,请替换为你实际的Firebase项目ID后填入MongoDB提供商配置的签发者字段。
  • 核对签名验证公钥配置:MongoDB验证JWT签名需要用到Firebase的公钥,推荐使用JWKS URI进行配置,Firebase官方固定JWKS地址为https://www.googleapis.com/service_accounts/v1/jwk/securetoken@system.gserviceaccount.com;如果选择手动上传公钥,请确保上传的是Firebase服务账号对应的公钥,无多余换行、空格等格式错误。
  • 核对元数据字段映射:MongoDB中配置的用户字段映射,必须和JWT payload中的字段名完全一致,例如你配置使用email作为用户唯一标识字段,则JWT payload中必须存在email字段且值不为空。
  • 检查JWT生效/过期时间:MongoDB会自动拒绝已过期、还未到生效时间的JWT,请确保生成JWT时exp(过期时间)和nbf(生效时间)配置正确,同时排查服务器时间差导致的验证失败问题。
  • 规避ID Token的默认配置问题:如果你使用Firebase客户端SDK生成的IDToken直接访问MongoDB,其默认aud为你的Firebase项目ID,不符合你配置的hrms-dev要求,需要在后端用Admin SDK生成符合要求的自定义JWT后再用于MongoDB认证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:06:05