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 쿠키 생성 및 전달
HttpSession 생성SecurityContext가 세션에 저장됨JSESSIONID 쿠키로 인증 유지