이전 책과 자료를 참고하여 Spring Security 관련 설정 파일을 작성하다보면 'org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter' is deprecated
라는 설정 파일을 확인할 수 있었습니다.
따라서 해당 에러 메시지에 따르면, WebSecurityConfigurerAdapter
를 사용하지 않아야 합니다.
아래의 코드는 경고가 발생한 코드입니다.
경고 메시지는 나왔지만, 해당 코드를 사용해도 에러가 발생하지 않고 정상적으로 작동하는 모습을 확인할 수 있었습니다.
package com.forever.dadamda.config;
import com.forever.dadamda.entity.Role;
import com.forever.dadamda.service.CustomOAuth2UserService;
import lombok.RequiredArgsConstructor;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@RequiredArgsConstructor
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
private final CustomOAuth2UserService customOAuth2UserService;
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.headers().frameOptions().disable()
.and()
.authorizeRequests()
.antMatchers("/", "/css/**", "/images/**",
"/js/**","/h2-console/**").permitAll()
.antMatchers("/api/v1/**").hasRole(Role.USER.name())
.anyRequest().authenticated()
.and()
.logout()
.logoutSuccessUrl("/")
.and()
.oauth2Login()
.userInfoEndpoint()
.userService(customOAuth2UserService);
}
}
☝️ 그러나, 최대한 Spring Security에서 권장하는 코드로 변경하는 것이 나중에 코드 유지보수를 위해서라도 좋다고 판단하여 아래의 공식 문서를 참고하여 코드를 변경하였습니다.
https://spring.io/blog/2022/02/21/spring-security-without-the-websecurityconfigureradapter
package com.forever.dadamda.config;
import com.forever.dadamda.entity.Role;
import com.forever.dadamda.service.CustomOAuth2UserService;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Bean;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.web.SecurityFilterChain;
@RequiredArgsConstructor
@EnableWebSecurity
public class SecurityConfig {
private final CustomOAuth2UserService customOAuth2UserService;
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.csrf().disable()
.headers().frameOptions().disable()
.and()
.authorizeRequests()
.antMatchers("/", "/css/**", "/images/**",
"/js/**","/h2-console/**").permitAll()
.antMatchers("/api/v1/**").hasRole(Role.USER.name())
.anyRequest().authenticated()
.and()
.logout()
.logoutSuccessUrl("/")
.and()
.oauth2Login()
.userInfoEndpoint()
.userService(customOAuth2UserService);
return http.build();
}
}