본문 바로가기
개발 관련 지식/Spring Framework Basic

Security - Login Form 인증

by 권태일1147 2022. 3. 29.
  1. 요청이 들어오면 UsernamePasswordAuthenticationFilter를 거친다.
  2. AntPathRequestMatcher가 요청 URL 정보가 login(default) 인지 확인한다.(loginProcessingUrl("/login"))
    • 매치되지 않는다면 다음 필터를 실행한다.
  3. URL 정보가 일치하면 Username + Password가 저장된 Authentication 인증 객체를 만든다.
  4. AuthenticationManager(인증 관리자)에 인증 객체를 넣어서 인증 처리를 실행한다.
  5. AuthenticationManager 내부에는 AuthenticationProvider 객체들을 가지고 있고, 그 중 하나를 선택해서 인증 처리를 위임한다. AuthenticationProvider 클래스가 실질적인 인증 처리를 담당한다.
    • 인증에 실패하면 AuthenticationException을 발생시키고 UsernamePasswordAuthenticationFilter가 exception을 받아서 처리한다.
  6. AuthenticationProvider가 인증에 성공하면 Authentication (이번에는 유저 정보 + 권한 정보) 객체를 만들어서 AuthenticationManager에게 다시 리턴한다.
  7. AuthenticationProvider는 인증 성공 객체(Authentication)를 다시 필터에 반환한다.
  8. 필터는 SecurityContext에 Authentication 인증 성공 객체를 저장한다.(SecurityContext 객체는 인증 객체 저장소라고 생각하면 된다.) 나중에는 SecurityContext 객체가 세션에도 저장되서 전역적으로 인증 객체를 참조할 수 있게 한다.
  9. 인증이 성공한 이후에 SuccessHandler를 실행해서 성공 한 후의 작업을 진행한다.