我正在生成JWT使用Node.js与require('jsonwebtoken')使用公钥,这是由puttygen工具在windows生成。然后,我会在头部中将该令牌传递给其他应用程序。另一个应用程序不是用Node.js开发的。使用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代码,可以使用上面的公钥验证上面的令牌。
发布于 2016-07-22 00:53:04
加密操作独立于编程语言。您可以完美地在nodeJS中生成JWT并在Java中进行验证。
JWT使用私钥进行数字签名,签名使用公钥进行验证。对于HMAC对称密钥,签名和验证的密钥是相同的。
使用像https://github.com/jwtk/jjwt这样的JWT库
Jwts.parser().setSigningKey(key).parseClaimsJws(compactJws);在页面中,您可以看到支持的算法。
Putty使用自己的密钥格式。Java不支持它。您需要将Putty SSH2密钥导出为OpenSSH格式。请参阅How can I read RSA keys in Java?
https://stackoverflow.com/questions/38500599
复制相似问题