스프링 프레임워크가 버전5로 업데이트가 되면서 스프링 부트 또한 1.5에서 2.0으로 업데이트가 되었다. 그 중에서 Security 설정 부분에서 WebSecurityConfigurerAdapter 클래스가 Deprecated되면서 Bean으로 설정 부분을 등록해서 사용해야 한다.
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
public void configure(WebSecurity web) {
web.ignoring().requestMatchers(PathRequest.toStaticResources().atCommonLocations());
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable().authorizeRequests()
// /about 요청에 대해서는 로그인을 요구함
.antMatchers("/about").authenticated()
// /admin 요청에 대해서는 ROLE_ADMIN 역할을 가지고 있어야 함
.antMatchers("/admin").hasRole("ADMIN")
// 나머지 요청에 대해서는 로그인을 요구하지 않음
.anyRequest().permitAll()
.and()
// 로그인하는 경우에 대해 설정함
.formLogin()
// 로그인 페이지를 제공하는 URL을 설정함
.loginPage("/user/loginView")
// 로그인 성공 URL을 설정함
.successForwardUrl("/index")
// 로그인 실패 URL을 설정함
.failureForwardUrl("/index")
.permitAll()
.and()
.addFilterBefore(customAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class);
}
@Configuration
public class SecurityConfiguration {
@Bean
public WebSecurityCustomizer webSecurityCustomizer() {
return (web) -> web.ignoring().antMatchers("/ignore1", "/ignore2");
}
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.csrf().disable().authorizeRequests()
// /about 요청에 대해서는 로그인을 요구함
.antMatchers("/about").authenticated()
// /admin 요청에 대해서는 ROLE_ADMIN 역할을 가지고 있어야 함
.antMatchers("/admin").hasRole("ADMIN")
// 나머지 요청에 대해서는 로그인을 요구하지 않음
.anyRequest().permitAll()
.and()
// 로그인하는 경우에 대해 설정함
.formLogin()
// 로그인 페이지를 제공하는 URL을 설정함
.loginPage("/user/loginView")
// 로그인 성공 URL을 설정함
.successForwardUrl("/index")
// 로그인 실패 URL을 설정함
.failureForwardUrl("/index")
.permitAll()
.and()
.addFilterBefore(customAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class);
return http.build();
}
}
위에서 볼 수 있듯이 SecurityFilterChain이란 클래스를 Bean으로 등록하여 사용하는 것으로 변경되었으며 Configure 또한 WebSeucityCutomizer 클래스를 통해 웹 접근에 대한 기타 설정을 할 수 있게 되었다.
이 외에도 많은 부분이 변경되었을거라 짐작하지만 차차 진행하면서 기록하도록 하겠다.!