1. Form Login

2. Form Login 용어정리

  1. configure() : Client 기능 정의하기 위한 작업
  2. http.formLogin() : Form Login 기능을 실행하겠다는 의미
  3. loginPage(””) : 인증이 필요할 때 이동하는 페이지 설정하는 API부분임, API를 설정하지 않을 경우 Default로 Spring Security가 제공하는 Template으로 연결됨
  4. defaultSuccessUrl(””) : 인증이 성공하였을 때 default로 이동하는 URL지정하는 API임
  5. failureUrl(””) : 인증이 실패하였을 때 이동하는 Page 지정하는 API임
  6. usernameParameter(””), passwordParameter(””) : spring security에서 Default 값인 username, password의 Parameter값을 변경하게 해주는 API임
  7. loginProcessingUrl(””) : Form tag의 action url을 설정하는 API임, Default값은 Default Login임
  8. successHandler() : Login 성공했을 때 success handler를 호출하는 API임
  9. failureHandler() : Login이 Fail일 경우 failure handler를 call하는 API임, AuthenticationFailureHandler Interface를 구현한 것을 넣으면 됨, 그리고 인증 Fail시, exception message를 출력하고, Login page로 redirect되어 이동하게 함
  10. permitAll() : http.authorizeRequests().anyRequest().authenticated(); 와 같이 Authorization(인가)관련 코드가 있다면 인증을 받지 않았다면 어떤 Request들도 접근이 안될 수 있음. Login page로 사용할 LoginPage도 인증을 받지 않으면 접근이 불가능한데 permitAll을 붙여주면 해당 Path는 인증을 받지 않아도 누구나 접근이 가능해짐을 말함

3. Form Login 인증 Filter 동작과정

  1. Form Login을 사용하게 되면 인증 Filter인 UsernamePasswordAuthenticationFilter가 실행됨
  2. AntPathRequestMatcher는 Request Info의 URL이 해당 값으로 시작되는지 Check를 하며 Reequest Info와 일치하지 않으면 chain.doFilter로 이동함
  3. Request Info와 일치하면 Username과 Password Info가 담긴 Authentication Object를 생성하여 AuthenticationManager로 넘김
  4. Authenticationmanager는 이전 과정에서 받은 Authentication Object를 AuthenticationProvider에 넘겨주어 인증을 체크함