Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- JPA
- N+1문제
- 티스토리챌린지
- QA
- 프로세스와스레드의차이
- 오블완
- springboot
- 헥사고날아키텍처
- n8n
- 부트캠프
- XSS
- 하이브리드접근법
- 메소드
- Java
- STOMP
- 테스트케이스
- 자동화워크플로우
- Kafka
- 스프링시큐리티
- 엘라스틱서치
- 프로토콜역할
- selenium
- jwt토큰
- 자료구조
- 오버로딩
- kafka배포
- 자바
- 캐시의 작동 원리
- 한화시스템부트캠프
- nplus1
Archives
- Today
- Total
아쿠의 개발 일지
[Security] UsernamePasswordAuthenticationFilter 인증 과정 본문
해당 이미지를 어디선가 많이 보셨을텐데요... 네 맞습니다. 인증 수행 과정입니다.
SecurityFilterChain에서 사용하는 필터 중 UsernamePasswordAuthenticationFilter를 통해 인증 처리를 합니다.
위 그림의 인증 수행 과정을 설명하면 다음과 같습니다.
1. HTTP 요청 처리
- 특정 URL에 대해 HTTP POST 요청을 가로챕니다.
- 기본적으로 이 URL은 /login이며, 변경하려면 setFilterProcessesUrl() 메서드를 사용하면 됩니다.
2. 사용자 인증 정보 추출
- 필터는 요청으로부터 username과 password 값을 추출합니다.
- 기본적으로 폼 필드는 username과 password로 기대합니다. 커스터마이징하려면 setUsernameParameter() 및 setPasswordParameter() 메서드를 사용하면 됩니다.
{
"username": "user@example.com",
"password": "securePassword"
}
3. UsernamePasswordAuthenticationToken 생성
- 추출한 인증 정보를 사용해 UsernamePasswordAuthenticationToken 객체를 생성합니다.
- 이 객체는 Authentication 인터페이스의 구현체이며, 사용자의 이름, 비밀번호 , 권한 정보를 포함하게 됩니다.
4. AuthenticationManager에 인증 위임
- UsernamePasswordAuthenticationFilter는 생성한 UsernamePasswordAuthenticationToken을 AuthenticationManager로 전달합니다.
5. UserDetailsService를 통한 사용자 조회
- 일반적으로, DaoAuthenticationProvider가 사용되며, 이는 내부적으로 UserDetailsService를 호출합니다.
- UserDetailsService는 데이터베이스 또는 다른 저장소에서 사용자의 정보를 조회합니다.
6. 비밀번호 검증
- UserDetailsService가 반환한 비밀번호와 사용자가 입력한 비밀번호를 비교합니다.
- Spring Security는 내부적으로 PasswordEncoder를 사용하여 암호를 비교합니다.
- 비밀번호가 일치하지 않으면 예외(BadCredentialsException)가 발생합니다.
7. 성공적인 인증 처리
- 인증이 성공하면 Authentication 객체가 생성되고, 이 객체는 현재 사용자의 이름, 권한, 기타 정보를 포함합니다.
- 성공한 Authentication 객체는 SecurityContextHolder에 저장됩니다.
8. 결과 처리
- UsernamePasswordAuthenticationFilter는 successHandler를 호출합니다.
- 기본적으로 SavedRequestAwareAuthenticationSuccessHandler가 사용되어 사용자를 인증 후 원래 요청 페이지로 리다이렉트합니다.
이 글에서는 UsernamePasswordAuthenticationFilter가 어떻게 동작하는지에 대해 자세하게 살펴 보았습니다.
인증 과정이 조금 복잡할 수는 있지만, 내부 동작을 이해하면 보안 설정을 보다 효율적으로 커스터마이징할 수 있습니다.
나중에는 OAuth2 인증 프로세스에 대해서 알아보는 시간을 가지겠습니다. 감사합니다!
728x90
'Programming > CS' 카테고리의 다른 글
운영체제(Operating System)의 핵심 개념 (0) | 2025.01.14 |
---|---|
[Network] SSL 인증서 적용 & K8S 클러스터 Ingress-nginx 활용 (0) | 2025.01.08 |
[Network] HTTP/HTTPS 차이점, SSL 인증서 다운로드 받기 (4) | 2025.01.07 |
[Security] JWT(JSON Web Token)토큰이란? (2) | 2024.12.31 |
[OOP] 디자인 패턴(Design Pattern)? (0) | 2024.12.30 |