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
반응형