인증(Authentication)과 인가(Authorization)를 처리하는 강력하고 맞춤화 가능한 보안 프레임워크.
서블릿 필터 체인을 기반으로 동작하여 CSRF 보호, 로그인/로그아웃, 세션 관리 등 핵심 보안 기능을 제공하며, 복잡한 보안 설정을 간소화하여 외부 공격으로부터 시스템을 안전하게 보호한다.
Authentication (인증): 사용자가 누구인지 확인 (로그인).
Authorization (인가): 인증된 사용자의 권한에 따라 리소스 접근을 제어한다. 예를 들어 관리자와 일반 사용자는 서로 다른 범위의 정보들을 열람할 수 있는 권한을 인가한다.
보안 필터 체인: SecurityFilterChain을 통해 HTTP 요청을 가로채고 보안 로직을 적용한다.
CSRF/CORS 보호: CSRF 토큰을 자동으로 생성하여 취약점을 방지한다.
비밀번호 암호화: 단방향 해시 암호화 (BCrypt)를 통해 회원가입 시 비밀번호를 보호한다.

Spring Security는 다양한 기능을 가진 필터들을 10개 이상 기본적으로 제공한다. 이렇게 제공되는 필터들을 Security Filter Chain이라고 한다.
Spring Security는 기본적으로 순서가 있는 Security Filter를 제공하고, 기본으로 제공하는 Filter를 구현한게 아니라면 필터의 순서를 지정해주어야 한다.
Spring Securiy의 인증-인가 부분은 책임 연쇄 패턴의 구조를 띄고 있어 해당 Filter들을 차례대로 하나씩 거쳐가면서 사용자의 요청을 인증해 나가는 방식이다. 따라서, 모든 인증을 통과할 필요가 없으면 특정 커스텀하게 설정한 Filter를 연쇄적으로 연결되어 있는 체인의 중간에 삽입할 수도 있다.

Http Request)AuthenticationFilter가 요청을 가로채고, 가로챈 정보를 통해 UsernamePasswordToken 객체를 생성한다.AuthenticationManager의 구현체인 ProviderManager에게 생성한 UsernamePasswordToken객체를 전달한다.AuthenticationManager는 등록된 AuthenticationProvider(들)을 조회하여 인증을 요구한다.