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 |