java
JJWT 0.11.2 에서 0.12.5 버전 마이그레이션
moonsiri
2024. 5. 20. 17:10
728x90
반응형
1. Overview
JJWT (Java JSON Web Token) 라이브러리를 최신 버전으로 업그레이드하면, deprecated 처리된 메서드나 삭제된 메서드 때문에 코드 변경이 필요할 수 있습니다. 여기에서는 JJWT 버전을 0.11.2에서 0.12.5로 마이그레이션 하는 방법을 설명합니다.
2. Migration
2.1. Maven dependency
먼저 Maven 의존성을 0.11.2에서 0.12.5로 업데이트합니다.
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-api</artifactId>
<version>0.12.5</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>0.12.5</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId>
<version>0.12.5</version>
<scope>runtime</scope>
</dependency>
2.2. Token 생성
// V 0.11.x
String token = Jwts.builder().claim(...).setExpiration(expireTimestamp).signWith(SignatureAlgorithm.HS512, strKey).compact();
// V 0.12.x
SecretKey secretKey = Keys.hmacShaKeyFor(strKey.getBytes());
String token = Jwts.builder().claim(...).expiration(expireTimestamp).signWith(secretKey).compact();
0.12.5 버전에서는 signWith 메서드가 SignatureAlgorithm와 키 문자열을 직접 받아들이는 방식을 더 이상 사용하지 않기 때문에, Keys.hmacShaKeyFor 메서드를 사용하여 SecretKey 객체를 생성하고, 이를 signWith 메서드에 전달해야 합니다.
2.3. Token 검증
// V 0.11.x
SecretKey secretKey = new SecretKeySpec(strKey.getBytes(), SignatureAlgorithm.HS512.getJcaName());
Claims claims = Jwts.parser().setSigningKey(secretKey).parseClaimsJws(spidSessionToken).getBody();
// V 0.12.x
SecretKey secretKey = Keys.hmacShaKeyFor(strKey.getBytes());
Claims claims = Jwts.parser().verifyWith(secretKey).build().parseSignedClaims(token).getPayload();
0.12.5 버전에서는 Jwts.parser()가 Jwts.parserBuilder()로 변경되었고, 빌더 패턴을 사용하여 verifyWith 메서드를 호출한 후 build()를 호출해야 합니다.
이러한 변경 사항을 적용하여 코드 호환성을 유지하면서 최신 JJWT 라이브러리를 사용할 수 있습니다.
728x90
반응형