<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
package com.xxx.util;
import io.jsonwebtoken.*;
import org.apache.tomcat.util.codec.binary.Base64;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.security.Key;
import java.util.Date;
import java.util.Map;
public class JwtUtils {
public static String createToken(Map<String, Object> claims, Long ttl) {
Key key = generateKey();
SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
Long nowMillis = System.currentTimeMillis();
JwtBuilder builder = Jwts.builder()
.setHeaderParam("typ", "JWT")
.setHeaderParam("alg", "HS256")
.setClaims(claims)
.signWith(signatureAlgorithm, key);
if (ttl != null && ttl >= 0) {
Long expMillis = nowMillis + ttl * 1000;
Date exp = new Date(expMillis);
builder.setExpiration(exp);
}
return builder.compact();
}
public static String createToken(Map<String, Object> claims) {
return createToken(claims, null);
}
public static Claims parse(String jwt) {
if (jwt == null) {
return null;
}
try {
return Jwts.parser()
.setSigningKey(generateKey())
.parseClaimsJws(jwt)
.getBody();
} catch (ExpiredJwtException e) {
return null;
}
}
private static SecretKey generateKey() {
String stringKey = "veu-api";
byte[] encodedKey = Base64.decodeBase64(stringKey);
return new SecretKeySpec(encodedKey, 0, encodedKey.length, "AES");
}
}