Spring

스프링 시큐리티 필터 동작 원리

진공청소ㄱl 2025. 2. 17. 00:00

스프링 시큐리티 필터 동작 원리

 

 

서블릿 컨테이너(예: Tomcat)는 클라이언트로부터 HTTP 요청을 받으면 가장 먼저 해당 요청의 URI를 분석한다. 이 URI를 기반으로 서블릿 컨테이너는 해당 요청에 적용해야 할 필터들을 결정하고 FilterChain 객체를 생성한다.

 

필터 체인이 실행되면, 첫 번째 필터부터 순차적으로 실행된다. 각 필터는 chain.doFilter() 메서드를 호출하여 다음 필터로 요청을 전달하며, 모든 필터의 처리가 완료되면 최종적으로 서블릿에게 요청이 전달된다.

 

서블릿

서블릿은 Java를 사용하여 웹 페이지를 동적으로 생성하는 서버측 프로그램이다. 클라이언트의 요청을 처리하고 그 결과를 반환하는 자바 웹 프로그래밍 기술이다.

 

서블릿 컨테이너

서블릿 컨테이너는 서블릿의 생명주기를 관리하고 클라이언트의 요청을 적절한 서블릿으로 전달하는 역할을 한다. 대표적인 예로 Apache Tomcat이 있다.

 

 

위에서 말한 필터는 스프링 시큐리티의 필터를 이야기 하는 것이 아니다. 서블릿 필터와 시큐리티 필터는 독립적이다.

 

서블릿 필터와 스프링 시큐리티 필터는 독립적으로 동작하지만, 서블릿 필터의 생명주기 시점에서 인증과 권한 작업을 수행해야 한다. 이는 인증되지 않은 사용자나 권한이 없는 사용자의 요청을 조기에 차단하여 불필요한 서버 자원 소비를 방지하고, 잠재적인 보안 위협으로부터 애플리케이션을 보호하기 위함이다.

 

하지만 서블릿 컨테이너와 스프링 컨테이너는 서로 독립적인 생명주기를 가지고 있어, 서블릿 컨테이너에서는 스프링 컨테이너에 등록된 빈을 직접 인식할 수 없다는 문제가 있다. 이러한 기술적 제약을 해결하면서도 필요한 시점에 보안 처리를 수행하기 위해 특별한 연결 고리가 필요하게 된다.

 

이러한 문제를 해결하기 위해 스프링 시큐리티는 DelegatingFilterProxy라는 서블릿 필터 구현체를 제공한다. DelegatingFilterProxy는 서블릿 필터로 등록되어 서블릿 컨테이너와 스프링 컨테이너 사이의 다리 역할을 하며, 실제 보안 처리는 스프링 빈으로 등록된 필터에 위임한다.

 

 

DelegatingFilterProxy로부터 위임받은 요청은 FilterChainProxy에서 처리된다. FilterChainProxy는 스프링 시큐리티의 핵심 필터로서 보안 필터들의 진입점 역할을 하며, 요청에 적용할 SecurityFilterChain을 결정한다. SecurityFilterChain은 실제 보안 처리를 수행할 필터들의 목록을 관리하며, URL 패턴별로 다른 보안 정책을 적용할 수 있게 해준다.

 

마지막으로 Security Filters는 SecurityFilterChain에 의해 관리되는 실제 보안 처리 필터들이다. 이 필터들은 인증, 인가 등의 핵심 보안 기능을 수행하며, 정해진 순서에 따라 차례대로 실행된다. 

 

참고

Spring Security를 사용하는 이유와 동작 방식 :: 둔필승총

 

Spring Security를 사용하는 이유와 동작 방식

보안 용어 인증(authentication) 인증(authentication)은 사용자가 누구인지 확인하는 단계이고 보통 로그인을 의미한다. 사용자는 아이디와 패스워드를 입력하면 로그인은 데이터베이스에 등록되어있

jobdong7757.tistory.com

 

[Spring Security] 스프링 시큐리티 동작 과정에 대해 알아보자.

 

[Spring Security] 스프링 시큐리티 동작 과정에 대해 알아보자.

GDSC 활동을 하면서 여러 백엔드 분들이 시큐리티에 대해 많이 어려워하시는 것 같아 정리한 내용들을 공유해보려고 합니다. 스프링 시큐리티란 ? 스프링 기반의 애플리케이션의 보안(인증과 권

myeongju00.tistory.com

 

Architecture :: Spring Security

 

Architecture :: Spring Security

The Security Filters are inserted into the FilterChainProxy with the SecurityFilterChain API. Those filters can be used for a number of different purposes, like exploit protection,authentication, authorization, and more. The filters are executed in a speci

docs.spring.io