포스트

Spring Security

I. SpringSecurity

SpringSecurity*Filter 기반으로 동작한다. Interceptor와 달리 Filter는 애초에 SpringContext 밖에서 동작하기 때문에, Spring MVC와 별개이다. Spring에 주어진 요청이 처리되는 순서를 간단하게 표현하면 다음과 같다.

flowchart LR
    request[Request]
    filter{Filter}
    dispatcherServlet[DispatcherServlet]
    interceptor{Interceptor}
    controller[Controller]
    
    request-->filter-->dispatcherServlet-->interceptor-->controller

(그림 I-1) Spring request handling

DispatcherServlet의 동작 전에 복수의 필터가 동작하며, SpringSecurity의 핵심은 DispatcherServlet에 요청이 도달하기 전 원치않는 접근을 차단하거나, SpringContext에서 공통적으로 사용될 데이터를 추출하는 데 있다.

*Filter: J2EE 표준 스펙 기능으로, DispatcherServlet에 요청에 전달되기 전 url 패턴에 맞는 부가작업을 처리하는 기능을 제공한다.

II. SecurityFilterChain

flowchart LR
%%  HttpSecurity{HttpSecurity}
%%  SecurityFilterChain[SecurityFilterChain]
%%  
%%  HttpSecurity->SecurityFilterChain

SpringSecurity는 다양한 기능을 가진 필터들을 제공한다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.