본문 바로가기

Language/Spring Security

WebSecurity / HttpSecurity

728x90

HttpSecurity

  • HttpSecurityConfiguration에서 HttpSecurity를 생성하고 초기화 진행
  • HttpSecurity는 보안에 필요한 각 설정 클래스와 필터들을 생성하고 최종적으로 SecurityFilterChain 생성
    ★ HttpSecurity의 최종 목적 ⇒ SecurityFilterChain 생성
  • 전반적으로 모든 인증과 인가에 관련된 설정들을 모두 할 수 있으므로 매우 중요

 

SecurityFilterChain 인터페이스의 메서드 설명

  • boolean mathches(HttpServletRequest request)
    • 요청이 현재 SecurityFilterChain에 의해 처리되어야 하는지 여부를 결정
      SecurityFilterChain은 한 개가 아니라 여러 개 일 수 있음
    • true 반환 ⇒ 이 필터 체인에 의한 처리를 의미
    • false 반환 ⇒ 다른 필터 체인이나 처리 로직에 의한 처리를 의미
    • 이를 통해 특정 요청에 대해 적절한 필터 로직이 적용될 수 있도록 함
  • List<Filter> getFilters()
    • 현재 SecurityFilterChaindp 포함된 Filter 객체 리스트 반환
    • 어떤 필터들이 현재 필터 체인에 포함되어 있는지 확인 가능
    • 각 필터는 요청 처리 과정에서 특정 작업(인증, 권한, 로깅 등) 수행

WebSecurity

  • WebSecurityConfiguration에서 WebSecurity를 생성하고 초기화를 진행
  • HttpSecurity에서 생성한 SecurityFilterChain 빈을 SecurityBuilder에 저장
  • WebSecurity가 build()를 실행하면 SecurityBuilder에서 SecurityFilterChain을 꺼내어 FilterChainProxy 객체를 생성할 때 생성자 매개 변수로 전달

 


현재까지의 과정 정리

  1. HttpSecurity에 의해 SecurityFilterChain 생성
  2. WebSecurityConfiguration에 의해 WebSecurity 생성
  3. SecurityFilterChain을 SecurityBuilder에 저장
  4. WebSecurity.build() 실행 → SecurityBuilder에 저장된 SecurityFilterChain을 FilterChainProxy 생성자에게 전달

 

  • URL 요청을 처리할 때 SecurityFilterChain을 사용하지만, SecurityFilterChain 자체가 그 일을 하지 않음
  • 누군가는 필터들의 목록을 가지고 와서 클라이언트 요청을 처리
    FilterChainProxy
  • 지금까지의 초기 과정에서 모든 과정의 흐름이 결국 FilterChainProxy의 빈을 만들어 그 안에 SecurityFilterChain을 저장하는 과정이였다고 생각해도 무방

 

HttpSecurity의 중요 요소 → SecurityFilterChain

WebSecurity의 중요 요소 → FilterChainProxy

HttpSecurity < WebSecurity →  HttpSecurity 보다 WebSecurity가 더 큰 개념

728x90