jjwt demo

package jwt_demo;

import io.jsonwebtoken.*;
import io.jsonwebtoken.io.Decoders;
import io.jsonwebtoken.io.Encoders;
import io.jsonwebtoken.security.Keys;

import javax.crypto.SecretKey;
import java.security.Key;
import java.text.SimpleDateFormat;
import java.util.Date;

public class App {
    public static void main(String[] args) throws InterruptedException {
        long now = System.currentTimeMillis();//當前時間
        long exp = now + 1000 * 60;//過期時間爲1分鐘

        // 這裏是編碼
        String secretString = "oP7WStjRND1iUQtALAAIUWEQSpjMyF7uXUda8Y2lDPQ=";
        SecretKey key = Keys.hmacShaKeyFor(Decoders.BASE64.decode(secretString));

        System.out.println(Encoders.BASE64.encode(key.getEncoded()));

        JwtBuilder builder = Jwts.builder().setId("888")
                .setIssuer("me")
                .setAudience("you")
                .setIssuedAt(new Date()) // for example, now
                .setSubject("小白")
                .setIssuedAt(new Date())
                .signWith(key)
                .setExpiration(new Date(exp))
                .claim("hello", "world")
                .setHeaderParam("kid", "myKeyId");
        String token = builder.compact();

        // 這裏是解碼
        SecretKey keyss = Keys.hmacShaKeyFor(Decoders.BASE64.decode(secretString));
        Jws<Claims> jws = Jwts.parserBuilder()
                .requireSubject("小白")
                .setSigningKey(keyss).build()
                .parseClaimsJws(token);

        JwsHeader header = jws.getHeader();
        Claims claim = jws.getBody();

        {
            System.out.println(jws.getSignature());
            System.out.println(header.getKeyId());
            System.out.println(claim.getId());
            System.out.println(claim.getSubject());
            System.out.println(claim.getIssuedAt());
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy‐MM‐dd hh:mm:ss");
            System.out.println("簽發時間:" + sdf.format(claim.getIssuedAt()));
            System.out.println("過期時 間:" + sdf.format(claim.getExpiration()));
            System.out.println("當前時間:" + sdf.format(new Date()));
        }

    }
}

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