[Spring] Spring Security Filter

양정훈·2022년 6월 24일
0

SpringSecurity

목록 보기
2/4
  • Spring Security 5.7.1 (Spring Boot 2.7.0)
  • Spring Security는 Servlet Container의 Filter를 활용함
    • servlet request, response 객체를 각 필터들이 순서대로 접근함
  • 여러 Filter들을 Chaining해 순서대로 동작됨

DelegatingFilterProxy, FilterChainProxy, SecurityFilterChain

  • SecurityFilterChain에 Security Filter들을 등록함
  • FilterChainProxySecurityFilterChain들을 등록함
  • DelegatingFilterProxy가 Servlet Filter로 등록되어 FilterChainProxy의 필터들을 동작시킴

종류

ExceptionTranslationFilter

  • 모든 Security 예외를 감지, 처리하는 필터
  • AuthenticationException, AccessDeniedException 두 가지 예외를 발생시킴

AuthenticationException

  • 인증 에러
  • AuthenticationEntryPoint.commence(request, response, authException)를 호출함 (직접 구현 가능)
    • 로그인하게끔 유도하는 것이 기본 동작
    • requestCache에 사용자의 요청 정보를 저장해둠

AccessDeniedException

  • 인가 에러
  • AccessDeniedHandler로 처리

UsernamePasswordAuthenticationFilter

  • form 기반 로그인을 지원
  • username, password 파라미터로 UsernamePasswordAuthenticationToken을 생성
  • AuthenticationManager 객체를 통해 인증을 진행

인증 성공

  • 인증정보를 담은 Authentication 객체를 SecurityContext에 넣음
  • AuthenticationSuccessHandler 실행

인증 실패

  • AuthenticationFailureHandler 실행

0개의 댓글