DelegatingProxyChain 이란?

DelegatingProxyChain를 간단하게 설명하면

springSecurity는 servletFilter기반으로 보안처리하고 비지니스로직을 수행할 수 있도록 진행된다.
하지만 요청을 받는 servletFilter는 서블릿컨테이너에서 생성되고 실행된다. 즉, 스프링컨테이너에서 생성되고 관리되는 스프링빈에 접근할 수 없다.

springSecurity는 스프링빈을 만들고 servletFilter를 구현하고 있기 때문에 요청을 받은 servletFilter가 springSecurityFilterChain 이름으로 생성된 빈을 ApplacationContext에서 찾아서 스프링빈에 요청을 위임할 수 있게 해주는 프록시가 DelegatingProxyChain 이다.

 

 

 

FilterChainProxy

  1. springSecurityFilterChain의 이름으로 생성되는 필터 빈이다.
  2. DelegatingProxyChain 으로 부터 요청을 위임 받고 실제로 보안처리를 한다.
  3. 스프링 시큐리티 초기화 시 생성되는 필터들을 관리하고 제어한다. (이미지  1 참조 )
  4. 사용자의 요청을 필터 순서대로 호출하여 전달한다.
  5. 사용자정의 필터를 생성해서 기존의 필터 전후로 추가가 가능하다.
  6. 마지막 필터까지 인증 및 인가 예외가 발생하지 않으면 보안 통과한다.

이미지 1  FilterChainProxy.java 에 실제 디버깅

 

복사했습니다!