Springboot

[Springboot] JWT 0.15.2

KJihun 2024. 6. 22. 12:32
728x90

이번 프로젝트에서는 최신 기술스택을 사용하기로 하였기에,

이전에는 jwt 0.11.5 버전을 사용하였으나 이번에는 2024년 기준 최신 버전인 0.15.2 버전을 사용하기로 했다.

 

maven Repository: https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt-api

 

gradle

    implementation group: 'io.jsonwebtoken', name: 'jjwt-api', version: '0.12.5'
    runtimeOnly group: 'io.jsonwebtoken', name: 'jjwt-impl', version: '0.12.5'
    runtimeOnly group: 'io.jsonwebtoken', name: 'jjwt-jackson', version: '0.12.5'

 

 

변경사항

1. Key값의 Type이 Key에서 SecretKey로 변경 및 SignatureAlgorithm을 더이상 권장하지 않음

// 이전 버전(0.11.5)

	private final SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
	private Key key;

    public String createAccessToken(String username, UserRoleEnum role) {
        Date date = new Date();

        return BEARER_PREFIX +
                Jwts.builder()
                         ...
                        .signWith(key, signatureAlgorithm) // 암호화 알고리즘
                        .compact();
    }
}

 

 

이전에는 Key를 생성 후, signWith 부분에서 암호화 알고리즘을 적용하였으나, 

최신버전(0.15.2)에서는 Keys.hmacShaKeyFor 를 사용하여 키를 생성할 때 암호화 알고리즘을 적용한다

 

// 0.15.2
// SignatureAlgorithm 을 사용하지 않음.
	private SecretKey key; // Type 변경 Key -> SecretKey

    public String createAccessToken(String username, AuthorityType authorityType) {
        Date date = new Date();

        return BEARER_PREFIX +
                Jwts.builder()
                         ...
                        .signWith(key) // 암호화 알고리즘 적용부분 제거
                        .compact();
    }
}

 

 

2. Jwts.parserBuilder를 지원하지 않음

 

parserBuilder를 더이상 지원하지 않는다.

parserBuilder 대신 parser를 사용하여 구현할 수 있다.

 

 

변경사항

1. parserBuilder() -> parser()

2. setSigningKey(key) -> verifyWith(SecretKey)

3. getBody() -> getPayload()

 

 

 

이외에도 많은 변경사항이 있지만 사용하는데에 불편함을 느낀 변경사항을 정리해보았다.

'Springboot' 카테고리의 다른 글

[Security] Spring Security의 흐름  (0) 2024.06.22
[Spring] Websocket + Stomp을 통한 실시간 통신  (0) 2024.02.27
[Springboot] QueryDSL 2  (0) 2023.08.09
[Springboot] QueryDSL  (0) 2023.08.08
[SpringBoot] Redis Caching  (0) 2023.08.06