【问题标题】:firebase auth/invalid-custom-tokenfirebase 身份验证/无效自定义令牌
【发布时间】:2017-12-19 23:54:17
【问题描述】:

我正在尝试使用 firebase admin sdk 生成自定义令牌

const uid = '91f0bf4c-3e3c-441c-a21d-6a7fee341db5'
firebaseAdmin.auth().createCustomToken(uid)

使用这个特定的 uid 有时自定义令牌可以工作,其他时候在客户端使用 authWithCustomToken() 时我会收到此错误:

“身份验证/无效自定义令牌” 自定义令牌格式不正确。请检查文档。”

有什么方法可以调试令牌的情况吗?从表面上看,“好”标记和“坏”标记看起来是一样的:

它们有 3 个部分,由 . 分隔

  • 第一部分长度为 36 个字符,在正常情况下和损坏情况下完全相同
  • 在两个示例中,第二部分都是 392 个字符,它们几乎完全相同
  • 这两个例子,第三部分都是 342 个字符,它们是不同的。

【问题讨论】:

    标签: firebase firebase-authentication


    【解决方案1】:

    你能去https://jwt.io 解码你的自定义令牌吗?它应该是这样的:

    {
      "uid": "some-uid",
      "iat": 1500147255,
      "exp": 1500150855,
      "aud": "https://identitytoolkit.googleapis.com/google.identity.identitytoolkit.v1.IdentityToolkit",
      "iss": "firebaseserviceaccount@YOUR_PROJECT_ID.iam.gserviceaccount.com",
      "sub": "firebaseserviceaccount@YOUR_PROJECT_ID.iam.gserviceaccount.com"
    }
    

    YOUR_PROJECT_ID 应该与您客户端项目中的相同项目匹配。

    【讨论】:

    • 谢谢!在这里解码它可以工作,并且两个令牌具有相同的数据,除了不同的 iat 和 exp 值
    • 每天几十次,不“罕见”但也不常见
    • 重审有效吗?当您收到该错误时,请再尝试一两次以确认这不是 Firebase Auth 后端的一些脆弱性。您也可以尝试直接使用 REST API 来确认这与客户端无关:firebase.google.com/docs/reference/rest/auth/…
    • 以何种方式重审? 1) 如果某个令牌出现此错误,则使用该令牌的所有重试总是失败 2) 如果我们为同一个 UID 生成一个新令牌,有时新令牌有效,有时则无效
    • 我会尝试直接使用 REST API,但很难知道这是否是一个修复,因为这似乎是随机发生的,我无法想出步骤每次尝试都回购
    【解决方案2】:

    令牌已过期。 Firebase SDK 引发相同的错误:auth/invalid-custom-token 错误标记和过期标记。

    希望错误处理很快得到改善,与此同时,开发人员可以通过使用像 jwt decode 这样的客户端库并检查“exp”时间戳并与当前时间进行比较来检查令牌是否已过期。

    【讨论】:

      猜你喜欢
      • 2023-03-12
      • 2016-11-06
      • 1970-01-01
      • 1970-01-01
      • 2021-05-06
      • 2017-07-03
      • 1970-01-01
      • 2020-04-01
      • 2022-12-10
      相关资源
      最近更新 更多