当前位置: 首页 > 知识库问答 >
问题:

Firebase ID令牌- JWT::验证错误异常:引发了签名验证

柴亦
2023-03-14

使用库"firebase_id_token"验证ruby on rails中的Firebase id令牌。

一旦我用google_sign_in库从前端获得有效令牌并发送到后端,它总是提示“JWT::VerificationError(签名验证引发)”。尽管我已经检查了jwt.io,在那里我可以看到有效载荷和报头的信息,但无法验证签名。

firebase_id_token.rb

FirebaseIdToken.configure do |config|
  config.project_ids = ["project_id"]
  config.redis = Redis.new(host: "localhost", port: 6379)
end

FirebaseIdToken::Certificates.request

另外,我检查了孩子密钥是这个链接上的有效密钥 https://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com

我已经调试代码一个多星期了,请任何人协助解决这个问题。

PS:我已经用一个有效的令牌而不是过期的令牌测试了代码。

共有1个答案

葛雨华
2023-03-14

Google登录会返回一个OAuth2令牌,据我所知不是JWT令牌,也绝对不是Firebase ID令牌。如果您将此Google登录令牌传递给您的后端代码,当您尝试将其验证为Firebase ID令牌时,它会被正确地拒绝。

要获取Firebase ID令牌,您需要使用Google登录令牌登录Firebase(通过调用<code>signInWithCredential</code>),然后将生成的Firebase ID标记传递给后端代码。

 类似资料:
  • 我目前正在使用Vapor开发Swift后端。我的iOS客户端使用新的iOS 13功能“使用Apple登录”。当用户登录时,我会得到一个身份令牌(访问令牌),这是一个由Apple签名的有效JWT令牌。这将在所有正在进行的通信中发送到服务器,以验证服务器提供的某些路由。 在服务器上,我想通过验证令牌签名来验证发送的令牌是否确实由Apple签名,并且不是由某些恶意用户专门创建的。Apple提供了一个HT

  • 我正在制作一个javascript客户端,它使用JWT令牌连接到Api。在服务器端没有问题,我可以创建令牌对其进行签名,然后验证签名,从而确保没有人篡改令牌。 但我如何在客户端做到这一点。我可以解码JWT令牌并查看头、负载和签名。但是如何在客户端验证签名?是否有用于此的库,如何将公钥传输到客户端? 如果我不验证签名,我怎么知道令牌没有被篡改?

  • SignatureException:签名长度不正确:得到256,但预期为128。我使用的是和。到目前为止,同样的配置有效--有什么想法吗?

  • 我正在尝试为我的组织实施OpenID Connect规范。我正在一个测试依赖方应用程序中使用微软的OpenID Connect的OWIN实现来验证我的协议实现。 我公开了以下元数据文档: 签名密钥公开为以下文档: 身份令牌是使用类及其关联的处理程序,使用类生成的。此代码代表令牌的构造方式,并将其作为响应数据的参数返回给调用系统。 当我试图将签名的令牌传递回依赖方应用程序时,OWIN中间件接受POS

  • 我一直在开发一个系统,使用JSON Web Tokens对我网站上的用户进行身份验证和授权。我的系统即将完成,但当我尝试在我的代码中使用[Authorize(“承载”)]属性时,我遇到了错误。错误如下: System.IdentityModel.Tokens。消息中出现SecurityTokenInvalidSignatureException:抛出异常:“System.IdentityModel

  • 问题内容: 我需要验证一个Google id_token,其中一个步骤涉及检查令牌签名。 首先,我从以下网址获取证书:https : //www.googleapis.com/oauth2/v2/certs,并从证书中提取模数(n)和指数(e)并生成公钥,然后分解令牌(标题,有效负载和摘要),然后将解码后的内容与Google pKey +摘要一起发送到rsa函数。 我陷入了这个验证错误: 这是代码