지금까지 우리는
Spring Boot 애플리케이션을 만들었으며
동일한 웹 애플리케이션에
Spring Security dependency를 추가했습니다
그리고 Spring Security가 제공하는
마법 같은 효과를 목격했습니다
기본적으로 모든 API들을 보호하며
엔드 유저가 자격증명 정보를 입력할 수 있도록
로그인 페이지를 보여줍니다
또한 유저가 자격증명 정보를 입력한 후에는
두 번째 요청 후로는
Spring Security 은 최초 로그인 이후
계속해서 웹 애플리케션을 접근하려고 해도
자격증명을 요구하지 않습니다
이 모든 것은 Spring Security가
기본 설정으로 하는 것들입니다
몰론 아직 Spring Security가
제공하는 모든 기능을 확인하지는 않았습니다
하지만 Spring Security에 대해서 더 깊이 파고들기 전에
Spring Security 프레임워크
내부의 흐름과
Spring Security 구조의
생김새를 파악해야합니다
이러한 세부사항을 이해한 후에야
앞으로의 강의에서 다루어질
컨셉을 쉽게 이해할 수 있습니다
따라서 본 강의에서도
여러분에게 Spring Security 내부 흐름
또는 Spring Security 구조를
중심적으로 다룰 예정입니다
화면에서 볼 수 있듯이
이것이 Spring Security 내부 흐름입니다
하지만 이것과 관련된 세부사항에 들어가기 전에
여러분들에게 Java 웹 애플케이션 내의 서블릿(Servlets)과 필터(Filters)에
소개하고 싶습니다
어떤 Java 웹 애플리케이션이든지
요청을 받은 후 그것을
HTTP 프로토콜로 전송합니다
왜냐하면 우리 브라우저들은 HTTP 프로토콜만 이해할 수 있기 때문입니다
따라서 HTTP 프로토콜을 이용해여
제 브라우저들은 제 백엔드 웹 애플리케이션에
요청을 보낼 수 있습니다
제 Java 코드는 이러한
HTTP 프로토콜 요청을 이해할 수 없기에
제 Java 코드와 브라우저 사이에
중개자가 존재합니다
이 중개자를 우리는
서블릿 컨테이너 (Servlet Container)또는 웹 서버라고 부릅니다
우리는 서블릿 컨테이너인 Apache Tomcat
같은 웹 서버들을 사용합니다.
이 중개자, 서블릿 컨테이너가 할 일은
브라우저로부터 받은 HTTP 메세지를
ServletRequest object 로 변환합니다
그리고 이 동일한 object 를
웹 애플리케이션에 사용하고 있는
Java 코드 프레임워크에도 주어집니다
비슷하게도 브라우저에
다시 요청을 보내려고 할 때
서블릿은 HTTP ServletResponse object를 가져다가
브라우저가 이해할 수 있는
HTTP 메시지로 변환합니다
이러한 모든 일은
서블릿이라는 컨셉 때문에 일어납니다
서블렛은 웹 애플리케이션에서
중요한 역할을 하지만
안타깝게도
그들의 복잡한 성격 때문에
아무도 직접 사용하지는 않습니다
따라서 우리의 일을 쉽게 만들기 위해
Spring Boot 과
Spring 프레임워크가 등장하게 된 것입니다
이러한 이유로 요즘에는 서블릿과
직접적으로 일하지 않는 이유입니다
그저 우리가 원하는
REST 서비스
MVC paths와 웹 페이지를 지정합니다
그럼 내부적으로 Spring Boot 와 Spring 프레임워크가
서블릿을 생성합니다
그리고 서블릿 관련된 복잡한 로직
또한 그들이 담당하여 처리합니다
따라서 웹 애플리케이션 내에서
서블릿의 역할이 무엇인지 명확하게 이해하셨기를 바랍니다
서블릿이 있는 것과 같이
웹 애플리케이션에는 필터도 존재합니다
필터는 특별한 종류의 서블릿으로
웹 애플리케이션을 향해
들어오는 모든 요청을
가로챌 수 있습니다
이러한 필터에는
실질적인 비즈니스 로직이 실행되기 전에
일어났으면 하는 프리 로직이나 프리-워크를 정의할 수 있습니다
화면에서 볼 수 있듯이
고객은 제가 Tomcat와 같은 서블릿 컨테이너에 배포한
백엔드 웹 애플리케이션에
요청을 보내려고 합니다
이러한 클라이언트과 실질적인 서블릿 사이에
필터를 사용할 수 있습니다
그리고 이러한 필터들은
웹 애플리케이션에 관한
모든 요청을 가로채는 역할을 하게 됩니다
그리고 필터에 정의내린
로직을 실행하게 됩니다.
따라서 화면과 같이 일어나게 될 것입니다
여기서 이런 질문을 가질 수도 있습니다
"왜 갑자기 서블릿과 필터에 대해서 이야기하나요?"
제가 이 이야기를 하는데에는 분명한 이유가 있으니
웹 애플리케이션 내에
필터와 서블릿의 역할에 대해서
명확하게 이해하시길 바랍니다
왜냐하면 이런 필터를 사용해야지만
Spring Security 프레임워크는
웹 애플리케이션에서 한 설정에 따라 보안을
시행하기 때문입니다
따라서 Spring Security 프레임워크의
내부 구조를 이해하고 싶다면
필터와 서블릿의 역할에 대한
이해도를 가지는 것이 매우 중요합니다
저는 여러분들이 이제 서블릿과 필터에 대해
확실히 명확해졌다고 추정하겠습니다
따라서 다음 강의에서는
Spring Security 내부 흐름에 대해서
이야기 나눠도 괜찮을 것 같습니다
감사합니다 다음 강의에서 뵙겠습니다
수고하셨습니다