Java JWT(jjwt)是一个用于创建和验证JSON Web Tokens (JWT)的Java库。JWT是一种开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间安全地传输信息作为JSON对象。这些信息可以被验证和信任,因为它是数字签名的。JWT可以使用HMAC算法或者RSA、ECDSA的公钥/私钥对进行签名。
jjwt的基本使用
引入jjwt依赖。
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-api</artifactId>
<version>0.11.2</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>0.11.2</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId> <!-- or jjwt-gson if Gson is preferred -->
<version>0.11.2</version>
</dependency>
创建JWT
使用jjwt创建一个JWT:
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import java.util.Date;
public class JwtCreator {
private static final String SECRET = "yourSecretKey";
public static String createJwt(String subject) {
String jwtToken = Jwts.builder()
.setSubject(subject)
.setIssuedAt(new Date())
.setExpiration(new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 10)) // 10 hours
.signWith(SignatureAlgorithm.HS256, SECRET.getBytes())
.compact();
return jwtToken;
}
}
验证和解析JWT
验证JWT的有效性并从中提取信息:
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.security.Keys;
import javax.crypto.SecretKey;
import java.util.Date;
public class JwtValidator {
private static final SecretKey SECRET_KEY = Keys.hmacShaKeyFor("yourSecretKey".getBytes());
public static Claims validateAndParseJwt(String token) {
Claims claims = Jwts.parserBuilder()
.setSigningKey(SECRET_KEY)
.build()
.parseClaimsJws(token)
.getBody();
return claims;
}
}