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된 후 설정하는 방법이 있는 자료이다.
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
'무조건 따라하기 > Spring Boot 기반 Security' 카테고리의 다른 글
Spring Boot 기반으로 개발하는 Spring Security : LogoutFilter (0) | 2023.04.11 |
---|---|
Spring Boot 기반으로 개발하는 Spring Security : UsernamePasswordAuthenticationFilter (0) | 2023.04.10 |
Spring Boot 기반으로 개발하는 Spring Security : Form Login 인증 (0) | 2023.04.09 |
Spring Boot 기반으로 개발하는 Spring Security : 의존성 추가 (0) | 2023.04.09 |
스프링 시큐리티 - Spring Boot 기반으로 개발하는 Spring Security (0) | 2023.04.09 |