✅ 예외 처리 분류 기준
Spring Security + JWT 구조에서는 예외가 발생하는 지점이 다양
크게 3가지 책임으로 나눠보면 다음과 같습니다:
| 구분 | 예외 발생 위치 | 처리 주체 | 예시 상황 |
| 인증 필터 예외 | JwtAuthenticationFilter | 우리가 만든 handleException() | 토큰 만료, 서명 오류 등 |
| 시큐리티 레벨 예외 | Spring Security 내부 | AuthenticationEntryPoint, AccessDeniedHandler | 인증 안됨, 권한 없음 |
| 애플리케이션 예외 | Controller / Service | @ControllerAdvice | 비즈니스 로직 실패, @Valid 실패 등 |
🔄 전체 예외 흐름도
[클라이언트 요청]
│
▼
[JwtAuthenticationFilter] ← (토큰 검증 및 인증 처리)
├─ 토큰 없음
│ └─ 필터 통과 → Spring Security로 넘어감
│ └─ AuthenticationEntryPoint → 401 응답 (AUTH_006)
│
├─ 토큰 유효
│ └─ 인증 성공 → SecurityContext 등록 → 컨트롤러 진입
│
└─ 토큰 유효하지 않음
├─ 만료 → 401 응답 (AUTH_007)
├─ 서명 오류 → 401 응답 (AUTH_008)
└─ 기타 → 401 응답 (AUTH_006)
[컨트롤러 진입]
├─ 인증된 사용자지만 권한 없음 → AccessDeniedHandler → 403 (AUTH_005)
├─ 로그인 ID 없음, 비밀번호 불일치 등 → CustomException → GlobalExceptionHandler
└─ @Valid 실패 등 → MethodArgumentNotValidException → GlobalExceptionHandler
🎯 스프링 시큐리티 계층 구조(암기!!)

'SPRING' 카테고리의 다른 글
| [Spring] 인덱싱 (0) | 2025.04.09 |
|---|---|
| [Spring] N+1 (1) | 2025.04.09 |
| [SPRING] JWT (2) | 2025.04.01 |
| [SPRING] JPAQueryFactory (0) | 2025.03.30 |
| [SPRING] QueryDSL (1) | 2025.03.30 |