2017-06-20 121 views
0

我试图解码在java [io.jsonwebtoken/jjwt/0.6.0]中创建的节点服务器[npm install jsonwebtoken]中的JWT,但获取无效签名错误。如何解码在java中生成的Node.js中的jwt token?

有没有人经历过相同的,找到了解决方案,然后可以请你与小组分享。

在JAVA

jwtToken = Jwts.builder()

。SETSUBJECT(电子邮件).claim( “角色”, “用户”)。setIssuedAt(新日期(currentTimeInMills))。setExpiration(新日期(expireIn) ) .signWith(SignatureAlgorithm.HS256,“secretKey”)。compact();

在节点

变种JWT =要求( 'jsonwebtoken'); var decoded = jwt.verify(jwtToken,“secretKey”);

回答

0

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

错误非常明显,JWT是着名的跨平台兼容。

验证两边的密钥是否相同,申请对象在两边都是相同的,并且所使用的签名算法在两边都是相同的。

+0

感谢您的回复!我可以在java中使用com.auth0.java-jwt.3.2.0 jar和var jwt = require('jsonwebtoken');在节点中。 – user1522808

+0

那么您是否切换Java库?另一种测试我刚才意识到的方法是使用在线实用程序来解码并使用java进行编码,反之亦然。这将允许您独立地测试节点或Java的编码/解码,然后当您知道双方独立工作时,您知道它们将一起工作。 我在Java中使用JWT的某些实现时遇到了问题,但是与其他平台不兼容。在你的例子中,情况可能也是如此。 – anon58192932