스프링 시큐리티란? 🔐

Jayong·2025년 5월 15일

스프링 시큐리티

목록 보기
2/4
post-thumbnail

스프링 시큐리티란?

  • API가 실행될 때 마다 사용자를 인증해야 하는데, 그 인증을 구현해놓은 것
  • 스프링 시큐리티는 스프링 기반의 애플리케이션의 보안을 담당하는 스프링 하위 프레임워크
  • 인증 및 인가를 담당
  • 서블릿 필터와 이들로 구성된 필터체인으로의 구성된 위임 모델을 사용

기본 용어

  • 접근 주체 (Principal) : 보호된 대상에 접근하는 유저

  • 인증 (Authentication) : 인증은 ‘증명하다’라는 의미로, 유저 아이디와 비밀번호를 이용하여 로그인하는 과정을 말함

  • 인가 (Authorization) : ‘권한부여’나 ‘허가’와 같은 의미로 사용된다.

  • 권한 : 인증된 주체가 애플리케이션의 동작을 수행할 수 있도록 허락되었는지를 결정할 때 사용된다. 즉, 인가 과정에서 해당 리소스에 대한 제한된 최소한의 권한을 가졌는지 확인

스프링 시큐리티 특징과 구조

  • 보안과 관련하여 체계적으로 많은 옵션을 제공하여 편리하게 사용가능

  • Filter 기반으로 동작하여 MVC와 구분하여 관리 및 동작

  • 어노테이션을 통해 간단한 설정 가능

  • 기본적으로 세션 & 쿠키방식으로 인증

  • 인증 관리자와 접근 결정 관리자를 통해 사용자의 리소스 접근을 관리

  • 인증 관리자는 UsernamePasswordAuthenticationFilter

  • 접근 관리자는 FilterSecurityInterceptor

스프링 시큐리티 필터

  • DispatcherServlet이 요청 받기 전 다양한 필터를 거친다.
  • 필터가 하는 역할은 클라이언트와 자원 사이에 요청과 응답 정보를 이용해 다양한 처리를 하는데 목적이 있다.
  • 스프링 시큐리티는 다양한 기능을 가진 필터들을 10개 이상 기본적으로 제공. 이렇게 제공된 필터들을 Security Filter Chain이라고 한다.

필터 설명

  • SecurityContextPersistenceFilter : SecurityContextRepository에서 SecurityContext를 가져오거나 저장하는 역할
  • LogoutFilter : 설정된 로그아웃 URL로 오는 요청을 감시하며, 해당 유저를 로그아웃 처리
  • UsernamePasswordAuthenticationFilter : (아이디, 비밀번호를 사용하는 form 기반 인증) 설정된 로그인 URL로 오는 요청을 감시하며, 유저 인증을 처리함

📄 인증 절차

  1. AuthenticationManager를 통한 인증 실행
  2. 인증 성공 시, 얻은 Authentication 객체를SecurityContext에 저장
  3. AuthenticationSuccessHandler 실행
  4. 인증 실패 시, AuthenticationFailureHandler 실행
  • DefaultLoginPageGeneratingFilter : 폼기반 또는 OpenID기반 인증에 사용하는 가상 URL에 대한 요청을 감시하고 로그인 폼 기능을 수행하는데 필요한 HTML을 생성함
  • BasicAuthenticationFilter : HTTP 기본 인증 헤더를 감시하여 처리한다.
  • RequestCacheAwareFilter : 로그인 성공 이후, 원래 인증 요청에 의해 가로채어진 사용자의 원래 요청을 재구성하는데 사용됨.
  • SecurityContextHolderAwareRequestFilter : HttpServletRequestWrapper를 상속한 SecurityContextHolderAwareRequestWapper 클래스로 HttpServletRequest 정보를 감싼다. SecurityContextHolderAwareRequestWrapper 클래스는 필터 체인상의 다음 필터들에게 부가정보를 제공한다.
  • AnonymousAuthenticationFilter : 이 필터가 호출되는 시점까지 사용자 정보가 인증되지 않았다면 인증토큰에 사용자가 익명 사용자로 나타난다.
  • SessionManagementFilter : 인증된 주체를 바탕으로 세션 트래킹을 처리해 단일 주체와 관련한 모든 세션들이 트래킹되도록 도움
  • ExceptionTranslationFilter : 이 필터는 보호된 요청을 처리하는 중에 발생할 수 있는 예외의 기본 라우팅과 위임, 전달하는 역할을 한다.
  • FilterSecurityInterceptor : 이 필터는 AccessDecisionManager 로 권한부여 처리를 위임함으로써 접근 제어 결정을 쉽게해준다.
  • UserDetailsService : AuthenticationProvider는 UserDetailsService를 사용하여 사용자 정보를 가져온다. UserDetailsService는 사용자의 아이디를 받아 loadbyUsername을 호출하여 해당 사용자의 UserDetails를 반환한다.
  • UserDetails :UserDetails에는 사용자의 아이디, 비밀번호, 권한 등이 포함되어 있다.

업로드중..

profile
다양한 경험을 추구하는 개발자

0개의 댓글