如何解码 Java 生成的 Node.js 中的 jwt 令牌?

Posted

技术标签:

【中文标题】如何解码 Java 生成的 Node.js 中的 jwt 令牌?【英文标题】:how to decode jwt token in Node.js which is generated in java? 【发布时间】:2017-11-23 16:28:30 【问题描述】:

我正在尝试解码在 java [io.jsonwebtoken / jjwt / 0.6.0] 中创建的节点服务器 [npm install jsonwebtoken] 中的 JWT,但收到无效签名错误。

有没有人遇到过同样的情况并找到了解决方案,请与小组分享。

在 JAVA 中

jwtToken = Jwts.builder().setSubject(email).claim("roles", "user").setIssuedAt(new Date(currentTimeInMills)).setExpiration(new Date(expireIn)) .signWith(SignatureAlgorithm.HS256,"secretKey").compact();

在节点中

var jwt = require('jsonwebtoken'); var decoded = jwt.verify(jwtToken, "secretKey");

【问题讨论】:

【参考方案1】:

对于 SignatureAlgorithm,您的节点代码是否默认为 HS256?

错误非常明显,JWT 以跨平台兼容着称。

验证双方的密钥相同,双方的声明对象相同,并且双方使用的签名算法相同。

【讨论】:

感谢您的回复!在 java 中使用 com.auth0.java-jwt.3.2.0 jar 和 var jwt = require('jsonwebtoken'); 后,我能够解码节点中的令牌。在节点中。 那你切换Java库了吗?我刚刚意识到的另一种测试方法是使用在线实用程序进行解码并使用 java 进行编码,反之亦然。这将允许您独立测试任一节点或 java 的编码/解码,然后当您知道双方独立工作时,您知道他们将一起工作。我在 Java 中的一些 JWT 实现遇到了问题,这些实现在其他平台上表现不佳。在您的实例中可能也是这种情况。

以上是关于如何解码 Java 生成的 Node.js 中的 jwt 令牌?的主要内容,如果未能解决你的问题,请参考以下文章

即使在解码 URL 之后,node.js 中的 JSON 解析错误

如何生成随机 SHA1 哈希以用作 node.js 中的 ID?

如何执行 node

在 node.js 中生成的 JWT(JSON Web Token) 未在 java 中验证

Node.js 无法解析来自 base64 解码的 JSON 字符串

vue错误解决方案