티스토리 뷰

728x90

강의에서 실전 프로젝트에 들어왔다.

Ajax와 Form 인증으로 인증 처리를 할 때 스프링 시큐리티가 처리하는 과정은 크게 다르지 않다.

동일하게 Filter 기반으로 인증처리를 하게 되고 전반척인 처리과정은 거의 동일하다. 다만 좀 다른 점은 Form은 동기적인 처리방식이고 Ajax는 비동기적인 처리방식이라고 알고있으면 된다.

여기 그림에 나오는 Ajax가 Prefix로 붙은 클래스들은 모두 Ajax 인증을 구현하기 위한 Custom하게 만들은 클래스라고 보면 된다.

인증과 인가처리 부분으로 나눠서 보면된다. 위에는 인증 처리 부분이고 아래는 인가처리 부분이다.

인증

  • 스프링 시큐리티는 모든 것이 필터로 시작된다. 필터로 시작되고 필터로 끝난다.
  • AjaxAuthenticationFilter가 사용자의 요청을 받아서 AjaxAuthenticationToken 객체에 인증 정보를 담는다.
  • AuthenticationManager 인증 관리자에게 인증 정보를 전달
  • 실질적인 인증처리를 담당하는 AjaxAuthenticationProvider가 인증을 처리한다.
  • Form 인증 방식의 처리와 유사하다!
  • 인증을 성공하게되면 AjaxAuthenticationSuccessHandler 구현체를 만들어서 설정하게되면 내가 만들어놓은 구현체가 실행된다.
  • 인증 실패도 마찬가지다. AjaxAuthenticationFailureHandler

인가

  • 인증에 성공하게되면 사용자가 자원에 접근할 수 있는지에 대한 권한을 확인하게 된다. => 인가처리 시작
  • 인가처리는 FilterSecurityInterceptor 클래스가 담당
  • 인증에 관련된 예외가 발생되면 AuthenticationException이 발생
  • 인가에 관련된 예외가 발생되면 AccessDeniedException이 발생
  • 예외가 발생되면 ExceptionTranslationFilter가 받아서 예외 처리를 한다.
  • 인증이 실패했을 경우에는 AjaxUrlAuthenticationEntryPoint를 만들어서 구현
    • 일반적으로는 다시 로그인 페이지로가게끔 구현한다.
  • 자원 접근이 거부되었을 경우 AjaxAccessDeniedHandler를 만들어서 구현.
728x90
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함