✅ 왜 Spring Security 없이 구현할까?
- Spring Security는 강력하지만 설정이 복잡하고 무거울 수 있습니다.
- 학습 목적이나 커스텀 인증 로직이 필요할 경우 직접 구현하는 것이 좋습니다.
- 인증/인가 구조를 저수준부터 명확히 이해할 수 있습니다.
🧠 전체 흐름 요약
[1] 로그인 요청 → 사용자 인증
[2] 서버가 JWT 생성 후 응답으로 전달
[3] 이후 요청마다 클라이언트는 JWT를 Authorization 헤더에 포함
[4] 커스텀 필터가 JWT 검증 → 사용자 정보 추출 → 요청에 주입
[5] 컨트롤러에서 사용자 정보 확인 후 인가 처리
📦 사용 기술
- Java 17+
- Spring Boot (without Spring Security)
- jjwt (JWT 생성/검증)
- Servlet Filter
🛠 구현 단계별 예제
1️⃣ build.gradle 의존성 추가
implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5'
runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.5'
2️⃣ JwtUtil – JWT 생성 & 검증