🙋 들어가며
이전에 Spring Security를 너무 가볍게 공부한 것 같아서 A-Z로 다뤄보려고 합니다.
이번 편에서는 DelegatingFilterProxy
에 대해서 이야기해 보겠습니다.
👩💼 DelegatingFilterProxy
Security에서 빼놓을 수 없는 객체입니다.
이름에서 역할이 잘 명시되어 있습니다. 이름 그대로 Filter를 위임(deleagte)하는 대리자(proxy)입니다.
🤷 왜 위임하나요?
전체적인 흐름을 이해하고 왜 위임하는지 알아보겠습니다.
먼저 클라이언트의 요청이 들어오면 서블릿 컨테이너는 필터 체인을 생성합니다.
이후 요청이 필터와 서블릿을 통과하면 스프링 내부로 진입하게 됩니다.
필터 체인 : HttpServletRequest를 처리하는 서블릿과 필터를 포함하는 하나의 단위
시큐리티는 서블릿의 필터를 기반으로 동작합니다. 다르게 말하면 필터는 서블릿 컨테이너
가 관리합니다.
스프링의 IoC 컨테이너는 서블릿 컨테이너와 다르기 때문에 그 사이를 이어 줄 존재가 필요합니다.
그 존재가 바로 DelegatingFilterProxy입니다.
⏩️ 동작 원리
DelegatingFilterProxy는 이름으로 스프링 컨테이너에서 빈을 가져옵니다.
DelegatingFilterProxy는 springSecurityFilterChain
라는 타깃 이름을 가지고 초기화됩니다.
따라서, 타겟 이름으로 조회했을 때 다음 빈을 가져옵니다.
이후 요청에 들어오면 springSecurityFilterChain
에게 위임합니다.
단순하게 위임만 한다는 점이 중요합니다. 즉, 보안에 관련된 어떤 기능도 존재하지 않습니다.
🤔 필요한 이유
가장 중요한 이유는 앞서 언급한 스프링 IoC 컨테이너와 서블릿 컨테이너 사이의 징검다리 역할입니다.
그리고 프록시라는 이름에서 예상했듯이 실질적으로 필요한 순간에 사용할 수 있게 도와줍니다. (지연 검색)
공식 문서에서 제공되는 그림을 통해서 어떤 구조를 가지는지 한눈에 알아볼 수 있습니다. 😋
😋 정리
- DelegatingFilterProxy는 대리자이다.
- 생성될 때 springSecurityFilterChain라는 빈을 불러온다.
- 실제로 검증할 때는 가져온 빈에게 행동을 넘긴다.
- 스프링과 서블릿의 중간다리 역할을 하며, 지연 검색을 가능하게 한다.
-Reference:
😋 지극히 개인적인 블로그지만 댓글과 조언은 제 성장에 도움이 됩니다 😋
'Web > Spring-Security' 카테고리의 다른 글
[Security] 시큐리티 파헤치기 (4) : 인증이란? (feat. Authentication) (1) | 2023.08.17 |
---|---|
[Security] 시큐리티 파헤치기 (3) : 시큐리티 초기화, 다중 필터 체인 (0) | 2023.08.11 |
[Security] 시큐리티 파헤치기 (2) : RequestCacheAwareFilter, RequestCache (2) | 2023.08.02 |
[Security] Spring Security (2) (0) | 2022.10.05 |
[Security] Spring Security (1) (0) | 2022.10.05 |
댓글