본문 바로가기
java

JJWT 0.11.2 에서 0.12.5 버전 마이그레이션

by moonsiri 2024. 5. 20.
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
반응형

댓글