Spring Security를 활용한 웹 보안 설정

song yuheon·2023년 9월 3일
0

Question

목록 보기
4/6
post-thumbnail

학습 계기


Spring 강의를 듣던 도중 Spring Security라는 것을 접하게 되었다.
Spring Security는 웹 애플리케이션의 보안 관리를 위한 프레임워크이다.
강의에서는 빠르게 설명을 해주셔서 잘 이해가 되지 않았다. 그래서 구글링을 통해 강의에서 나온 코드의 의미를 파악하기로 했다.


강의 코드


@Configuration
@EnableWebSecurity
public class WebSecurityConfig {
    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http.csrf((csrf) -> csrf.disable());
        http.authorizeHttpRequests((authorizeHttpRequests) ->
                authorizeHttpRequests
                        .requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll()
                        .anyRequest().authenticated()
        );
        http.formLogin(Customizer.withDefaults());
        return http.build();
    }
}
  • @Configuration은 Java 기반의 Spring 설정 클래스를 정의한다.
  • @EnableWebSecurity는 Spring Security의 웹 보안 기능을 활성화한다.
  • SecurityFilterChain은 Spring Security에서 보안 처리를 위한 연속적인 필터들의 체인이다.
  • http.csrf((csrf) -> csrf.disable());는 CSRF(Cross-Site Request Forgery) 공격 방지 기능을 비활성화한다.
  • http.authorizeHttpRequests(...)는 HTTP 요청에 대한 보안 설정을 정의한다. 정적 리소스에 대한 요청은 모두 허용하고, 나머지 모든 요청은 인증을 필요로 한다.
  • http.formLogin(Customizer.withDefaults())는 폼을 이용한 로그인 방식을 활성화하며, 이 때 기본 설정을 사용한다.

Question @Bean이 붙은 securityFilterChain은 언제 실행되서 Bean에 등록될까?


  • Spring의 동작 흐름
    1. 프로그램이 시작될 때, Spring은 @Configuration 애너테이션을 갖는 클래스를 찾아 설정 클래스로 인식한다.
    2. 설정 클래스 내에서 @Bean 애너테이션이 붙은 메서드를 찾아 실행하고, 그 결과로 반환되는 객체를 Spring IoC 컨테이너에 빈으로 등록한다.
    3. securityFilterChain 메서드는 HttpSecurity 파라미터를 받아들여 웹 보안 관련 설정을 정의하고, http.build()를 통해 SecurityFilterChain 객체를 생성하여 반환한다.
    4. 반환된 SecurityFilterChain 객체는 Spring IoC 컨테이너에 빈으로 등록된다.

profile
backend_Devloper

0개의 댓글