본문 바로가기
Spring

[Spring] Spring Security에 대하여

by hxxyeoniii 2024. 8. 20.

Spring Security란?

스프링 공식 문서에서 Spring Security는 스프링을 활용한 애플리케이션에서 인증과 인가를 담당하고, 해킹 공격에 대해 보호해주는 보안 표준이라고 말하고 있다.

 

1. 인증과 인가

2. 일반적인 해킹 공격(CSRF, 세션 고정 등)으로의 보호


Spring Security 동작 과정

위의 사진처럼 Spring Security는 요청이 들어올 때, Servliet FilterChain을 자동으로 구성하고 거치게 한다. 

 

 

필터

 

필터는 디스페처 서블릿에 요청이 전달되기 전, 후에 url 패턴에 맞는 모든 요청에 대해 필터링하는 기능을 제공한다.

-> 스프링 컨테이너에서 제공되는 기능이 아닌, 톰캣과 같은 웹 컨테이너에 의해 관리된다.

-> 필터는 보안검사를 통해 올바른 요청이 아닐 경우 차단을 한다. 요청이 스프링 컨테이너까지 전달되지 못하므로 안정성을 높일 수 있다.

 

 

DelegatingFilterProxy

 

필터는 서블릿 기술이어서 스프링 컨테이너 밖에서 동작한다. 따라서 스프링으로 필터를 통제할 수 없었지만 DelegatingFilterProxy 기술을 통해 스프링 빈으로 필터를 등록해 사용할 수 있게 되었다.

Spring Security는 DelegatingFilterProxy에 의해 빈으로 등록된 FilterChainProxy를 활용하여 SecurityFilterChain에 있는 필터를 사용할 수 있다.

-> 프록시를 2번 활용해 SecurityFilterChain 안에 있는 필터들을 활용

 

 

SecurityFilterChain

 

SecurityFilterChain은 FilterChainProxy에서 요청에 대해 호출해야하는 스프링 보안 필터를 결정하는데 쓰인다.

 

 

 

 

 

참고

https://velog.io/@younghoondoodoom/Spring-Security에-대해서-알아보자동작과정편

https://docs.spring.io/spring-security/reference/servlet/architecture.html