WebSecurityConfigurerAdapter

 

SpringSecurity가 초기화되면서 WebSecurityConfigurerAdapter.Class 를 호출하게된다.
클래스 내에 getHttp()  메소드를 살펴보면  HttpSecurity를 생성해주고 있으며,

this.http = new HttpSecurity(this.objectPostProcessor, this.authenticationBuilder, sharedObjects);

applyDefaultConfiguration() 메소드에서 11개 정도의 API를 호출하면서 설정초기화 작업을 해준다.

    private void applyDefaultConfiguration(HttpSecurity http) throws Exception {
        http.csrf();
        http.addFilter(new WebAsyncManagerIntegrationFilter());
        http.exceptionHandling();
        http.headers();
        http.sessionManagement();
        http.securityContext();
        http.requestCache();
        http.anonymous();
        http.servletApi();
        http.apply(new DefaultLoginPageConfigurer());
        http.logout();
    }

 getHttp() 메소드 마지막은 configure()  메소드를  호출해 추가 설정을 해주는데
이 작업으로 인해 모든 접근이 인증을 요청하면서 로그인페이지가 띄어지는 것이다.

    protected void configure(HttpSecurity http) throws Exception {
        this.logger.debug("Using default configure(HttpSecurity). If subclassed this will potentially override subclass configure(HttpSecurity).");
        http.authorizeRequests((requests) -> {
            ((AuthorizedUrl)requests.anyRequest()).authenticated();
        });
        http.formLogin();
        http.httpBasic();
    }

 

 

 


 

SecurityConfing 생성

시큐리티를 입맛대로 설정해주기위해 config 클래스를 생성한다.
이 강의해서는 WebSecurityConfigurerAdapter를 상속해 configure()을 오버라이딩하지만 
Deprecated되었기에 Bean으로 등록하는 방법으로 정리할 예정이다. Deprecated된 후 설정하는 방법이 있는 자료이다.

 

Deprecated된 WebSecurityConfigurerAdapter, 어떻게 대처하지?

스프링 버전이 업데이트 됨에 따라 WebSecurityConfigurerAdapter와 그 외 몇 가지들이 Deprecated 됐습니다.스프링에서는 다른 방식으로 시큐리티 설정을 권장하고 있는 듯 해보였는데요. 방식이 바뀐 탓

velog.io

 

SecurityConfing.Class 는 @Configuration @EnableWebSecurity 어노테이션을 선언해준다. @EnableWebSecurity 어노테이션은 여러 클래스들을 import해서 실행시키고 이 어노테이션을 선언해야 웹 보안이 활성화된다.

@Configuration
@EnableWebSecurity
public class SecurityConfig {

}

 

 


SecurityFilterChain

WebSecurityConfigurerAdapter.calss 를 상속받아 설정하면 configure() 를 오버라이딩하지만 Deprecated 되었기 때문에 @Bean으로 SecurityFilterChain 를 리턴하는 filterChain() 을 만들어 http를 설정해줘야한다.

	@Bean
	public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
		http
			.authorizeRequests()
			.anyRequest().authenticated();
		http
			.formLogin();
		
		return http.build();
	}

 

 

 

yml로 시큐리티 아이디와 패스워드를 설정할 수 있다.

spring:
  security:
    user:
      name: admin
      password: 1234

 

복사했습니다!