본문 바로가기

Spring Boot/Security

커스텀 필터 구현 : 필요성

 - Spring Security 필터 체인의 구조

 - 기본 제공 필터들의 역할과 한계

 - 커스텀 필터가 필요한 상황을 구체적으로 알기

 - 커스텀 필터를 통해 기능을 확장하는 방법의 개요

 - 실무에서 커스텀 필터가 어떻게 활용되는가


커스텀 필터의 필요성

1. 기본 필터의 한계

Security는 다양한 보안 기능을 제공하기 위해 다수의 필터를 기본적으로 제공하고 있다

 

SecurityFilterChain

 - UsernamePasswordAuthenticationFilter

 - BasicAuthenticationFilter

 - CsrfFilter

 - ExceptionTranslationFilter

 - .. 기타등등

 

이러한 필터들은 대부분의 보안 요구사항을 충족한다

하지만, 특정 비즈니스 로직이나 추가적인 보안 정책을 적용하려고 할 때 내장 필터만으로는 한계가 있을 수 있다

 

  • 모든 요청에 대해 추가적인 로깅을 수행하고 싶을 때
  • 특정 헤더 값이 반드시 포함되어야 하는 규칙을 적용하고 싶을 때
  • 사용자의 IP 주소를 검증하거나 화이트리스트 정책을 적용하고 싶을 때

이럴 때 커스텀 필터가 필요하다

 

 

 

2. 커스텀 필터 활용 사례

(1) 추가 인증 단계 : 기본 ID / Password 인증 이후, 별도의 토큰 검증이나 OTP 인증을 추가할 수 있음

(2) 로깅 및 감사(audit) : 모든 요청과 응답에 대해 로그를 남겨 추적 가능성을 높일 수 있음

(3) 보안 정책 적용 : 특정 국가 IP 차단, User-Agent 기반 접근 제한, 특정 시간대 요청 차단

(4) 성능 / 모니터링 : 요청 처리 시간을 기록하고, 성능 문제를 추적하는데 사용할 수 있음

 

 

 

3. 필터를 통한 기능 확장

Security의 필터는 Servlet Filter 규약을 따른다

따라서 커스텀 필터를 추가하면 기능 확장이 가능함

여러가지 기능 확장이 가능함

 

커스텀 필터는 기본 필터 체인에 앞 / 뒤로 원하는 위치에 삽입할 수 있음

요청과 응답을 가로채어 원하는 로직을 추가할 수 있다

 

 

* 커스텀 필터는 남용하면 성능 저하와 복잡도를 유발할 수 있다

* 반드시 필요한 경우에만 도입하는게 좋다

* 보안과 관련된 중요한 정책은 표준 필터로 우선 처리하고, 커스텀 필터는 부가적인 기능에 사용하는 것이 이상적이다


정리

항목 설명
기본 필터의 한계 특정 비즈니스 / 보안 요구를 충족하지 못할수도 있다
커스텀 필터의 필요성 로깅, 감사, 추가 인증, 보안 정책 강화 등에 필요하다
활용 사례 추가 인증, 로깅 / 감사, 정책 적용, 성능 모니터링
기능 확장 방식 기본 필터 체인 앞 / 뒤에 삽입해서 동작시킨다