Spring

스프링 시큐리티 주요 아키텍처 이해 - 위임 필터 및 필터 빈 초기화 - DelegatingProxyChain, FilterChainProxy

sami355 2023. 7. 11. 01:03

스프링 시큐리티 주요 아키텍처 이해 - 위임 필터 및 필터 빈 초기화 - DelegatingProxyChain, FilterChainProxy

인프런 정수원님의 “스프링 시큐리티 - Spring Boot 기반으로 개발하는 Spring Security"를 보고 작성한 글입니다.

  • 클라이언트로부터 요청이 올 경우 서블릿 필터 -> 서블릿순으로 진행한다.
  • 서블릿 필터에서는 스프링 빈을 사용할 수 없다.
    • 서블릿 필터는 서블릿 스펙에서 정의되었기에 서블릿 컨테이너에서 다루고 스프링 빈은 스프링 컨테이너에서 다루기 때문이다.
  • 스프링 시큐리티는 서블릿 필터기반으로 모든 요청을 처리한다.
  • 클라이언트로부터 요청이 오면 서블릿 필터(WAS)는 서블릿이 가지고 있는 DelegatingFilterProxy를 통해서 스프링 빈에게 요청을 위임한다.

  • springSecurityChain은 FilterChainProxy(서블릿 필터)를 구현한 필터 빈이다.
  • FilterChainProxy(springSecurityChain)은 스프링 시큐리티 초기화시 생성되는 필터들을 관리한다.
  • 0번째 필터 -> FilterChainProxy -> 1번째 필터 -> FilterChainProxy -> 2번째 필터 -> FilterChainProxy...

  • DelegatingFilterProxy는 springSecurityFilterChain라는 이름을 가진 빈에게 요청을 위임하고 FilterChainProxy 타입의 클래스는 springSecurityFilterChain이라는 이름으로 빈이 생성된다.