文
章
目
录
章
目
录
在使用JWT时,可以使用hutool工具包轻松实现,这里我们展示下使用 RSA256加解密,来实现JWT的签发与验证。
1.导入依赖
首先导入hutool的maven依赖:
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.24</version>
</dependency>
2.生成RSA256公私钥对
我们先介绍下如何使用hutool生成RSA256公私钥对,代码如下:
@Test
public void generateKeyPair() {
String id = "rs256";
KeyPair keyPair = KeyUtil.generateKeyPair(AlgorithmUtil.getAlgorithm(id));
System.out.println(Base64.getEncoder().encodeToString(keyPair.getPrivate().getEncoded()));//私钥
System.out.println(Base64.getEncoder().encodeToString(keyPair.getPublic().getEncoded()));//公钥
}
这里我们将生成的KeyPair分别使用了Base64编码处理了,这样便于我们存储。
3.实现JWT签发与验证
接下来我们用已经生成的RSA256公私钥对(Base64加密后的)来实现JWT的签发与验证,代码如下:
@Test
public void test() {
String id = "rs256";
String privateKey = "MIIC省略.....==";
String publicKey = "MIG省略....";
RSA rsa = SecureUtil.rsa(privateKey, publicKey);
final JWTSigner signer = JWTSignerUtil.rs256(rsa.getPrivateKey());
final JWTSigner signer2 = JWTSignerUtil.rs256(rsa.getPublicKey());
// 生成token
final String token = JWT.create()
.setNotBefore(DateUtil.date())
.sign(signer);
System.out.println(token);
// 验证算法
JWTValidator.of(token).validateAlgorithm(signer2);
// 解析token
JWT jwt = JWTUtil.parseToken(token);
System.out.println(jwt.getHeader());
System.out.println(jwt.getPayload());
}
切记需要注意签名用privateKey(私钥),验证用publicKey(公钥),千万别搞反了,不然会报错的。