✔️Spring Security란 무엇인가?
스프링 기반의 보안 프레임워크로 인증, 권한부여, 일반적인 공격에 대해 보호 기능을 제공하고 스프링 부트에서 쉽게 사용할수 있으며 OAuth2,JWT 기반인증 이나 역할 기반 접근 제어등의 기능을 제공한다
스프링 시큐리티는 컨트롤러에 도착하기전 서블릿 필터들의 체인이 요청을 먼저 검사하는 구조를 가지고 있다
즉 브라우저에서 요청을 보내면 바로 컨트롤러롤 가지 않고 Security Filter Chain을 통과하게 되는데 여기서 인증과 권한 작업을 수행한다
장점 : 보안을 표준구조로 강력하고 일관되게 관리할수 있다
단점 : 초기 진입 장벽이 높고 설정과 흐름이 복잡하다
✔️용어정리
📌인증(Authentication)
사용자의 신원을 확인 하는 객체다 이안에 principal(사용자 정보)와 authorities(권한목록)이 담긴다
로그인을 성공하면 Authentication을 생성하고 SecurityContext에 저장한다 이후 요청은 SecurityContex에서 로그인한 사용자로판단된다
📌인가(Authorization)
인증된 사용자가 요청한 자원에 접근 가능한지를 결정하는 과정
✔️Spring Security 실행구조

1.Http Request 수신
사용자가 로그인 요청을 보낸다 로그인 정보는 username과 password형식이다
2.유저 자격을 기반을 인증 토큰생성
사용자의 로그인 요청은 컨트롤러로 가지 않고 AuthenticationFilter가 이 요청을 가로챈다 이 가로챈 정보에서 username,password를 꺼내서 UsernamePasswordAuthenticationToken의 인증용 객체를 만든다 이시점에서는 아직 인증 되지 않은 상태이다
3. Filter를 통해 AuthenticationToken을 AuthenticationManager로 위임
AuthenticationFilter는 직접 인증을 하지 않고 AuthenticationManager에게 인증을 맡긴다
4. AuthenticationManager가 적절한 AuthenticationProvider 선택
ProviderManager는 여러개의 AuthenticationProvider중 이 토큰을 처리할수 있는 provider에 인증 작업을 맡긴다
5. AuthenticationProvider가 UserDetailsService 호출
선택된 AuthenticationProvider는 UserDetailsService를 호출해서 사용자 정보조회를 시작한다
6. UserDetailsService가 User 정보 조회
UserDetailsService는 DB에서 조회한 회원정보를 UserDetails 객체로 반환한다
7. UserDetails 객체 반환
조회된 사용자 정보가 담긴 UserDetails 객체가 AuthenticationProvider로 반환한다
8.인증 처리 및 결과를 AuthenticationManager로 반환
AuthenticationProvider는 사용자가 입력한 비밀번호와 DB에 저장된 비밀번호와 비교하여 인증을수행하고 그 결과를 AuthenticationManager로 반환한다 인증이 성공하면 인증이 완료된 Authentication 객체를 생성한다
9. AuthenticationFilter로 반환
AuthenticationManager는 인증 결과를 다시 AuthenticationFilter에게 돌려준다
10. SecurityContextHolder에 저장
AuthenticationFilter는 인증에 성공하면 해당 Authentication 객체를 SecurityContext에 저장한다
SecurityContextHolder
└─ SecurityContext
└─ Authentication
이시점 부터 인증완료 즉 로그인 상태가 되고 인증이 완료되면 SecurityContext는 세션(JSESSIONID)에 저장된다
따라서 이후요청시 SecurityContext에서 Authentication을 꺼내서 사용한다
📌핵심 정리
✔️핵심객체 역할 정리
| 객체명 | 역할 |
| AuthenticationFilter |
|
| AuthenticationManager |
|
| AuthenticationProvider |
|
| UserDetailsService |
|
| UserDetails |
|
| SecurityContextHolder |
|
✔️핵심 포인트
- Filter는 인증을 직접 하지 않는다
- 인증 로직은 Provider에 있다
- 인증 결과는 SecurityContext에 저장된다
- 이 구조 덕분에 인증 방식 확장이 쉽다
'🐢 꼬부기 LV.1 | 개념•기초 > 💧물대포(핵심개념)' 카테고리의 다른 글
| GitHub 업로드 전, 커밋에서 특정 파일 빼는 법 (0) | 2026.02.13 |
|---|---|
| SQL 자격검정 실전문제 과목 1 제 2장 오답노트 (0) | 2026.02.12 |
| SQL 자격검정 실전문제 과목 1 제1장 오답노트 (0) | 2026.02.10 |
| Mybatis 사용해보기 (0) | 2026.02.09 |
| 스프링 부트에서 비동기 처리하기 (0) | 2026.02.04 |