【问题标题】:Firebase ID token has invalid signature even on jwt即使在 jwt 上,Firebase ID 令牌也具有无效签名
【发布时间】:2021-06-21 06:09:09
【问题描述】:

Firebase ID 令牌的签名无效

大家好,我是 NodeJS 的新手,我只使用过几次 Google Firebase。 现在,每当用户注册或登录时,我都会尝试验证使用 getIdToken() 方法生成的 idToken。令牌生成工作正常,但如果我尝试使用此令牌在另一条路线上授权用户 admin.auth().verifyIdToken(idToken),我在 Postman 上收到此错误 Firebase ID 令牌的签名无效。我也尝试在 jwt.io 上验证令牌,它给出了错误 Invalid Signature

我尝试切换到不同的算法,有些最终使令牌在 jwt 上有效,但右下角通常有一个 VERIFY SIGNATURE 框,我真的不知道该填写什么。好吧,我尝试在更改算法后通过 jwt 复制不同的新生成的有效令牌,但我仍然从 Postman 获得 Firebase ID 令牌具有无效签名

有谁知道可能是什么问题?请帮忙。

【问题讨论】:

  • 要在 jwt.io 上验证令牌,您首先需要选择算法,然后将密钥或公钥粘贴到右下方 VERIFY SIGNATURE 框中的字段中,然后将令牌粘贴到调试器的左侧部分。对于剩下的问题,如果不知道更多,就很难说清楚。但要进行验证,您总是需要密钥或公钥。
  • 您知道获取公钥或私钥的确切部分吗?感谢您的答复。 编辑另外,我正在关注的教程,Classed 的人没有遇到那个错误,他也没有提供或提到任何密钥。
  • 抱歉,不知道 firebase

标签: node.js firebase jwt


【解决方案1】:

问题来自 Firebase 模拟器身份验证。 Firebase 托管的 Auth 无法验证 Firebase Emulator Auth 生成的 JWT 令牌。

【讨论】:

    【解决方案2】:

    由于某种原因,在本地 Firebase 模拟器中使用时,verifyIdToken 函数每次都会为有效令牌抛出“Firebase ID 令牌具有无效签名”。我通过开始使用 firebase 托管身份验证而不是模拟器身份验证(从 firebase.json 中删除身份验证属性)解决了这个问题。另外,我向 Firebase 报告了这个错误。

    【讨论】:

      【解决方案3】:

      TLDR;

      dart:developer 中的log 优于 printdebugPrint


      我没有使用模拟器...

      我是 Firebase 的新手并且经历过这种情况,甚至将 GeniusHawlah's 投票为 Taras Mazurkevych's 答案...但在 Firebase 设置中找不到与我所做的模拟器相关的任何内容。

      碰巧我正在使用截断的 JWT 令牌测试我的 firebase,该令牌是从 Dart 的 debugPrint 打印的(limits truncates 输出) .我成功地使用了来自 dart:developerlog

      我被https://github.com/flutter/flutter/issues/22665#issuecomment-456858672启发了。

      【讨论】:

        【解决方案4】:

        我遇到了类似的问题,发现 BE 指向的是本地模拟器,但 FE 指向的是远程 Firebase Auth(因为代码中的错误 firebase.auth().useEmulator(...) 没有被调用)

        【讨论】:

          【解决方案5】:

          要验证 jwt.io 上的令牌,您需要从 https://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com 获取一个公钥(但是,“JWK URI”是 https://www.googleapis.com/service_accounts/v1/jwk/securetoken@system.gserviceaccount.com

          使用来自 jwt.io 的 kid 从上面的链接了解要使用哪个公钥

          粘贴正确的密钥(如果有\n 字符,请务必清除它们),它应该可以正确验证:

          来源:https://firebase.google.com/docs/auth/admin/verify-id-tokens

          【讨论】:

            猜你喜欢
            • 2017-10-16
            • 2017-05-30
            • 2017-10-15
            • 2018-03-16
            • 1970-01-01
            • 2020-02-12
            • 2021-07-03
            • 1970-01-01
            • 2017-05-14
            相关资源
            最近更新 更多