티스토리 뷰

반응형

 

Spring Security 5.7.0-M2부터 WebSecurityConfigurerAdapter가 deprecated 됐다.

 

기존에는 스프링 시큐리티를 사용하면 WebSecurityConfigurerAdapter라는 추상 클래스를 상속하고

configure 메서드를 오버라이드하여 설정하는 아래 방식처럼 사용을 했었다.

 

 

@Configuration
@EnableWebSecurity
class WebSecurityConfig(
    private val tokenProvider: TokenProvider,
    private val jwtAuthenticationEntryPoint: JwtAuthenticationEntryPoint,
    private val jwtAccessDeniedHandler: JwtAccessDeniedHandler
) : WebSecurityConfigurerAdapter() {

    @Throws(Exception::class)
    override fun configure(web: WebSecurity) {
        web.ignoring().antMatchers(
            "/actuator/**",
            "/favicon.ico",
            "/v1/**"
        )
    }

    @Throws(java.lang.Exception::class)
    override fun configure(httpSecurity: HttpSecurity) {
        httpSecurity
            .csrf().disable()
            .exceptionHandling()
            .authenticationEntryPoint(jwtAuthenticationEntryPoint)
            .accessDeniedHandler(jwtAccessDeniedHandler)
            .and()
            .authorizeRequests()
            .antMatchers("/v1/users/authentication").permitAll()
            .anyRequest().authenticated()
            .and()
            .apply(JwtSecurityConfig(tokenProvider))
            .and()
            .httpBasic().disable()
    }

}

 

 

그런데 상속받은 추상 클래스 이름(WebSecurityConfigurerAdapter())에 밑줄이 쳐지며

'WebSecurityConfigurerAdapter' is deprecated. Deprecated in Java 라고 뜬다.

 

 

 

 

 

위 코드에서 WebSecurityConfigurerAdapter를 제거하여 아래와 같이 다시 작성을 했다.

기존 오버라이드 했던 메소드를 @Bean 어노테이션을 이용하여 빈으로 등록하고 사용해야한다.

 

 

@Configuration
@EnableWebSecurity
class WebSecurityConfig(
    private val tokenProvider: TokenProvider,
    private val jwtAuthenticationEntryPoint: JwtAuthenticationEntryPoint,
    private val jwtAccessDeniedHandler: JwtAccessDeniedHandler
) {
    @Bean
    @Throws(Exception::class)
    fun webSecurityCustomizer(): WebSecurityCustomizer {
        return WebSecurityCustomizer { webSecurity: WebSecurity ->
            webSecurity.ignoring().mvcMatchers(
                "/actuator/**",
                "/favicon.ico",
                "/v1/**")
        }
    }

    @Bean
    @Throws(Exception::class)
    fun filterChain(httpSecurity: HttpSecurity): SecurityFilterChain {
        httpSecurity
            .csrf().disable()
            .exceptionHandling()
            .authenticationEntryPoint(jwtAuthenticationEntryPoint)
            .accessDeniedHandler(jwtAccessDeniedHandler)
            .and()
            .authorizeRequests()
            .antMatchers("/v1/users/authentication").permitAll()
            .anyRequest().authenticated()
            .and()
            .apply(JwtSecurityConfig(tokenProvider))
            .and()
            .httpBasic().disable()

        return httpSecurity.build()
    }

}

 

 

 

 

 

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함