gpt4 book ai didi

java - JWT:带有公钥/私钥的 jwtk/jjwt

转载 作者:搜寻专家 更新时间:2023-10-31 20:32:44 25 4
gpt4 key购买 nike

Auth0提供两个 JWT 库,一个用于 Node:node-jsonwebtoken ,还有一个用于 Java:java-jwt .它turns outjava-jwt不支持公钥/私钥对。

但是,另一个 java 库 jjwt库,声称支持该功能。但是,该文档没有说明如何在 jjwt 中使用自己的公钥/私钥对。 .

我创建了私钥/公钥对,并在 Node 中成功使用 node-jsonwebtoken :

var key = fs.readFileSync('private.key');
var pem = fs.readFileSync('public.pem');

var header = {...};
var payload = {...};

header.algorithm = "RS256";
var message = jsonwebtoken.sign(payload, key, header);
var decoded = jsonwebtoken.verify(message, pem, {algorithm: "RS256"});

但我发现无法在 Java 中用 jjwt 做同样的事情.

任何人都有一个工作示例,说明如何在 Java 中使用 JWT 的私钥/公钥 jjwt ?

最佳答案

这是我关注的内容

创建 keystore

keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -storepass password -validity 360 -keysize 2048

您可以从现有的私钥和公钥创建 keystore 。 Google 一下如何操作。

加载 keystore

    KeyStore ks = KeyStore.getInstance("JKS");
InputStream readStream = // Use file stream to load from file system or class.getResourceAsStream to load from classpath
ks.load(readStream, "password".toCharArray());
Key key = ks.getKey("selfsigned", "password".toCharArray());
readStream.close();

使用JJwt api对消息进行签名

String s = Jwts.builder().setSubject("Abc").signWith(SignatureAlgorithm.RS512, key).compact();

使用JJwt api获取消息

X509Certificate certificate = (X509Certificate) keyEntry.getCertificate();
Jwts.parser().setSigningKey(certificate.getPublicKey()).parseClaimsJws(s).getBody().getSubject().equals("Abc");

关于java - JWT:带有公钥/私钥的 jwtk/jjwt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37792562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com