정수원님의 **스프링 시큐리티 완전 정복** 강의 내용 기록입니다 !!
Security Builder와 SecurityConfigurer
- Security Builder : 빌더 클래스 - 웹 보안을 구성하는 빈 객체와 설정 클래스들을 생성하는 역할
- WebSecurity / HttpSecurity 대표적
- Security Configurer : 설정 클래스 - Http 요청과 관련된 보안 처리를 담당하는 필터들을 생성하고 여러 초기화 설정에 관여함
- Security Builder가 SecurityConfigurer를 이용해서 인증 및 인가 초기화 작업을 진행
≫ 실제 초기화 작업 (필터 생성 등)은 SecurityConfigurer에서 이루어짐
SecurityBuilder<O> (HttpSecurity / WebSecurity / AuthenticationManagerBuilder)
↓ 참조
SecurityConfigurer<O, B> (SecurityContextConfigurer<H> / HttpBasicConfigurer<B> ...등 다양)
초기화 과정
AutoConfiguration : 자동 실행
↓
build()
↓
빌더 클래스 생성
↓
SecurityBuilder (HttpSecurity 빈 생성)
↓
설정 클래스 생성
↓
SecurityConfigurer (FormLoginConfigurer, HttpBasicConfigurer, ... 등 여러 Configurer 생성)
↓
초기화 작업 진행
↓
init(B builder) / configure(B builder)
↓
각각의 Configurer마다 Filter 및 객체 생성
↓
Filter를 통해 인증, 인가 작업 수행
HttpSecurityConfiguration.java
- HttpSecurity 생성 → http
- http를 통해 여러 보안 기능에 대해 초기화 과정 진행 (csrf, addFilter, ...)
- 각 설정 내부에서는 각 기능에 대한 Configurer 설정 클래스를 생성하여 초기화 작업 진행
- http 빈 객체 생성
- SpringBootWebSecurityConfiguration 클래스에서 HttpSecurity 빈 객체를 주입받음
- formLogin, httpBasic에 대한 초기화 작업도 진행 → Configurer 설정 클래스 생성
- http.build() ≫ 실제로 Configurer의 init(), configure() 메소드를 실행하여 초기화 작업 완성
- init() ≫ 각각의 Configurer에 대해 init() 메소드 실행 → 객체 만들고 공유하는 작업 (초기화 작업)
- configure() ≫ 각각의 Configurer에 대해 configure() 메소드 실행 → 필터와 필요한 객체 생성 (실제 설정 작업)
- build() 작업이 끝나면 SecurityFilterChain이 생성됨
'spring security' 카테고리의 다른 글
폼 인증 - formLogin() (0) | 2025.01.19 |
---|---|
사용자 정의 보안 설정하기 (0) | 2025.01.17 |
DelegatingFilterProxy / FilterChainProxy (0) | 2025.01.13 |
WebSecurity / HttpSecurity (0) | 2025.01.13 |
프로젝트 생성 / 의존성 추가 (0) | 2025.01.12 |