【问题标题】:How to verify custom Firebase Auth Token, created by createCustomToken()如何验证由 createCustomToken() 创建的自定义 Firebase 身份验证令牌
【发布时间】:2019-07-04 23:14:04
【问题描述】:

我通过 createCustomToken() 创建了自定义 Auth Token,请参阅 https://firebase.google.com/docs/auth/admin/create-custom-tokens

但稍后当我尝试通过 verifyIdToken() 函数验证此令牌时,它会引发以下错误

Error: verifyIdToken() expects an ID token, but was given a custom token. See https://firebase.google.com/docs/auth/admin/verify-id-tokens for details on how to retrieve an ID token.

这是合理的,因为没有这样的ID...但是我需要的-只是简单地验证令牌,类似于jwt.verify()...

有没有人遇到过这个问题,找到了什么解决方案?是否可以通过 jsonwebtoken 库验证 Firebase 身份验证令牌?

附:我将在 Google Cloud Function 端点中使用验证

解决方案:看起来我刚刚找到了解决方案 https://firebase.google.com/docs/auth/admin/verify-id-tokens#verify_id_tokens_using_a_third-party_jwt_library 只需要从 https://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com 获取公钥并使用 jsonwebtoken 库来验证它...

【问题讨论】:

    标签: firebase firebase-authentication google-cloud-functions


    【解决方案1】:

    verifyIdToken之类的名字是验证IdToken,不是自定义token。

    CustomToken 用于sign in 的客户端。可以使用简单的 JWT 验证来验证此自定义令牌,例如您的解决方案(它会在一小时后过期)。

    IdToken 是另一回事,您需要使用 Firebase 身份验证进行登录。

    登录后从客户端获取Id Token,取决于客户端是Android、Web还是IOS。 获取IdToken的代码可以在this section中阅读

    【讨论】:

    • 原因是你可以验证任何令牌,如果你知道它的加密公钥。不同之处在于 verifyIdToken 还检查用户表中的用户存在。在我的情况下,我不想检查用户表中的用户存在或使用新的 CustomToken 登录以在用户表中创建新用户。无论如何,我为我的特殊情况找到了替代解决方案。不过谢谢你的回答。
    • @Timothy,我面临类似的要求“在我的情况下,我不想检查用户表中的用户存在或使用新的 CustomToken 登录以在用户表中创建新用户”。您是否介意评论您在案件中的表现或回答我的一个问题:stackoverflow.com/questions/61355351/…
    • 我在这里发布了同样的问题github.com/angular/angularfire/issues/2419
    猜你喜欢
    • 1970-01-01
    • 2019-10-25
    • 2023-03-12
    • 1970-01-01
    • 2017-08-14
    • 2017-12-19
    • 1970-01-01
    • 2020-04-01
    • 2022-12-10
    相关资源
    最近更新 更多