본문 바로가기

spring security

WebSecurity / HttpSecurity

정수원님의 **스프링 시큐리티 완전 정복** 강의 내용 기록입니다 !!

 

 

 

HttpSecurity
  • HttpSecurityConfiguration에서 HttpSecurity를 생성하고 초기화함
  • 보안에 필요한 각 설정 클래스와 필터들을 생성하고 최종적으로 SecurityFilterChain 빈 생성

 

HttpSecurity

보안에 필요한 각각의 Configurer 생성

build()

각각의 Filter 생성

Filter들을 포함하는 SecurityFilterChain 빈 생성

 

 

SecurityFilterChain
  • 여러 개의 Filter들의 목록을 관리
  • SecurityFilterChain ≫ 인터페이스
  • DefaultSecurityFilterChain ≫ 기본으로 제공되는 구현체
    • 인터페이스에 boolean matches(HttpServletRequest request) / List<Filter> getFilters() 메소드 포함
boolean matches(HttpServletRequest request)
- 요청이 현재 SecurityFilterChain에 의해 처리되어야 하는지 여부를 결정
* HttpSecurity는 여러 개의 SecurityFilterChain을 생성할 수 있음
* 각 요청은 특정 SecurityFilterChain에 의해 처리되어야 함
- true 반환하면 ≫ 현재 요청이 이 필터 체인에 의해 처리되어야 함을 의미
- false 반환하면 ≫ 다른 필터 체인이나 처리 로직에 의해 처리되어야 함을 의미
- 특정 요청에 대해 적절한 보안 필터링 로직이 적용될 수 있도록 함
List<Filter> getFilters()
- 현재 SecurityFilterChain에 포함된 Filter 객체의 리스트를 반환
- 어떤 필터들이 현재 필터 체인에 포함되어 있는지 확인
≫ 각 필터는 요청 처리 과정에서 특정 작업 (인증, 권한 부여, 로깅 등) 수행

 

 

요청에 대해 어떤 필터 체인 목록을 가져올 것인가 matches(request)

true이면 해당 필터를 가져옴 getFilters()

요청을 처리

 

 

SecurityFilterChain의 역할 전체 흐름

 

client

request (예: http://localhost:8080/users)

SecurityFilterChain (Filters / RequestMatcher 포함)

RequestMatcher ≫ 해당 요청이 이 RequestMatcher에 의해 처리되어야 하는지 판단 : matches(request)

true ≫ Filters를 가져옴 : getFilters()

false ≫ 다른 필터체인에 의해 처리됨

Filters에 대해 chain.doFilter() ≫ 각각의 filter들에 대해 요청 진행

Filters에 대한 모든 요청이 처리되면

Servlet으로 전달

 

 

WebSecurity
  • WebSecurityConfiguration에서 WebSecurity를 생성하고 초기화 진행
  • WebSecurity는 HttpSecurity에서 생성한 SecurityFilterChian 빈들을 SecurityBuilder에 저장
  • WebSecurity가 build() 실행 ≫ SecurityBuilder에서 SecurityFilterChain들을 꺼내서 FilterChainProxy에 저장

 

WebSecurityConfiguration

WebSecurity 생성

SecurityBuilder에 HttpSecurity들이 생성한 SecurityFilterChain 빈들을 저장

build()

최종적으로 FilterChainProxy 생성

SecurityFilterChains라는 필드에 SecurityFilterChain 빈들의 리스트를 저장

 

FilterChainProxy
- 여러 HttpSecurity가 생성한 여러 SecurityFilterChain 빈들을 모두 가지고 있음
- SecurityFilterChain을 통해 인증/인가 등 보안 처리를 함
- 생성된 모든 SecurityFilterChain 빈들을 통해 보안 처리를 수행하는 것은 FilterChainProxy에서 !

 

 

 

  1. 중요한 SecurityFilterChain / FilterChainProxy 클래스를 생성한 주체는 각각 HttpSecurity와 WebSecurity
  2. FilterChainProxy는 SecurityFilterChain 빈들을 포함하기 때문에 더 상위 개념

 

 

 

 

'spring security' 카테고리의 다른 글

폼 인증 - formLogin()  (0) 2025.01.19
사용자 정의 보안 설정하기  (0) 2025.01.17
DelegatingFilterProxy / FilterChainProxy  (0) 2025.01.13
SecurityBuilder / SecurityConfigurer  (0) 2025.01.13
프로젝트 생성 / 의존성 추가  (0) 2025.01.12