UsernamePasswordAuthenticationFilter
- Form Login 시도 시 인증처리를 담당하고 처리하는 필터
AntPathRequestMatcher
- 요청 정보가 매칭되는지 확인한다.
- default는 login이고 loginProcessingUrl을 변경하면 변경 된 정보로 매칭작업 진행한다.
Authentication
- Authentication 객체를 생성 후 사용자가 로그인 할 때 전달된 Username + Password 값을 인증 객체에 저장하고 AuthenticationManager에 인증을 위임한다.
AuthenticationManager
- AuthenticationManager는 내부적으로 AuthenticationProvider 타입의 객체들을 포함하고 있고 이 객체들 중에서 하나를 선택해서 인증처리를 위임한다.
AuthenticationProvider
- 실제적으로 인증처리를 담당하는 클래스
- 인증 성공/실패 여부를 판단하고 결과를 리턴한다.
- 인증 성공 시 Authentication 객체를 생성하고 이를 AuthenticationManager에 전달한다. (User + Authorities)
- 인증 실패 시 AuthenticationException을 발생 시키고 이 예외를 UsernamePasswordAuthenticationFilter가 받아서 그 후속 작업을 처리한다.
SecurityContext
- 인증 성공 시 UsernamePasswordAuthenticationFilter는 AuthenticationManager로 부터 인증 객체를 전달받게 되고 이를 SecurityContext 객체에 저장한다.
- 전역적으로 인증 객체를 참조 가능하고 인증 정보 조회시에 사용할 수 있다.
SuccessHandler
- 성공 이후의 작업들을 정의한다.
- AbstractAuthenticationProcessingFilter.java
protected void successfulAuthentication(HttpServletRequest request, HttpServletResponse response, FilterChain chain, Authentication authResult) throws IOException, ServletException {
SecurityContextHolder.getContext().setAuthentication(authResult);
...
}
참조 : 스프링 시큐리티 - Spring Boot 기반으로 개발하는 Spring Security 강좌