본문 바로가기
Back-end/SpringBoot

[SpringBoot] security 간단 이론

by backend 개발자 지망생 2025. 1. 15.
  • security filter chain은 suvlet 생성 전에 filter를 거친다.
    • filter - suvlet - controller

💡 Spring Security의 필터 체인에서 각 필터의 기본 순서는 다음과 같다:
-> filter 사이에 새로 정의한 필터를 넣을 수도 있고, 기존 필터를 재정의 할 수 있음

  1. SecurityContextPersistenceFilter: 현재 요청에 대한 SecurityContext를 복원
  2. LogoutFilter: 로그아웃 요청을 처리(로그아웃은 필터를 그렇게 거치지 않아도 됨)
  3. CsrfFilter: CSRF 공격을 방지하기 위해 요청에 대해 CSRF 토큰을 검증
  4. UsernamePasswordAuthenticationFilter: 폼 기반 로그인을 처리
  5. DefaultLoginPageGeneratingFilter: 기본 로그인 페이지를 생성
  6. BasicAuthenticationFilter: HTTP 기본 인증을 처리
  7. RequestCacheAwareFilter: 인증된 사용자를 이전 요청으로 리다이렉트
  8. SecurityContextHolderAwareRequestFilter: SecurityContext에 대한 요청 기반의 접근을 허용
  9. AnonymousAuthenticationFilter: 인증되지 않은 사용자에게 익명 권한을 부여
  10. SessionManagementFilter: 세션 정책을 처리
  11. ExceptionTranslationFilter: 예외를 처리
  12. FilterSecurityInterceptor: 최종적으로 권한 검사를 수행
  • UsernamePasswordAuthenticationFilter

  • (2) 아이디와 패스워드가 맞으면 token생성
    • (3) 부터는 토큰만 날라감
  • loadUserByUsername 메소드에서 매개변수(pwd)를 받음 -> 자동 생성된다 함

  • loadUserByUsername에선 User details 타입의 user객체 반환
    • 이 객체에서의 pwd(암호화된)
  • 토큰 안에 있는 pwd를 내부적으로 비교

  • securityContext 안의 authentication 객체의 안에(principal)로 관리된다.