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()));
}
}
}
jjwt demo
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.