一、下载引用
- maven引用
截止当前事件2021-02-04最新版本3.9.0<dependency> <groupId>com.auth0</groupId> <artifactId>java-jwt</artifactId> <version>3.9.0</version> </dependency>
二、jwt是什么
JWT(JSON WEB TOKEN)共有三部分组成:标头.负载.签名
1.标头(Header)
2.有效负载(Payload)
3.签名(Signature)
-
我们执行这段生成了神秘数字
String jwt = JWT.create() //标头 .withClaim("username", "王二麻子") //有效负载 .withExpiresAt(new Date(System.currentTimeMillis()+60000)) //设置一分钟的过期时间 .sign(Algorithm.HMAC256("secret")); //签名
-
把这段数字拿去解析
解析后可以看到输入的username -
使用Java代码完成解析
JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256("secret")).build(); DecodedJWT decodedJWT = jwtVerifier.verify("eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6IueOi-S6jOm6u-WtkCJ9.Q71pvsTR5TYFePJFIMLvCbO8MGnQ0oiSJNCuSs1JiM4"); String payload = decodedJWT.getPayload(); System.out.println("负载:" + payload); System.out.println("标头:" + decodedJWT.getHeader()); System.out.println("签名:" + decodedJWT.getSignature()); System.out.println("------"); Map<String, Claim> payloads = decodedJWT.getClaims(); payloads.forEach((k,v)-> System.out.println( k + ":" + v.asString()));