DelegatingFilterProxy, FilterChainProxy

  DelegatingFilterProxy

 

  • Servlet Filter는 스프링에서 정의된 빈을 주입해서 사용할 수가 없음.
  • 서버 구동시에 Spring Security가 자동으로 보안을 잡아주는데 구동시에 DelegatingFilerProxy가 생성됨.
  • DelegatingFilerProxy는 특정한 이름을 가진 스프링 빈을 찾아 그 븐에게 요청을 위임.
    • springSecurityFilterChain 이라는 이름으로 생성된 빈을 ApplicationContext 에서 찾아 요청을 위임함.
    • DelegatingFilerProxy가 보안처리를 하는 것이 아님.

FilterChainProxy

 

  • springSecurityFilterChain 의 이름으로 생성되는 빈
  • DelegatingFilerProxy 로부터 요청을 위임 받아 실제로 보안을 처리함. 
  • 스프링 시큐리티 초기화 시 생성되는 필터들을 관리하고 제어 
    • 스프링 시큐리티가 기본적으로 생성하는 필터
    • 설정 클래스에서 API 추가 시 생성되는 필터
  • 사용자의 요청을 필터 순서대로 호출하여 전달
  • 사용자정의 필터를 생성해서 기존의 필터 전, 후로 추가 가능
  • 마지막 필터까지 인증 및 인가 예외가 발생하지 않으면 보안을 통과함.

SpringSecurity DelegatingFilterProxy Flow

 

 

  • 사용자로부터 서버에 요청이 오게 되면 몇 가지 필터를 거치게 됨. 
  • 그 중에 보안을 위임하여 인증 및 인가를 확인하는 DelegatingFilerProxy 가 존재함.
  • DelegatingFilerProxy 에 오게 되면 springSecurityFilterChain 의 이름으로 생성된 빈을 찾게됨. 
  • springSecurityFilterChain 빈을 가진 FilterChainProxy가 요청위임을 받아 자신이 가진 보안 필터들을 수행함. 기본(14개)
  • 아무런 문제없이 통과하게 되면 SpringMVC 로 요청함.   

'Backend > Security' 카테고리의 다른 글

Authentication  (0) 2023.01.18
필터 초기화와 다중 보안 설정  (0) 2023.01.18
CSRF(사이트 간 요청 위조)  (0) 2023.01.09
ExceptionTranslationFilter  (0) 2023.01.09
권한 설정 및 표현식  (0) 2023.01.09