우리가 어떤 요청을 보내면 servlet 컨테이너가 받게 된다. 우리가 사용하는 컨테이너는 톰캣이다.

서블릿 스펙에는 filter라는 개념이 있다. 어떤 요청을 처리하는 앞,뒤로 무언가를 할 수 있는 인터셉터 같은 것이다.

이 필터의 구현체 중의 하나가 스프링이 제공하는 DelegatingFilterProxy 가 있다. 자기가 처리하는 것이 아니라 위임을 한다. 스프링 IoC 컨테이너에 들어있는 특정한 빈에게 위임한다.

스프링 시큐리티 관점에서는 FilterChainProxy에게 위임한다. 빈을 DelegatingFilterProxy 에게 알려줘야 하는데 스프링부트에서는 자동으로 해준다.

위 그림의 전부 서블릿 필터이지만 위치와 역할이 다르다.

그런데 권한을 확인하는 것은 어떻게 하는가?