1. 개요

이 빠른 사용방법(예제)에서는 Spring Security 필터 체인에 대한 사용자 정의 필터 작성에 중점을 둘 것입니다.

2. 필터 만들기

Spring Security는 기본적으로 많은 필터를 제공하며 대부분의 경우 충분합니다.

그러나 물론 체인에서 사용할 새 필터를 만들어 새 기능을 구현해야 하는 경우도 있습니다.

org.springframework.web.filter.GenericFilterBean 을 구현하는 것으로 시작하겠습니다 .

GenericFilterBean 은 Spring을 인식 하는 간단한 javax.servlet.Filter 구현입니다.

단일 메서드만 구현하면 됩니다.

public class CustomFilter extends GenericFilterBean {

    @Override
    public void doFilter(
      ServletRequest request, 
      ServletResponse response,
      FilterChain chain) throws IOException, ServletException {
        chain.doFilter(request, response);
    }
}

3. Security 구성에서 필터 사용

필터를 Spring Security 구성에 연결하기 위해 XML 구성 또는 Java 구성을 자유롭게 선택할 수 있습니다.

3.1. 자바 구성

SecurityFilterChain 을 생성하여 프로그래밍 방식으로 필터를 등록할 수 있습니다 .

예를 들어 HttpSecurity 인스턴스 에서 addFilterAfter 메서드 와 함께 작동합니다.

@Configuration
public class CustomWebSecurityConfigurerAdapter {

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http.addFilterAfter(
          new CustomFilter(), BasicAuthenticationFilter.class);
        return http.build();
    }
}

몇 가지 가능한 방법이 있습니다.

3.2. XML 구성

필터 의 위치를 ​​지정하기 위해 custom-filter 태그와 이러한 이름 중 하나를 사용하여 체인에 필터를 추가할 수 있습니다 .

예를 들어 after 속성으로 지정할 수 있습니다.

<http>
    <custom-filter after="BASIC_AUTH_FILTER" ref="myFilter" />
</http>

<beans:bean id="myFilter" class="com.baeldung.security.filter.CustomFilter"/>

다음은 스택에서 필터를 배치할 정확한 위치를 지정하는 모든 속성입니다.

  • after 는 사용자 지정 필터가 체인에 배치되는 직후에 필터를 설명합니다.
  • before 는 체인에서 필터를 배치해야 하는 필터를 정의합니다.
  • position 을 사용하면 명시적 위치의 표준 필터를 사용자 지정 필터로 바꿀 수 있습니다.

4. 결론

이 빠른 기사에서는 커스텀 필터를 생성하고 이를 Spring Security 필터 체인에 연결했습니다.

언제나처럼 모든 코드 예제는 샘플 GitHub 프로젝트 에서 사용할 수 있습니다 .

Security footer banner