2025.02.25, 화
김바실리
┌────────────────────────────┐
│ 클라이언트 │
│ (로그인 요청: /authenticate) │
└─────────────┬──────────────┘
│
▼
┌────────────────────────────┐
│ SecurityConfig │
│ - 필터 체인 설정 │
│ - AuthenticationManager │
└─────────────┬──────────────┘
│
▼
┌────────────────────────────┐
│ UsernamePasswordAuthFilter │
│ (또는 DelegatingFilterProxy)│
└─────────────┬──────────────┘
│
▼
┌──────────────────────────────────┐
│ JwtFilter (커스텀 필터) │
│ - 요청 헤더에서 JWT 추출 │
│ - 토큰 검증 및 Authentication 생성 │
└─────────────┬────────────────────┘
│ (JWT 토큰이 없으면 AnonymousAuthentication)
▼
┌────────────────────────────┐
│ AuthenticationManager │
│ (ProviderManager) │
└─────────────┬──────────────┘
│
▼
┌────────────────────────────┐
│ DaoAuthenticationProvider │◄─────┐
│ - UserDetailsService 호출 │ │
└─────────────┬──────────────┘ │
│ │
▼ │
┌────────────────────────────┐ │
│ JwtUserDetailsService │ │
│ - loadUserByUsername() │ │
│ - DB에서 User 조회 │ │
│ - createUser() : JwtUser │ │
└─────────────┬──────────────┘ │
│ │
▼ │
┌────────────────────────────┐ │
│ DaoAuthenticationProvider │──────┘
│ - 비밀번호, 계정 상태 검증 │
│ - Authenticated Token 생성 │
└─────────────┬──────────────┘
│
▼
┌────────────────────────────┐
│ SecurityContextHolder │
│ - 인증 정보 저장 │
└─────────────┬──────────────┘
│
▼
┌────────────────────────────┐
│ AuthController │
│ - JWT 토큰 생성 │
│ (JwtTokenProvider) │
│ - 토큰 DB 업데이트 │
│ - 클라이언트에 토큰 전달 │
└────────────────────────────┘