Spring Security
Spring Security is a powerful and highly customizable authentication and access-control framework. It is the de-facto standard for securing Spring-based applications. Spring Security is a framework that focuses on providing both authentication and authoriz
spring.io
Spring Security는 강력하고 고도로 사용자 정의 가능한 인증 및 접근 제어 프레임워크이다. Spring 기반 애플리케이션의 보안을 위한 사실상의 표준이며, Java 애플리케이션에 인증과 권한 부여를 제공하는 데 중점을 둔 프레임워크이다. 모든 Spring 프로젝트처럼, Spring Security의 진정한 강점은 사용자 정의 요구 사항을 충족시키기 위해 얼마나 쉽게 확장할 수 있는지에서 찾을 수 있다.
스프링 시큐리티란?
스프링 기반 웹 애플리케이션에서 인증(Authentication)과 권한(Authorization)을 담당하는 스프링의 하위 프레임워크
스프링에서 보안과 관련된 기능을 구현하고, 애플리케이션의 취약점을 방지해 안전한 서비스를 제공함으로써 개발자가 일일이 보안 관련 로직을 작성하지 않아도 된다는 편리함이 있다.

스프링 시큐리티의 흐름
1. 사용자가 Http 요청
- 사용자가 로그인 요청을 넣은 것입니다.
2. 유저 자격을 기반으로 인증토큰 생성
- AuthenticationFilter(인증필터)가 요청을 가로채고 그 요청에서 정보( username, password )를 추출합니다.
- 이 추출된 정보로 UsernamePasswodAuthenticationToken의 인증토큰을 생성합니다.
3. Filter를 통해 인증토큰을 인증관리자(AuthenticationManager)로 위임
- AuthenticationFilter(인증필터)는 UsernamePasswordAuthenticationToken(인증토큰)을 인증을 관리하는 인터페이스인 AuthenticationManager로 전달합니다.
4. 인증공급자(AuthenticationProvider)의 목록으로 인증을 시도
- AuthenticationManager(인증 관리자)는 하나 이상의 AuthenticationProvider(인증 공급자)에게 인증 요청을 위임합니다.
- 실제 인증 논리, 로직을 구현하여 인증을 시도합니다.
5. UserDetailsService의 요구
- AuthenticationProvider(인증 공급자)는 UserDetailsService로 사용자를 찾고 암호 인코더로 암호를 검증합니다.
- 실제 DB에서 사용자 인증정보를 가져오는 로직이 UserDetailsService에 구현합니다.
6. UserDetails를 이용해 User객체 만들기
- DB에서 찾은 사용자의 권한 및 기타 인증 정보를 포함한 정보들로 UserDetails 객체를 만듭니다.
7. 인증공급자(AuthenticationProvider)가 검증
- AuthenticationProvider(인증 공급자)는 UserDetails 객체를 사용하여 사용자가 제공한 인증 정보를 검증합니다.
8, 9. 인증 객체 또는 인증 에러
- 인증이 검증되어 완료가 되면 사용자 정보가 담긴 Authentication(인증) 객체를 반환합니다.
10. SecurityContext에 인증 객체를 설정
- AuthenticationFilter(인증필터)는 SecurityContextHolder(보안 컨텍스트)에 인증 정보를 저장합니다.
- SecurityContextHolder(보안 컨텍스트)는 현재 활성화된 보완 컨텍스트를 저장하고 있는 싱글톤 클래스입니다.
참조
'개발 | 프로젝트 > Java | Spring' 카테고리의 다른 글
[Spring boot] @Transactional 이란? (0) | 2025.04.08 |
---|---|
[Spring Boot] GlobalExceptionHandler 예외 처리 (0) | 2025.04.06 |
[Spring Security] UsernamePasswordAuthenticationFilter Authentication Flow (0) | 2025.03.21 |
[Spring] Spring Security CSS 적용 안되는 오류 (0) | 2025.02.27 |
[Spring] 개방-폐쇄 원칙 (OCP, Open Closed Principle) (0) | 2025.02.18 |