Spring Security - Security 아키텍처, DelegatingFilterProxy, FilterChainProxy

2021. 4. 16. 16:46SPRING/SPRING SECURITY

서블릿 Filter

  • 서블릿이 호출되기 전, 후로 공통 로직을 수행하는 역할을 한다.
  • 하지만 서블릿 영역이기 때문에 스프링빈을 사용할 수 없다.
  • Spring Security는 MVC영역(Dispatcher Servlet)의 앞에서 보안 처리를 해야하기 때문에, Filter에서 스프링빈을 사용하여 보안 처리를 해야했다.

DelegatingFilterProxy

  • 서블릿 컨테이너에서 스프링 컨테이너로 보안처리를 위임하는 역할을 한다.
  • 서블릿 영역의 Filter에서 스프링빈을 사용할 수 없기 때문에 서블릿 영억의 Filter로 등록된 DelegatingFilterProxy가 스프링 영역의 springSecurityFilterChain 이름의 스프링빈을 찾아 보안처리를 위임한다. 이 스프링빈이 FilterChainProxy이다.

FilterChainProxy

  • FilterChainProxy도 마찬가지로 프록시이다.
  • 스프링 시큐리티가 기본적으로 등록하거나 설정 클래스에서 API 추가시 등록되는 필터들을 순서대로 실행하는 역할을 한다.
  • 이 필터들이 모두 실행되는 도중에 인증 예외나 인가 예외가 발생하지 않으면 MVC 영역으로 넘어간다.