Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

seaking110 님의 블로그

Spring Security 와 WAS 본문

Today I Learned

Spring Security 와 WAS

seaking110 2025. 3. 12. 16:52

 

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로 변환
    • 응답을 클라이언트로 반환
  • 동작흐름
    1. 클라이언트가 HTTP 요청을 보냄 (/hello)
    2. WAS(Tomcat)가 요청을 받아서 DispatcherServlet에 전달
    3. DispatcherServlet이 HandlerMapping을 통해 해당 컨트롤러를 찾음
    4. 컨트롤러가 요청을 처리하고 데이터를 반환
    5. DispatcherServlet이 ViewResolver를 이용해 View를 결정
    6. 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