即使在 jwt 上,Firebase ID 令牌也具有无效签名

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 令牌。

  • 这个问题已经解决了吗?如果我们无法测试身份验证,我们该如何维护测试平台模拟器?有什么解决方法吗? (3认同)

emr*_*ins 7

要在 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,并使用您在生产身份验证中拥有的用户进行身份验证