Spring Security란?
Spring 기반의 애플리케이션의 보안(인증, 인가 등)을 담당하도록 도와주는 스프링의 하위 프레임워크
인증과 인가
1. 인증 (Authentication)
인증은 사용자의 신원을 입증하는 과정이다. (본인이 맞는지 확인한다.)
2. 인가 (Authorization)
인가는 사이트의 요청 자원에 접근할 수 있는 권한을 가지고 있는지 확인하는 과정이다.
Spring Security의 동작 과정
- 폼 로그인 방식 + Spring Security

1. 사용자가 form을 통해 로그인 정보(ID/PW)를 담은 요청을 보낸다.
2. AuthenticationFilter에서 요청을 받아 수신된 요청에서 사용자 이름과 비밀번호를 추출한다.
3. 추출된 사용자의 자격 증명을 기반으로 UsernamePasswordAuthenticationToken(인증용(Authentication) 객체)을 생성한다.
4. AuthenticationManager 의 인터페이스의 실제 구현체인 ProviderManager에는 인증에 필요한 AuthenticationProvider 리스트가 있다.
5. ProviderManager는 각 AuthenticationProvider를 살펴보면서 인증용 객체를 기반으로 사용자 인증을시도한다.
6. AuthenticationProvider는 UserDetailService의 loadUserByUsername 메소드를 이용해 DB의 사용자 정보(회원가입한 회원 정보)와 인증용 객체를 비교한다. (해당 토큰이 회원가입한 유저인지 확인)
- loadUserByUsername() 메서드
로그인 페이지에서 입력한 아이디(이메일)을 매개변수로 받아, 해당 매개변수의 유저가 DB에 있다면 UserDetails를 반환한다.
7. Authentication 객체와 해당 DB 유저 정보가 일치하는 경우(인증 성공) Authentication을 반환한다.
(일치하지 않는 다면 예외를 던진다. -> AuthenticationEntryPoint에서 처리됨)
8.인증이 완료된 Authentication 객체를 AuthenticationFilter로 반환한다.
9. Autentication 객체를 SecurityContextHolder에 담은 후 AuthenticationSuccessHandler를 실행한다.
(실패 시에는 AuthenticationFailureHandler를 실행)
'Spring > JWT' 카테고리의 다른 글
| [Spring] JWT의 개념과 구조 (0) | 2025.03.03 |
|---|