https://docs.spring.io/spring-security/reference/servlet/architecture.html
서블릿에는 Filter가 존재함, 특정 요청의 앞 뒤로 다른 일을 처리하는 인터셉터 같은 것
하지만 서블릿 컨테이너는 스프링에 등록된 빈을 인식하지 못한다
DelegatingFilterProxy
- 일반적인 서블릿 필터
- 서블릿 필터 처리를 스프링에 있는 빈으로 위임하고 싶을 때 사용하는 서블릿 필터
- 스프링 부트가 아니면 AbstractSecurityWebApplicationInitializer를 사용하여 등록
- 스프링 부트에서는 SecurityFilterAutoConfiguration으로 자동 등록된다
DelegatingFilterProxy Pseudo Code
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
// Lazily get Filter that was registered as a Spring Bean
// For the example in DelegatingFilterProxy
delegate
is an instance of Bean Filter0
Filter delegate = getFilterBean(someBeanName);
// delegate work to the Spring Bean
delegate.doFilter(request, response);
}
BeanName으로 ApplicationContext에서 Bean을 찾아서 요청을 위임한다.
FilterChainProxy
- 보통 springSecurityFilterChain이라는 이름의 빈으로 등록된다.
'스터디-Spring' 카테고리의 다른 글
[스프링 시큐리티] FilterSecurityIntercepter (0) | 2022.01.17 |
---|---|
[스프링 시큐리티] AccessDecisionManager (0) | 2022.01.13 |
[스프링 시큐리티] Filter와 FilterChainProxy (0) | 2022.01.12 |
[스프링 시큐리티] Authentication과 SecurityContextHolder (0) | 2022.01.11 |
[스프링 시큐리티] ThreadLocal (0) | 2022.01.10 |