- 웹 개발 과정에서 필수적인 사용자 관리 기능 (인증, 권한 관리 그리고 데이터 보호 기능 등)을 구현하는데 도움을 주는 spring 하위 framework
사용하는 이유
- 일반적으로 개발 시 가장 먼저 작업하는 부분이 사용자 관리 부분(회원가입, 로그인, 로그아웃, 세션 관리, 권한 관리)을 온라인 플랫폼에 맞춰 인가 & 보안 기능을 작업하는데 많은 시간이 소요 됨
- Spring 내에서 이러한 요구사항을 효과적으로 지원하기 위해 개발 된 Framework 이며, 보안 관련 기능을 효율적이고 신속하게 구현할 수 있음
Spring Security Architecture(구조)

Spring Security는 기본적으로 필터 기반으로 동작한다.
1. Http Request 수신
- HTTP 기본 인증 요청 : BasicAuthenticationFilter
- HTTP Digest 인증 요청 : DigestAuthenticationFilter
- Login Form에 의한 인증 요청 : UsernamePasswordAuthenticationFilter
- 509 인증 요청 : X509AuthenticationFilter
2. 유저 자격을 기반으로 인증토큰 생성
-
AuthenticationFilter가 요청을 가로채고, 가로챈 정보를 통해 UsernamePasswordAuthenticationToken의 인증용 객체를 생성한다.
3. FIlter를 통해 AuthenticationToken을 AuthenticationManager로 위임
-
AuthenticationManager의 구현체인 ProviderManager에게 생성한 UsernamePasswordToken 객체를 전달한다.
4. AuthenticationProvider의 목록으로 인증을 시도
-
AutenticationManger는 등록된 AuthenticationProvider들을 조회하며 인증을 요구한다.
5. UserDetailsService의 요구