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 Security는
SecurityFilterChain을 통해
UsernamePasswordAuthenticationFilter, ExceptionTranslationFilter 등
수십 개의 보안 필터를 미리 등록해서, 인증/인가 로직을 처리.
4. Interceptor(인터셉터)와의 차이점
▶️ Interceptor란?
- Spring MVC의 기능.
- Filter보다 더 늦게 작동
(DispatcherServlet이 컨트롤러로 넘기기 직전/직후에 개입)
- 주로 로그인 체크, 권한 체크, 로깅, 트랜잭션 관리 등에 쓰임.
| Filter | Interceptor | |
|---|---|---|
| 위치 | DispatcherServlet 이전 | DispatcherServlet 이후, Controller 호출 전/후 |
| 표준 | Servlet | Spring MVC |
| 사용 목적 | 보안, 인코딩, 로깅 등 | 인증 이후 권한, 세부 로직, 요청/응답 가공 등 |
| 사용 방식 | doFilter() | preHandle(), postHandle(), afterCompletion() |