Spring Security
기본설정
모듈 추가와 동시에 기본 보안이 설정됨
- Any Request에 대해 Authenticated가 설정됨
- 로그인을위해 formLogin과 HTTP BASIC 방식을 제공함
- 자동으로 계정이 생성됨
문제점
하지만, 실제 서비스 운영이 불가능함
- 계정 생성 기능이 없음
- 실제 요구되는 권한 조건을 만족하지 못함 (권한 세분화 )
HttpSecurity
역할
보안에 필요한 각 설정 클래스와 필터들을 생성하고 최종적으로 SecurityFilterChain 빈 생성
구성
- HttpSecurityConfiguration
- HttpSecurity를 생성하는 클래스
- SpringBootWebSecurityConfiguration
- Spring Security와 Spring Boot를 통합하여 웹 애플리케이션의 보안 구성을 간편하게 만들어줌
- SecurityBuilder
- 웹 보안을 구성하는 빈 객체와 설정 클래스 생성
- WebSecurty, HttpSecurity
- SecurityConfigurer
- Http 요청과 관련된 보안처리 필터를 생성하고 초기화 설정 관여
- SecurityFilterChain
- RequestMatcher에 적용되는 SecurityFilter들의 집합
라이프 사이클
- HttpSecurityConfiguration 에서 HttpSecurity를 생성
- SpringBootWebSecurityConfiguration에서 HttpSecurity를 주입받아 build()실행
- build() 과정에서 SecurityConfigurer의 구현체들의 init과 configurer를 실행
- 최종적으로 SecurityFilterChain 생성
플로우
HttpSecurity ⇒ SecurityFilterChain
WebSecurity
역할
- HttpSecury의 SecurityFilterChain을 이용해 FilterChainProxy 를 생성
구성
- WebSecurityConfiguration
- WebSecurity를 생성하는 클래스
- FilterChainProxy
- FilterChainProxy는 여러 개의 SecurityFilterChain을 관리하고, 요청 URL에 맞는 적절한 필터 체인을 선택하여 실행
라이프 사이클
- WebSecurityConfiguration 에서 WebSecurity 를 생성
- WebSecurity 는 HttpSecurity 에서 생성한 SecurityFilterChain 빈을 SecurityBuilder 에 저장
- build()를 실행하면 SecurityBuilder에서 SecurityFilterChain을 꺼내 FilterChainProxy 생성자에 전달
플로우
WebSecurity ⇒ HttpSecurity ⇒ SecurityFilterChain ⇒ FilterChainProxy
반응형