Backend/Spring Security
[Spring security] Custom FilterChain
sliver__
2025. 1. 31. 21:36
728x90
Spring security에 내가 원하는 filter는 어떻게 추가할까?
filter 동작을 구현하고 SecurityFilterChain에 추가하면 된다.
httpSecurity의 .addFilterAt, .addFilterBefore, .addFileterAfter가 있다.
addFilterAt(Filter filter, Class<? extends Filter> AtFilter) | 첫 번째 파라미터는 추가하려는 필터 대상 두 번째 파라미터는 함수 이름을 따라 해당 필터가 "언제" 실행될 지 기준이 되는 필터 addAtFilter 함수의 경우, 동시에 수행되는 필터의 순서는 랜덤이다. 그러므로 순서에 종속성이 없는 필터인 경우 사용해야 한다. |
addFilterBefore(Filter filter, Class<? extends Filter> beforeFilter) | |
addFileterAfter(Filter filter, Class<? extends Filter> AfterFilter) |
Custom 필터는 아래의 Filter interface를 상속받아 doFilter를 구현하면 된다.
HttpRequest를 통해 전달받은 client request에 필요한 값을 사용하여 어떤 HttpResponse를 return 할 지 설정하면 된다.
public interface Filter {
default void init(FilterConfig filterConfig) throws ServletException {
}
void doFilter(ServletRequest var1, ServletResponse var2, FilterChain var3) throws IOException, ServletException;
default void destroy() {
}
}
아래와 같이 @Configuration으로 설정한 SecurityFilterChain의 HttpSecurity에 추가하면 된다.
.addFilterBefore(new RequestValidationBeforeFilter(), BasicAuthenticationFilter.class)
728x90