티스토리 뷰
1. 최초 스프링 프로젝트 생성
셋팅한 프로젝트는 spring boot 2.7.5 버전이고 java 11버전으로 설정하였다.
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
...
<properties>
<java.version>11</java.version>
</properties>
2. 우선pom.xml에 라이브러리 적용
스프링 시큐리티를 적용하기 위해서는 아래의 세개의 라이브러리가 필요하다.
<!-- https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt -->
<!--<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>-->
<!--<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-api</artifactId>
<version>0.12.5</version>
</dependency>-->
<!--<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId>
<version>0.11.2</version>
</dependency>-->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-api</artifactId>
<version>0.12.6</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>0.12.6</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId> <!-- or jjwt-gson if Gson is preferred -->
<version>0.12.6</version>
<scope>runtime</scope>
</dependency>
각각의 라이브러리는 메이븐 레파지토리(https://mvnrepository.com/) 에서 가장 사용량이 많은 라이브러리를 선택하여
각각 jjwt 0.9.1버전, jjwt-api 0.11.2버전, jjwt-jackson 0.11.2버전을 선택하여 설정하였다.
>> 위와 같이 설정하였다 "This artifact was moved to:" 문구를 보고 jjwt가 jjwt-api로 변경됨으로 일단 이해하고
jjwt-api만 빼고 모두 주석 처리하였고, 버전도 0.11.2 가 아닌 그 다음 버전중 가장 많이 사용되는 0.12.5로 변경하였다.
>>>> 위와 같이 설정을 변경하였다가 문제가 자꾸 생겨서.. https://github.com/jwtk/jjwt#understanding-jjwt-dependencies
공식 문서를 보고 설정하기로 결정하고 최신버전인 jjwt-api:0.12.6, jjwt-impl:0.12.6, jjwt-jackson:0.12.6 으로 다시 설정하였다.
3. jwt 키 설정
다음의 명령어를 통해 jwt 토큰을 암복호활 키를 우선 생성한다.
openssl rand -hex 32
그리고는 application.yml 파일에 생성된 키를 입력하면 jwt 키 설정은 완료 된다.
4. jwt dto 생성
그리고 앞으로 jwt 인증시 사용 될 jwt 토큰을 담을 dto 객체를 생성한다.
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@Builder
@Data
@AllArgsConstructor
public class JwtToken {
private String grantType; // 인증타입 | Bearer
private String accessToken; // 토큰
private String refreshToken; // 리프레시 토큰
}
이렇게 설정하면 일단 기본적인 준비는 완료 됐다.
다음에는 본격적으로 security 설정을 해보자.
레퍼런스
- https://atsky.tistory.com/53
- https://github.com/jwtk/jjwt?tab=readme-ov-file#jwt-claims
- https://sg-choi.tistory.com/318
-