Back-End/백엔드 관련 정리

spring security - 필터

얄루몬 2022. 12. 6. 19:11

주요 필터들

ChannelProcessingFilter

  • redirect to a different protocol (http → https)

SecurityContextPersistenceFilter

  • SecurityContext 객체를 SecurityContextHolder에 저장
    • 어디에 저장? SecurityContextRepository (default: HttpSession)
  • 요청 처리가 끝나면 제거

ConcurrentSessionFilter

  • 현재 Session 유효 여부 파악하여 유효하지 않은 세션에 대한 후처리
  • SessionManagementFilter와 연동 처리

HeaderWriterFilter

  • 현재 요청에 HTTP Header 추가
    • Ex.)
      • Cache-Control
      • X-Content-Type-Options
      • X-Frame-Options

CsrfFilter

  • Csrf (Cross-site Request Forgery: 사이트 간 요청 위조) 공격을 막기 위한 처리

LogoutFilter

  • 특정 URI를 체크하여 Logout을 실행
  • Logout 처리 (LogoutHandler)
  • Logout 성공 후 처리 (LogoutSuccessHandler)

PRE_AUTH_FILTER

  • AbstractPreAuthenticatedProcessingFilter를 상속받아 구현
  • ex.)
    • X.509

CasAuthenticationFilter

UsernamePasswordAuthenticationFilter

  • 특정 URL에서 username, password를 통한 인증 프로세스 진행
  • 인증 처리는 AuthenticationManager에게 위임
  • 인증 성공 처리 (SuccessHandler)
  • 인증 실패 처리 (FailureHandler)

RequestCacheAwareFilter

  • 인증 성공 후 기존 요청을 찾아가기 위해 기존 요청을 저장
    • 어디에 저장? RequestCache (default: HttpSession)
      • session attribute : SPRING_SECURITY_SAVED_REQUEST

AnonymousAuthenticationFilter

  • 인증이 안 된 사용자에게 anonymousUser라는 이름의 Authentication 객체를 설정하고
  • ROLE_ANONYMOUS 권한을 부여

SessionManagementFilter

  • 세션 타임아웃, 동시 접근 제어 등을 처리

ExceptionTranslationFilter

  • 이 필터 이후의 모든 인증(AuthenticationException), 권한(AccessDeniedException) 예외 처리

FilterSecurityInterceptor

  • 권한 프로세스를 처리하는 Filter
    • cf.) AbstractSecurityInterceptor
  • <intercept-url /> 내용을 기준으로 권한 처리