Skip to main content

Session vs Token 전략

작성일: 2025.10.01

1. Spring MVC에서 DispatcherServlet이란?

  • DispatcherServlet = 프론트 컨트롤러, 요청의 중앙 관제탑
  • 모든 HTTP 요청을 받아서 컨트롤러로 라우팅
  • 컨트롤러 실행 후, 응답/뷰를 다시 조립해 반환
  • Spring MVC/Boot에서는 자동 등록

2. SecurityFilterChain이란?

  • HTTP 요청이 서버에 들어올 때, 여러 개의 “필터(Filter)”를 차례로 거칩니다.
  • Spring Security의 모든 보안 기능은 **필터 체인(Filter Chain)**으로 동작합니다.
  • 즉, 필터가 HTTP 요청을 검사하고, 인증/인가/차단 등 모든 로직을 처리합니다.
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
return http
.cors(Customizer.withDefaults()) // ① CORS 설정 (Cross-Origin 요청 허용)
.csrf(csrf -> csrf.disable()) // ② CSRF(크로스 사이트 요청 위조) 방지 비활성화
.authorizeHttpRequests(auth -> auth // ③ 인증/인가 규칙 지정
.requestMatchers("/api/*").permitAll() // - /api/* 패턴은 모두 허용(인증 없이 접근 가능)
.anyRequest().authenticated() // - 그 외 모든 요청은 인증 필요
)
.httpBasic(Customizer.withDefaults()) // ④ HTTP Basic 인증 사용(브라우저 팝업 로그인)
.build();
}


3. Spring Security의 Filter란?

  • Filter는 서블릿 표준(DispatcherServlet 이전에 작동)으로,

HTTP 요청/응답을 가로채서 가공/검사/차단/변환하는 역할을 함.

  • Spring SecuritySecurityFilterChain을 통해

UsernamePasswordAuthenticationFilter, ExceptionTranslationFilter

수십 개의 보안 필터를 미리 등록해서, 인증/인가 로직을 처리.


4. Interceptor(인터셉터)와의 차이점

▶️ Interceptor란?

  • Spring MVC의 기능.
  • Filter보다 더 늦게 작동

(DispatcherServlet이 컨트롤러로 넘기기 직전/직후에 개입)

  • 주로 로그인 체크, 권한 체크, 로깅, 트랜잭션 관리 등에 쓰임.
FilterInterceptor
위치DispatcherServlet 이전DispatcherServlet 이후, Controller 호출 전/후
표준ServletSpring MVC
사용 목적보안, 인코딩, 로깅 등인증 이후 권한, 세부 로직, 요청/응답 가공 등
사용 방식doFilter()preHandle(), postHandle(), afterCompletion()