- 요청이 들어오면 UsernamePasswordAuthenticationFilter를 거친다.
- AntPathRequestMatcher가 요청 URL 정보가 login(default) 인지 확인한다.(loginProcessingUrl("/login"))
- 매치되지 않는다면 다음 필터를 실행한다.
- URL 정보가 일치하면 Username + Password가 저장된 Authentication 인증 객체를 만든다.
- AuthenticationManager(인증 관리자)에 인증 객체를 넣어서 인증 처리를 실행한다.
- AuthenticationManager 내부에는 AuthenticationProvider 객체들을 가지고 있고, 그 중 하나를 선택해서 인증 처리를 위임한다. AuthenticationProvider 클래스가 실질적인 인증 처리를 담당한다.
- 인증에 실패하면 AuthenticationException을 발생시키고 UsernamePasswordAuthenticationFilter가 exception을 받아서 처리한다.
- AuthenticationProvider가 인증에 성공하면 Authentication (이번에는 유저 정보 + 권한 정보) 객체를 만들어서 AuthenticationManager에게 다시 리턴한다.
- AuthenticationProvider는 인증 성공 객체(Authentication)를 다시 필터에 반환한다.
- 필터는 SecurityContext에 Authentication 인증 성공 객체를 저장한다.(SecurityContext 객체는 인증 객체 저장소라고 생각하면 된다.) 나중에는 SecurityContext 객체가 세션에도 저장되서 전역적으로 인증 객체를 참조할 수 있게 한다.
- 인증이 성공한 이후에 SuccessHandler를 실행해서 성공 한 후의 작업을 진행한다.
'개발 관련 지식 > Spring Framework Basic' 카테고리의 다른 글
Security - RememberMeAuthenticationFilter (0) | 2022.03.29 |
---|---|
Security - LogoutFilter (0) | 2022.03.29 |
요청 메시지 - HttpEntity, @RequestBody (0) | 2022.02.19 |
요청 파라미터 - @RequestParam, @ModelAttribute (0) | 2022.02.19 |
@Autowired (0) | 2020.05.26 |