728x90
HttpSecurity
- HttpSecurityConfiguration에서 HttpSecurity를 생성하고 초기화 진행
- HttpSecurity는 보안에 필요한 각 설정 클래스와 필터들을 생성하고 최종적으로 SecurityFilterChain 생성
★ HttpSecurity의 최종 목적 ⇒ SecurityFilterChain 생성 - 전반적으로 모든 인증과 인가에 관련된 설정들을 모두 할 수 있으므로 매우 중요
SecurityFilterChain 인터페이스의 메서드 설명
- boolean mathches(HttpServletRequest request)
- 요청이 현재 SecurityFilterChain에 의해 처리되어야 하는지 여부를 결정
→ SecurityFilterChain은 한 개가 아니라 여러 개 일 수 있음 - true 반환 ⇒ 이 필터 체인에 의한 처리를 의미
- false 반환 ⇒ 다른 필터 체인이나 처리 로직에 의한 처리를 의미
- 이를 통해 특정 요청에 대해 적절한 필터 로직이 적용될 수 있도록 함
- 요청이 현재 SecurityFilterChain에 의해 처리되어야 하는지 여부를 결정
- List<Filter> getFilters()
- 현재 SecurityFilterChaindp 포함된 Filter 객체 리스트 반환
- 어떤 필터들이 현재 필터 체인에 포함되어 있는지 확인 가능
- 각 필터는 요청 처리 과정에서 특정 작업(인증, 권한, 로깅 등) 수행
WebSecurity
- WebSecurityConfiguration에서 WebSecurity를 생성하고 초기화를 진행
- HttpSecurity에서 생성한 SecurityFilterChain 빈을 SecurityBuilder에 저장
- WebSecurity가 build()를 실행하면 SecurityBuilder에서 SecurityFilterChain을 꺼내어 FilterChainProxy 객체를 생성할 때 생성자 매개 변수로 전달
현재까지의 과정 정리
- HttpSecurity에 의해 SecurityFilterChain 생성
- WebSecurityConfiguration에 의해 WebSecurity 생성
- SecurityFilterChain을 SecurityBuilder에 저장
- WebSecurity.build() 실행 → SecurityBuilder에 저장된 SecurityFilterChain을 FilterChainProxy 생성자에게 전달
- URL 요청을 처리할 때 SecurityFilterChain을 사용하지만, SecurityFilterChain 자체가 그 일을 하지 않음
- 누군가는 필터들의 목록을 가지고 와서 클라이언트 요청을 처리
→ FilterChainProxy - 지금까지의 초기 과정에서 모든 과정의 흐름이 결국 FilterChainProxy의 빈을 만들어 그 안에 SecurityFilterChain을 저장하는 과정이였다고 생각해도 무방
HttpSecurity의 중요 요소 → SecurityFilterChain
WebSecurity의 중요 요소 → FilterChainProxy
HttpSecurity < WebSecurity → HttpSecurity 보다 WebSecurity가 더 큰 개념
728x90
'Language > Spring Security' 카테고리의 다른 글
폼 인증 - formLogin() (0) | 2024.07.15 |
---|---|
사용자 정의 보안 설정하기 (0) | 2024.07.15 |
DelegatingFilterProxy / FilterChainProxy (0) | 2024.07.15 |
SecurityBuilder / SecurityConfigurer (0) | 2024.07.15 |
프로젝트 생성 / 의존성 추가 (0) | 2024.07.15 |