[Spring Security] 1. 내부 구조 및 동작 원리

조성우·2024년 7월 25일

Spring Security

목록 보기
1/16
post-thumbnail

전반적인 스프링 시큐리티 동작 원리에 대해 알아보자


시큐리티 의존성이 없는 경우

클라이언트의 요청은 서버의 WAS(톰캣)의 필터들을 통과한 뒤, 스프링 컨테이너의 컨트롤러에 도달한다. (컨트롤러 앞단의 과정은 생략)

※ The typical layering of the handlers for a single HTTP request.


시큐리티 의존성이 추가된 경우

  • 스프링 시큐리티가 사용자의 요청을 감시하고 통제하는 지점
    -> WAS의 필터 단에서 요청을 가로챈 후 시큐리티의 역할을 수행한다.

  1. WAS의 필터에 하나의 필터를 만들어서 넣고 해당 필터에서 요청을 가로챔
  2. 해당 요청은 스프링 컨테이너 내부에 구현되어 있는 스프링 시큐리티 감시 로직을 거침
  3. 시큐리티 로직을 마친 후 다시 WAS의 다음 필터로 복귀

※ 요청을 가로채는 필터: DelegatingFilterProxy, FilterChainProxy
※ 시큐리티 로직: SecurityFilterChain

스프링 시큐리티 로직은 여러개의 필터들이 나열된 필터 체인 형태로 구성되어 있다.
각각의 필터에서 CSRF, 로그아웃, 로그인, 인가, 등 여러 작업을 수행한다.

  • DelegatingFilterProxy: 스프링 Bean을 찾아 요청을 넘겨주는 서블릿 필터
  • FilterChainProxy: 스프링 시큐리티 의존성을 추가하면 DelegatingFilterProxy에 의해 호출되는 SecurityFilterChain들을 들고 있는 Bean (매개체 역할)
  • SecurityFilterChain: 스프링 시큐리티 필터들의 묶음으로 실제 시큐리티 로직이 처리되는 부분 (FilterChainProxy가 SecurityFilterChain들을 들고 있음)

0개의 댓글