一、JWT的基本结构
JWT主要包括三个部分:头部(Header),有效载荷(Payload),签名(Signature)。每个部分都通过'.'JWT字符串连接在一起形成。
Header header = Jwts.header();header.setType("JWT");header.setAlgorithm("HS256");
Claims claims = Jwts.claims();claims.setSubject("user");claims.setIssuedAt(new Date());
String jwt = Jwts.builder() .setHeader((Map) header) .setClaims(claims) .signWith(SignatureAlgorithm.HS256, "secret-key") .compact();
二、JWT的工作流程
// 生成JWTString jwt = Jwts.builder() .setHeader((Map) header) .setClaims(claims) .signWith(SignatureAlgorithm.HS256, "secret-key") .compact();// 验证JWTJws<Claims> jws = Jwts.parser() .setSigningKey("secret-key") .parseClaimsJws(jwt);
三、JWT在Java中的实现
<dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>0.9.1</version></dependency>
然后就可以通过Jwts.builder()等方法生成JWT,通过Jwts.parser().setSigningKey(key).parseClaimsJws(jwt)等方法来校验JWT。
// 生成JWTString jwt = Jwts.builder() .setHeader((Map) header) .setClaims(claims) .signWith(SignatureAlgorithm.HS256, "secret-key") .compact(); // 验证JWTJws<Claims> jws = Jwts.parser() .setSigningKey("secret-key") .parseClaimsJws(jwt);