킹의 개발일지
Spring Security without the WebSecurityConfigurerAdapter 본문
스프링 이니셜라이저를 사용해 최신버전의 종속을 집어넣고 개인 프로젝트를 하다가, 스프링 시큐리티 구성파일을 작업하던중 WebSecurityConfigurerAdapter 사용에 밑줄이 그어진것을 발견했다.
뭔가 싶어서 찾아보니 스프링 시큐리티 5.7.0-MZ에서 WebSecurityConfigurerAdapter가 deprecated 됐다고 한다.
스프링은 component-based security configuration 을 사용하는 방식을 독려한다고 한다.
때문에 스프링 블로그를 참조해 몇가지 사용 케이스들을 보면서 공부하고자 한다.
Configuring HttpSecurity
WebSecurityConfigurerAdapter 가 deprecated 되기 전에 모든 엔드포인트에 접근을 보안처리 하고자 했다면 다음과 같이 했을 것이다.
@Configuration
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests((authz) -> authz
.anyRequest().authenticated()
)
.httpBasic(withDefaults());
}
}
그러나 스프링은 이제부터 SecurityFilterChain 빈을 등록하는 방식을 추천한다고 한다.
@Configuration
public class SecurityConfiguration {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests((authz) -> authz
.anyRequest().authenticated()
)
.httpBasic(withDefaults());
return http.build();
}
}
Configuring WebSecurity
스프링 시큐리티 5.4에서 WebSecurityCustomizer를 소개했다.
WebSecurityCustomizer는 WebSecurity를 커스텀하기위해 사용돼는 콜백 인터페이스다.
css, js, image 같은 정적파일들에 접근할 때 보안을 무시하도록 작업 하고자 했을 때 WebSecurityConfigurerAdapter를 상속받고 WebSecurity 타입의 파라미터를 갖는 configure메서드를 오버라이딩 했어야했다.
아래 예시는 WebSecurityConfigurerAdapter를 사용해 "/ignore1", "/ignore2" 요청에대해 필터를 적용하지 않는 예시다.
@Configuration
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
public void configure(WebSecurity web) {
web.ignoring().antMatchers("/ignore1", "/ignore2");
}
}
그리고 아래는 WebSecurityCustomizer 빈을 등록해 작업하는 방식이다.
@Configuration
public class SecurityConfiguration {
@Bean
public WebSecurityCustomizer webSecurityCustomizer() {
return (web) -> web.ignoring().antMatchers("/ignore1", "/ignore2");
}
}
이외에도 WebSecurityConfigurerAdapter 를 사용하던 방식을 벗어난 시큐리티 사용법에 대한 사용 케이스들이 스프링 블로그에 많이 올라와있다.
다른 케이스들이 필요하다면 스프링 블로그를 방문해 더 찾아보도록 하자.
https://spring.io/blog/2022/02/21/spring-security-without-the-websecurityconfigureradapter
'Spring' 카테고리의 다른 글
| @SpringBootApplication (0) | 2022.06.18 |
|---|