seaking110 님의 블로그
Spring Security 와 WAS 본문
Spring Security
- 스프링 기반의 애플리케이션 보안을 담당하는 프레임워크
- 필터 기반으로 동작하기 때문에 스프링 MVC와 분리되어 관리 및 동작
- Filter은 Dispatcher Servlet으로 가기 전에 적용되므로 가장 먼저 URL 요청을 받음
- Interceptor은 Dispatcher와 Controller사이에 위치함
- 즉 둘은 적용 시기에 차이점이 있음
- Client → Filter → DispatcherServlet → Interceptor → Controller
Spring Security 아키텍쳐
- 클라이언트가 요청을 전송
- 서버가 요청을 받음
- 서버가 필터 체인을 생성
- 필터 체인은 여러개 의 필터와 서블릿이 포함
- 필터의 역할
- 요청을 차단
- 요청이나 응답을 수정
- 필터를 거친 후 최종적으로 서블릿이 실행
Servlet 컨테이너와 Spring의 차이점
- 서블릿 컨테이너는 필터를 자체적으로 등록하는 방식 가능
- 하지만 String의 Bean은 모름 <- 직접 Bean을 등록할 수는 없음
- DelegatingFiterProxy란
- 서블릿 컨테이너에서 DelegatingFiterProxy를 등록하여 이 필터가 Spring Bean으로 등록된 필터를 대신 실행
- 서블릿 컨테이너가 Spring의 필터를 모르는 문제를 해결하는 중간 연결자
FilterChainProxy
- Spring Security의 핵심 필터 역할
- 여러개의 시큐리티 필터 체인 안에 있는 다양한 필터를 실행시키는 역할
- FilterChainProxy는 Spring Bean으로 등록되기 때문에 DelegatingFiterProxy가 호출 해줌
- FilterChainProxy는 요청이 들어올 때 실행할 보안 필터들을 선택하는 관리자 역할
- SecurityFilterChain은 특정 URL 패턴에 따라 어떤 보안 필터들이 실행될지 결정하는 설정
SecurityFilterChain
- FilterChainProxy와 SecurityFilterChain의 관계
- FilterChainProxy는 요청이 들어올 때 실행할 보안 필터들을 선택하는 관리자 역할을 함.
- SecurityFilterChain은 특정 URL 패턴에 따라 어떤 보안 필터들이 실행될지 결정하는 설정임.
- SecurityFilterChain의 동작 방식
- FilterChainProxy는 여러 개의 SecurityFilterChain을 가질 수 있음.
- 요청이 들어오면 가장 먼저 매칭되는 SecurityFilterChain만 실행됨.
WAS
- 사용자의 HTTP 요청을 처리하고 응답을 반환하는 서버
- Tomcat, Netty 등이 대표적인 WAS
- 주요 역할
- HTTP 요청 및 응답 처리
- Servlet 컨테이너 제공
- JSP 실행 환경 제공
- Spring boot와 같은 프레임 워크 실행 지원
- Spring Boot 내장 WAS
- 기본적으로 Tomcat을 내장
- 동작 방식
- 클라이언트가 요청을 보냄
- WAS가 요청을 받아서 DispatcherServlet으로 전달
- 응답을 생성하여 클라이언트에게 반환
DispatcherServlet이란
- Spring MVC의 핵심 컨트롤러 역할을 하는 서블릿
- Front Controller 패턴을 사용하여 모든 요청을 하나의 서블릿에서 처리
- 역할
- 요청을 받고 적절한 컨트롤러로 위임
- HandlerMapping을 이용하여 컨트롤러 찾기
- 응답을 ViewResolver를 통해 View로 변환
- 응답을 클라이언트로 반환
- 동작흐름
-
- 클라이언트가 HTTP 요청을 보냄 (/hello)
- WAS(Tomcat)가 요청을 받아서 DispatcherServlet에 전달
- DispatcherServlet이 HandlerMapping을 통해 해당 컨트롤러를 찾음
- 컨트롤러가 요청을 처리하고 데이터를 반환
- DispatcherServlet이 ViewResolver를 이용해 View를 결정
- DispatcherServlet이 최종적으로 응답을 클라이언트에게 반환
- SpringBoot에서는 기본적으로 / 경로에 DipatcherServlet 설정
WAS와 DispatcherServlet 관계
- WAS는 HTTP 요청을 받아서 DispatcherServlet으로 전달
- DispatcherServlet이 Spring의 핵심 컨트롤러 역할을 수행하여 요청을 적절한 컨트롤러로 라우팅
- DispatcherServlet이 요청을 처리한 후 다시 WAS를 통해 클라이언트에게 응답을 반환
'Today I Learned' 카테고리의 다른 글
plus 주차 개인 과제 (0) | 2025.03.21 |
---|---|
AWS 시작하기! (0) | 2025.03.20 |
Spring Security (0) | 2025.03.12 |
연관관계와 N+1 (0) | 2025.03.11 |
테스트 코드 remind (1) | 2025.03.10 |