시큐리티는 완존히 문외한이라 뭔 얘길 해도 알아먹을 수가 없다
공부...를 ... 해야... 한...다.....
틀릴 수도 있음...
1. 클라이언트 요청
- 사용자가 애플리케이션에 요청(예: /profile 경로).
2. FilterChain을 통한 요청 처리
- 요청은 Spring Security의 FilterChain을 통과
- 주요 필터:
- SecurityContextPersistenceFilter: 기존 SecurityContext를 복원
- UsernamePasswordAuthenticationFilter: 사용자 인증 처리(예: 로그인 요청 처리).
- 기타 필터: 권한 확인, 세션 관리, CSRF 보호 등 추가 작업 수행.
3. AuthenticationProvider를 통한 인증
- AuthenticationManager가 AuthenticationProvider를 호출
- 인증 방식(예: Username/Password, OAuth 등)에 따라 적절한 AuthenticationProvider가 선택
- 인증 과정:
- 사용자가 입력한 정보를 검증
- 인증 성공 시, Authentication 객체를 반환
4. Authentication 객체 저장
- 인증 성공 시:
- 반환된 Authentication 객체는 SecurityContext에 저장
- SecurityContext는 SecurityContextHolder를 통해 애플리케이션 어디에서든 접근 가능
5. DispatcherServlet으로 요청 전달
- Spring Security 필터 체인을 통과한 요청은 DispatcherServlet으로 전달
- DispatcherServlet은 요청을 적절한 컨트롤러로 라우팅
6. Controller에서 Authentication 사용
- 컨트롤러 메서드에서 @AuthenticationPrincipal로 Principal 객체를 바로 사용할 수 있음
- 이 객체는 Authentication 객체 내부에 있는 사용자 정보임
@GetMapping("/profile")
public String getProfile(@AuthenticationPrincipal CustomUserDetails userDetails) {
return "Welcome, " + userDetails.getFullName();
}
클라이언트 요청
↓
FilterChain 처리
↓
AuthenticationProvider 인증
↓
Authentication 저장 (SecurityContextHolder)
↓
DispatcherServlet이 요청 처리
↓
Controller에서 요청 처리 및 사용자 정보 접근
'Spring' 카테고리의 다른 글
빈약한 도메인 모델 vs 풍성한 도메인 모델 (0) | 2024.12.19 |
---|---|
ServletResponse.isComitted(), FilterChain (with GPT) (2) | 2024.12.19 |
(지피티 선생님의) 람다와 일급 객체, FP 특강 (0) | 2024.12.12 |
WebFlux 첨들어봄 (1) | 2024.12.10 |
Spirng AOP (3) | 2024.09.03 |