JSON Web Token JJWT

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();
  }
 }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章