[JWT구현하기] SpringBoot 세팅

미밈·2025년 6월 17일

JWT 구현기

목록 보기
1/1

프로젝트로 멀어진지 너무 오래된거 같기도 하고,

로그인 기능(OAuth) + JWT는 내가 담당해서 개발해본적이 없어서 시도해보고 싶어서 냅다 시작하는 작은 공부방 !

🌱 Spring Boot 세팅

일단 항상 쓰던거 넣고, 프론트를 따로 구현할 생각은 없기 때문에 Thymleaf를 넣어줬다.

그 다음 로그인은 OAuth2를 이용해 구현할 거니까 관련 의존성을 확인했는데 ~

여기서 문제. 이 세 개 중 어떤걸 써야할까?

  1. OAuth2 Client
  • 애플리케이션이 외부 OAuth2 제공자 (예: Google, Kakao, GitHub 등) 에 인증을 요청하고 사용자 정보를 받아오는 클라이언트 역할일 때 사용
  1. OAuth2 Resource Server
  • OAuth2 액세스 토큰을 검증하고 보호된 리소스를 제공하는 서버 역할의 기능
  • 토큰 기반으로 인증받은 사용자에게 API 등을 제공하는 리소스 서버 역할을 할 때 사용합니다.
  1. OAuth2 Authorization Server
  • 사용자의 인증을 수행하고 Access Token, Refresh Token을 발급하는 서버를 직접 구현할 때 사용합니다.


여기서 내가 하고 싶은 것 : OAuth2를 사용해 로그인하고 Security를 사용해서 JWT발급 + 검증 까지 하는 것.
따라서, 1번 2번과 3번을 같이 사용하면 됨 !

1번의 경우는 구현 선택지가 두 가지
1️⃣소셜 제공 API 사용 2️⃣OAuth2 Client 사용.

2번의 경우 Spring에서 자동으로 많은 부분을 처리 해주기 때문에 많이 사용한다. 단! 대신 구현해주는 것이기 때문에 흐름을 정확히 알기 힘들다는 단점이 있음.

나의 경우에는 2번으로 진행하고, 1번에 대해 추가적인 포스팅을 하면서 공부할 예정이다.

흐름은 다음과 같다.


[ 사용자의 브라우저 / 앱 ]
           │
           ▼
┌────────────────────────────┐
│     OAuth2 Client (1번)  │   ← 사용자 로그인 요청
│  (Spring Security Client)│
└──────────┬─────────────────┘
          │  (1. 인증 요청 Redirect)
          ▼
┌──────────────────────────────┐
│  Authorization Server (3번)│   ← 로그인 + JWT 발급
│  (Spring Auth Server)      │
└──────────┬───────────────────┘
          │  (2. JWT 발급)
          ▼
┌────────────────────────────┐
│     OAuth2 Client (1번)  │   ← Access Token 저장
└──────────┬─────────────────┘
          │  (3. JWT로 API 호출)
          ▼
┌────────────────────────────┐
│  Resource Server (2번)   │   ← JWT 검증 + 데이터 응답
│  (Spring Resource Server)│
└────────────────────────────┘

요로코롬 된다는 사실

그래서 최종적으로 사용될 의존성들은 다음과 같다.

Lombok, Spring Web, Spring Data JPA, Spring Security
,Thymeleaf, OAuth2 Client, OAuth2 Resource Server, OAuth2 Authorization Serve,MySQL Driver


참고한 블로그❤️

profile
하나씩 차근차근 해보는 초초초급개발자

0개의 댓글