[Spring Security] 스프링 시큐리티의 큰 그림

spring_security

서블릿 컨테이너 #

tomcat과 같은 웹 어플리케이션을 서블릿 컨테이너(servlet container)라고 부르는데, 이런 웹 어플리케이션(J2EE Application)은 기본적으로 필터와 서블릿으로 구성되어 있다.

  1. request가 threadlocal로 실행되어 들어온다.
  2. 필터를 차례대로 거친다음
  3. url에 따라 서블릿이 분기되고
  4. 실행될 메소드를 찾아 request, response를 넘긴다.

필터는 체인처럼 엮여있기 때문에 ‘필터 체인’이라고도 불리는데, 모든 request는 이 필터체인을 모두 거쳐야만 서블릿 서비스에 도착할 수 있다.

스프링 시큐리티의 큰 그림 #

그래서 스프링 시큐리티는 DelegatingFilterProxy라는 필터를 만들어서 메인 필터 체인에 끼워넣고, 그 아래에 다시 SecurityFilterChain 그룹을 등록한다.

시큐리티 필터들 #

각각의 필터는 단일 필터, 단일 책임(?) 원칙 처럼, 각기 서로 다른 관심사를 해결합니다. 예를 들면 아래와 같습니다.

필터는 넣거나 뺄 수 있고 순서를 조절할 수 있습니다. (이때 필터의 순서가 매우 critical 할 수 있기 때문에 기본 필터들은 그 순서가 어느정도 정해져 있습니다.)