강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

SecurityConfig에 CustomConfigurer 적용하는 것 관련해서 질문드립니다.

작성

·

192

·

수정됨

0

JWT 인증과 관련된 작업을 수행하기 위해 아래와 같이 AbstractHttpConfigurer를 확장해서 제가 만든 필터를 구성하였습니다

@Configuration
public class CustomFilterConfigurer extends AbstractHttpConfigurer<CustomFilterConfigurer, HttpSecurity> {
   private final AuthTokenProvider authTokenProvider;
   private final RefreshService refreshService;

   public CustomFilterConfigurer(AuthTokenProvider authTokenProvider, RefreshService refreshService) {
      this.authTokenProvider = authTokenProvider;
      this.refreshService = refreshService;
   }

   @Override
   public void configure(HttpSecurity builder) throws Exception {
      AuthenticationManager authenticationManager = builder.getSharedObject(AuthenticationManager.class);
      JwtAuthenticationFilter jwtAuthenticationFilter = new JwtAuthenticationFilter(authTokenProvider,
         authenticationManager, refreshService);
      jwtAuthenticationFilter.setFilterProcessesUrl("/api/v1/auth/login");
      jwtAuthenticationFilter.setAuthenticationSuccessHandler(new UserAuthenticationSuccessHandler());
      jwtAuthenticationFilter.setAuthenticationFailureHandler(new UserAuthenticationFailureHandler());
      JwtVerificationFilter jwtVerificationFilter = new JwtVerificationFilter(authTokenProvider);
      builder.addFilter(jwtVerificationFilter)
         .addFilterAfter(jwtVerificationFilter, JwtAuthenticationFilter.class);
   }
}

그리고 SecurityConfig 클래스의 securityFilterChain에 제가 만든 이 CustomFilterConfigurer를 추가하려는 상황입니다.

Spring boot 2.x 버전에서는 SecurityConfig 클래스에 DI 후, securityFilterChain에 http.apply(customFilterConfigurer)로 적용하였었는데

현재 버전에서는 어떻게 적용하여야 하는지 도통 모르겠네요..ㅠㅠ

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

Spring Boot 2.x 버전에서 사용하신 방식과 유사하게 Spring Boot 3.1.5 버전에서도 CustomFilterConfigurer를 SecurityFilterChain에 적용하는 방법은 크게 다르지 않습니다. 다만, SecurityAutoConfiguration이 기본적으로 제공하는 설정이 있으며, 이를 사용자가 직접 정의한 SecurityFilterChain 빈을 등록함으로써 비활성화할 수 있습니다. 다음은 CustomFilterConfigurer를 SecurityFilterChain에 적용하는 방법에 대한 코드 예시입니다.

@Configuration
public class SecurityConfig {

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        // ... 기존에 있던 설정들

        CustomFilterConfigurer customFilterConfigurer = new CustomFilterConfigurer(authTokenProvider, refreshService);
        http.apply(customFilterConfigurer);

        // ... 나머지 보안 설정들

        return http.build();
    }
    
    // AuthTokenProvider와 RefreshService 에 대한 빈 설정도 필요할 수 있습니다.
}

스프링 부트 3.1.5 버전에서는 SecurityFilterChain을 정의하여 기본적으로 제공하는 웹 보안 설정을 대체할 수 있는데, 이 때 @Configuration 어노테이션이 달린 클래스에서 각각의 필터를 구성하고 HttpSecurity의 인스턴스에 적용한 후 SecurityFilterChain 타입으로 빈을 등록하면 됩니다.

위의 방식으로 CustomFilterConfigurer를 적용할 수 있습니다. 추가적으로 기본 보안 설정을 비활성화하려면 SecurityFilterChain 빈을 정의해주셔야 합니다. 참조할 수 있는 문서의 URL은 다음과 같습니다.

위 URL의 문서를 참고하시면 더 상세한 구현 방법을 찾으실 수 있을 겁니다.

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기