윤개발

Spring Security 공식 문서 정리 본문

백엔드/스프링

Spring Security 공식 문서 정리

DEV_SJ 2021. 4. 19. 13:40

 

 

스프링 시큐리티에 대해 제대로 알고 쓰기위해 공식문서를 쭉 읽어보았고 개발시에 알아야될 부분을 정리해보았습니다.

docs.spring.io/spring-security/site/docs/5.4.6/reference/html5/#servlet-architecture

 

Spring Security Reference

In Spring Security 3.0, the codebase was sub-divided into separate jars which more clearly separate different functionality areas and third-party dependencies. If you use Maven to build your project, these are the modules you should add to your pom.xml. Ev

docs.spring.io

 

Servlet Security 기본 구조

스프링 시큐리티는 Servelt 필터에 기반합니다. 필터란 HTTP 요청과 응답을 변경할 수 있는 재사용 가능한 코드이며 클라이언트에게 오는 요청 정보를 알맞게 변경하기도 합니다. 아래 그림은 싱글 HTTP 요청에 대한 전형적인 레이어 구조입니다.

 

클라이언트가 애플리케이션으로 요청을 보내면 스프링 컨테이너는 URI 경로에 기반한 Servlet, Filter를 포함한 필터체인을 생성하고 필터체인을 따라가며 처리됩니다.

 

DelegatingFilterProxy, FilterChainProxy

스프링은 Filter를 구현한 DelegatingFilter를 제공합니다. DelegatingFilter는 서블릿컨테이너와 스프링 컨테이너 사이에 다리를 제공하는 필터인데 이는 스프링 컨테이너에서 특정 빈을 찾아 그 빈에게 요청을 위임하기 위함입니다.

스프링 시큐리티는 FilterChainProxy라는 특별한 필터 빈를 제공하며 DelegatingFilterProxt에게 요청을 위임받아 실제 보안을 처리합니다. 두개의 프록시는 아래 그림과 같은 구조로 이루어져있습니다.

 

SecurityFilterChain

아래 그림과 같이 SecurityFilterChain은 여러개로 구성되어 있으며 URL에 따라 다른 필터체인이 적용됩니다.

 

Handling Security Exceptions

필터 체인중의 하나인 ExceptionTranslationFilter는 다음과 같은 구조로 동작합니다.

  1. 처음으로 ExceptionTranslationFilter가 호출됩니다.
  2. 만약 유저가 로그인하지 않았거나 AuthenticationException이 발생했다면 인증을 시작합니다.
    AuthenticationEntryPoint는 로그인 페이지로 리다이렉트 하는 등의 유저에게 인증 요청을 보낼때 사용합니다.
  3. 유저의 요청이 RequestCache에 저장되고 유저가 성공적으로 로그인 한다면 다시 저장된 요청을 다시 원래 요청으로 만들어 진행됩니다.
  4. 만약 거부된 요청이라면 HandleAccessDenied를 호출합니다.

 

 

인증에 관한 컴포넌트

스프링 시큐리티에서 인증을 이용하기 위해 알아야할 클래스 및 인터페이스

 

포스팅중

Comments