JJWT 是 开源的、用于 java 创建和验证JSON Web令牌的库。
网址:https://github.com/jwtk/jjwt
简单示例:
生成JSON Web令牌
import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import io.jsonwebtoken.security.Keys; import java.security.Key; import javax.crypto.SecretKey; public class JwsTest { public static void main(String[] args){ try { //生成令牌首生需要秘钥,一般从配置文件读取 Key key = Keys.secretKeyFor(SignatureAlgorithm.HS256); //以下注释代码把 Key 转为16进制字符串 byte[] keybyte=key.getEncoded(); String keystr=ByteHexUtil.byteArr2HexStr(keybyte);//字符串秘钥 System.out.println(keystr); SecretKey secretKey=Keys.hmacShaKeyFor(keybyte); String jws = Jwts.builder() .setSubject("Joe")//set 用户标识,和基他需要属性 .signWith(secretKey)//秘钥 .compact(); System.out.println(jws);//生成令牌 }catch(Exception e) { e.printStackTrace(); } } }
效验令牌
import javax.crypto.SecretKey; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.security.Keys; public class JwsTest1 { public static void main(String[] args) { try{ //上个类的秘钥 byte[] keybyte=ByteHexUtil.hexStr2ByteArr("8cd037fce22e5dd292abf02a3ff02539e0c9512ef86fdafa2fc6fce26ae17c6f"); SecretKey secretKey=Keys.hmacShaKeyFor(keybyte); //上个类的令牌 String jws="eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJKb2UifQ.dTJloyna-gkfz89nBS07iUOy3jD_aDv8VwBLnFkBijo"; String body=Jwts.parser().setSigningKey(secretKey).parseClaimsJws(jws).getBody().getSubject(); System.out.println(body); }catch(Exception e){ e.printStackTrace(); } } }