이 글은 정수원님의 Infrean 강의를 학습한 내용을 정리하여 작성합니다.
인증 API - Login Form 이증
- UsernamePasswordAuthenticationFilter
- Form based Authentication 방식으로 인증을 진행할 때 아이디, 패스워드 데이터를 파싱하여 인증 요청을 위임하는 필터이다.
- AntPathRequestMatcher(/login)
- 현재 요청 정보의 URL이 '/login' 으로 시작하는지 검사한다.
- 기본적으로 '/login' 으로 시작한다.
- 이때 지난 글에서 사용한 loginProcessingUrl() 메소드를 통해 URL 변경이 가능하다.
- Authentication
- Authentication 객체 생성 후 내부에 Username과 Password 값을 저장한다.
- AuthenticationManager
- 인증 작업을 처리한다.
- 내부적으로 AuthenticationProvider 객체들을 가진다.
- AuthenticationProvider 객체들 중 하나를 선택해 인증 처리를 위임한다.
- 실질적으로 인증 처리 작업을 담당한다.
- 인증이 실패하면 AuthenticationException 예외를 발생시킨다.
- 인증이 성공하면 Authentication 객체 생성 후 AuthenticationManager에게 반환한다.
- 인증이 성공한 User 객체와 권한 정보 Authoriteis 객체를 생성해 Authentication 객체 내부에 저장한다.
- AuthenticationManager를 필터에 다시 반환한다.
- SecurityContext에 저장한다.
- Authentication을 저장하는 저장소 혹은 보관소 역할을 담당한다.
- SecurityContext 객체가 Session에 저장된다.
- SuccessHandler 작업을 수행한다.
[참고]
SecurityContextHolder.getContext().getAuthentication();
위치와 관계없이 위와 같은 구문을 사용해 Authentication 객체를 참조할 수 있다.
인증 API - UsernamePasswordAuthenticationFilter
'스프링 시큐리티 > 스프링 시큐리티 기본 API 및 Filter 이해' 카테고리의 다른 글
Remember Me 인증 (0) | 2023.01.10 |
---|---|
Logout 처리, LogoutFilter (1) | 2023.01.10 |
인증 API - Form 인증 (1) | 2023.01.09 |
HTTP Basic 인증, BasicAuthenticationFilter (0) | 2023.01.09 |
사용자 정의 보안 기능 구현 (1) | 2023.01.09 |