
스프링 시큐리티란?
- API가 실행될 때 마다 사용자를 인증해야 하는데, 그 인증을 구현해놓은 것
- 스프링 시큐리티는 스프링 기반의 애플리케이션의 보안을 담당하는 스프링 하위 프레임워크
- 인증 및 인가를 담당
- 서블릿 필터와 이들로 구성된 필터체인으로의 구성된 위임 모델을 사용
접근 주체 (Principal) : 보호된 대상에 접근하는 유저
인증 (Authentication) : 인증은 ‘증명하다’라는 의미로, 유저 아이디와 비밀번호를 이용하여 로그인하는 과정을 말함
인가 (Authorization) : ‘권한부여’나 ‘허가’와 같은 의미로 사용된다.
권한 : 인증된 주체가 애플리케이션의 동작을 수행할 수 있도록 허락되었는지를 결정할 때 사용된다. 즉, 인가 과정에서 해당 리소스에 대한 제한된 최소한의 권한을 가졌는지 확인
보안과 관련하여 체계적으로 많은 옵션을 제공하여 편리하게 사용가능
Filter 기반으로 동작하여 MVC와 구분하여 관리 및 동작
어노테이션을 통해 간단한 설정 가능
기본적으로 세션 & 쿠키방식으로 인증
인증 관리자와 접근 결정 관리자를 통해 사용자의 리소스 접근을 관리
인증 관리자는 UsernamePasswordAuthenticationFilter
접근 관리자는 FilterSecurityInterceptor

📄 인증 절차
- AuthenticationManager를 통한 인증 실행
- 인증 성공 시, 얻은 Authentication 객체를SecurityContext에 저장
- AuthenticationSuccessHandler 실행
- 인증 실패 시, AuthenticationFailureHandler 실행