🛡️ Spring Security란?

Spring Security는 Spring 기반 애플리케이션의 인증(Authentication)과 인가(Authorization) 를 담당하는 강력한 보안 프레임워크입니다.


✅ 핵심 특징


🔗 핵심 구조

구성요소 설명
DelegatingFilterProxy 서블릿 컨테이너와 Spring Security를 연결하는 필터
FilterChainProxy 여러 보안 필터 체인을 관리하는 스프링 보안의 핵심 필터
SecurityContext 인증 정보 (Authentication) 를 저장
Authentication 현재 사용자의 인증 정보를 담는 객체
AuthenticationManager 인증 처리 담당 컴포넌트

🧩 인증 흐름 (세션 기반 로그인)

sequenceDiagram
    participant Client as 클라이언트
    participant Filter as FilterChainProxy
    participant AuthFilter as UsernamePasswordAuthenticationFilter
    participant AuthManager as AuthenticationManager
    participant Provider as AuthenticationProvider
    participant UserService as UserDetailsService
    participant UserDetails as UserDetails
    participant SecurityContext as SecurityContextHolder

    Client->>Filter: 로그인 요청 (ID, PW)
    Filter->>AuthFilter: 인증 필터 진입

    AuthFilter->>AuthManager: UsernamePasswordAuthenticationToken 생성 및 전달
    AuthManager->>Provider: Provider 선택 및 인증 위임
    Provider->>UserService: loadUserByUsername 호출
    UserService->>UserDetails: DB 사용자 조회
    UserDetails-->>Provider: UserDetails 반환
    Provider-->>AuthManager: 인증 완료(Authentication 생성)
    AuthManager-->>AuthFilter: Authentication 반환

    AuthFilter->>SecurityContext: SecurityContextHolder에 Authentication 저장
    SecurityContext->>Client: 응답 + JSESSIONID 쿠키 생성 및 전달

🔁 세션 흐름 요약