프로젝트로 멀어진지 너무 오래된거 같기도 하고,
로그인 기능(OAuth) + JWT는 내가 담당해서 개발해본적이 없어서 시도해보고 싶어서 냅다 시작하는 작은 공부방 !

일단 항상 쓰던거 넣고, 프론트를 따로 구현할 생각은 없기 때문에 Thymleaf를 넣어줬다.
그 다음 로그인은 OAuth2를 이용해 구현할 거니까 관련 의존성을 확인했는데 ~

여기서 문제. 이 세 개 중 어떤걸 써야할까?
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