Gen*_*lah 13 node.js jwt firebase
Firebase ID 令牌的签名无效
大家好,我对 NodeJS 有点陌生,而且只使用过 Google Firebase 几次。现在,我尝试在用户注册或登录时验证使用getIdToken()方法生成的 idToken。令牌生成工作正常,但如果我尝试使用此令牌在另一条路线上授权用户admin.auth().verifyIdToken(idToken),则会收到此错误Firebase ID token邮递员的签名无效。我也尝试在 jwt.io 上验证令牌,它给出了错误Invalid Signature。
我尝试切换到不同的算法,有些算法最终使令牌在 jwt 上有效,但右下角通常有一个“验证签名”框,我真的不知道在那里填写什么。好吧,我尝试在更改算法后通过 jwt 复制不同的新生成的有效令牌,但我仍然得到Firebase ID 令牌具有来自 Postman 的无效签名。
有谁知道可能是什么问题?请帮忙。
Gen*_*lah 18
问题来自 Firebase 模拟器身份验证。Firebase 托管的身份验证无法验证 Firebase 模拟器身份验证生成的 JWT 令牌。
要在 jwt.io 上手动验证令牌,您需要从 google 获取公钥之一: https: //www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com
kid要选择正确的密钥,请从 jwt.io找到与您的密钥相对应的密钥。
粘贴正确的对应值,现在您的令牌应该正确验证(请务必清除所有\n字符):
为了更轻松地进行编程验证,“JWK URI”是https://www.googleapis.com/service_accounts/v1/jwk/securetoken@system.gserviceaccount.com
来源:https://firebase.google.com/docs/auth/admin/verify-id-tokens
小智 5
我同意Genius Hawlah 的回答,问题是 Firebase 模拟器身份验证。作为一种解决方法,我建议在没有 Auth 的情况下使用--only标志启动模拟器,例如firebase emulators:start --only firestore,functions,并使用您在生产身份验证中拥有的用户进行身份验证