无法解码 Firebase JWT

Posted

技术标签:

【中文标题】无法解码 Firebase JWT【英文标题】:Unable to decode Firebase JWT 【发布时间】:2017-05-27 08:44:23 【问题描述】:

我正在创建一个 Web 应用程序,我想实现 Firebase 身份验证并帮助用户使用 Google、Facebook 或 Twitter 登录。

用户在我的网站上使用 Firebase 登录我在我的 javascript 中收到登录信息。

根据Firebase documentation,我没有传递在 JS 中收到的 UID,而是将令牌 ID 发送到后端服务器,以便它可以验证源并检索用户 ID。

我使用php-JWT 来检查和验证 Firebase 返回的令牌。但是,标头中的Key ID 与https://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com 中定义的任何Key ID 都不匹配,根据verification document,我可以在其中找到公钥。

【问题讨论】:

【参考方案1】:

当您的服务器无法验证令牌时,您能否打印出 Firebase 令牌负载中的“iss”和“exp”字段?颁发者 ('iss') 应以https://securetoken.google.com/ 开头,并且颁发时间 ('iat') 应比服务器收到令牌时的系统时间早 1-2 秒。

【讨论】:

'iss' => 'accounts.google.com' 'exp' => 1484310143 当我尝试使用 facebook 或 twitter 时,我得到 PHP-JWT 抛出的“错误数量的段”。正如你之前所说,ISS 应该以securetoken.google.com 开头,但不知何故它显示accounts.google.com! 您的服务器收到的令牌 ('iss' => 'accounts.google.com') 实际上是 Google OAuth2 IdToken,也不是 Firebase 令牌。您可能会发现 FirebaseUI Javascript 库 (github.com/firebase/firebaseui-web) 有助于作为使用 Firebase 实现 Google/Facebook/Twitter 登录的起点。 这是有趣的部分。我确实在使用firebaseui。根据github.com/firebase/firebaseui-web 上的说明添加

以上是关于无法解码 Firebase JWT的主要内容,如果未能解决你的问题,请参考以下文章

Firebase JWT 库无法验证 Python JWT 令牌

无法从 Firestore 值解码类型

从firebase解码返回json

NodeJS + Google Login + Firebase Functions 导致解码 Firebase 会话 cookie 失败

Dart:从 Firebase 快照中解码 Json

解码从firebase返回json