티스토리 뷰

 

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

 

GitHub - jwtk/jjwt: Java JWT: JSON Web Token for Java and Android

Java JWT: JSON Web Token for Java and Android. Contribute to jwtk/jjwt development by creating an account on GitHub.

github.com

공식 문서를 보고 설정하기로 결정하고 최신버전인 jjwt-api:0.12.6, jjwt-impl:0.12.6, jjwt-jackson:0.12.6 으로 다시 설정하였다.

jjwt 라이브러리 v0.9.1
jjwt api 라이브러리 v.0.11.2
jwt jackson library v.0.11.2

 

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://suddiyo.tistory.com/entry/Spring-Spring-Security-JWT-%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0-2

- https://atsky.tistory.com/53

 

[Spring Boot] JWT 라이브러리를 의존성 추가했음에도 빌드 오류가 나는건 왜일까?(feat. `io.jsonwebtoken:j

발단흔히 사용하는 jwt 라이브러리인 jjwt 를 사용하여 개발하려 하니 2018년도 이후로 업데이트 되지 않고 있었다. 예제로도 jjwt 를 사용하는 경우가 많지만 최신 패키지인 jjwt-api 가 있기에 이를

atsky.tistory.com

- https://github.com/jwtk/jjwt?tab=readme-ov-file#jwt-claims

- https://sg-choi.tistory.com/318

 

[Java] JWT(Json Web Token)

pom.xml implementation("io.jsonwebtoken:jjwt:0.12.3") SecretKey SecretKey key = new SecretKeySpec( "key는-256-bits-이상이어야함".getBytes(StandardCharsets.UTF_8), Jwts.SIG.HS256.key().build().getAlgorithm() ); Encoding String jwt = Jwts.builder() .s

sg-choi.tistory.com