繁体   English   中英

未在Java中验证的node.js中生成的JWT(JSON Web令牌)

[英]JWT(JSON Web Token) generated in node.js not validated in java

我正在使用Node.js和require('jsonwebtoken')使用Windows中的puttygen工具生成的公钥来生成JWT。 然后,我将该令牌传递给标头中的其他应用程序。 Node.js中未开发Other应用程序。 使用Java我需要使用公共密钥来验证令牌。 但是我没有一个站点找到使用公钥/私钥进行验证的有效样本。

谁能提供给我我如何在Java中加载公钥/私钥并验证jwt令牌的步骤。 如果有的话,请提供示例。 提前致谢。

样本公钥(public.pem):-

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20160721"
AAAAB3NzaC1yc2EAAAABJQAAAQEAhk1i7Jwz2M6zakReDgg0NkVPn1kK1R8qAp2p
Ayh0eUPCb2XICDDVRnpUIK7/4k4dlLeeSi10TwwXe85zZ0gXcNMIOpnEKIWcnqJM
ctbYwyrl2tAb/tKjvBCvHMA9ZnfNADkN6reBZq8u7kYJ3bF9PxvS3QM+vgJ8/8ZS
qkRWcsmRZdq+wthwGt43J3NSKFfhMVP08/V/hTASq06vvFYApHsEH6zLxNNQ63Tt
Bzedh+C5efyqYqEVqnA7S9bXimyY2ViqpqFTx1lM9dV+12dSOxd7CQzX8eo00Phi
EAnY2hfoTooUeCO3/L6YavRl+CXgjhvA9mg4QO554qI1YCUvBw==
---- END SSH2 PUBLIC KEY ----

节点JS代码:-

var privateKey = fs.readFileSync("public.pem");
var userData = {username:'John'};
var token = jwt.sign(userData, privateKey);

Java代码:

所需的Java代码,可以使用上述公共密钥验证上述令牌。

加密操作独立于编程语言。 您可以在nodeJS中完美地生成JWT并在Java中进行验证。

JWT使用私钥进行了数字签名,并使用公钥验证了签名。 对于HMAC对称密钥,用于签名和验证的密钥是相同的。

对Java使用JWT库,例如https://github.com/jwtk/jjwt

 Jwts.parser().setSigningKey(key).parseClaimsJws(compactJws);

在页面中,您可以看到支持的算法。

腻子使用自己的密钥格式。 Java不支持它。 您需要将Putty SSH2密钥导出为OpenSSH格式。 请参阅如何阅读Java中的RSA密钥?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM