无法解码 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 令牌
NodeJS + Google Login + Firebase Functions 导致解码 Firebase 会话 cookie 失败