https://docs.spring.io/spring-security/reference/servlet/architecture.html
Architecture :: Spring Security
Spring Security’s Servlet support is based on Servlet Filters, so it is helpful to look at the role of Filters generally first. The picture below shows the typical layering of the handlers for a single HTTP request. The client sends a request to the appl
docs.spring.io
서블릿에는 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 |