이 강좌의 초기에
우리의 웹 애플리케이션 내의
필터와 서블릿에 대해 이야기 했고
Java 웹 애플리케이션 내에서
어떤 역할을 수행하는지에 대해 살펴보았습니다
같은 이야기로 필터는 Java 웹 애플리케이션 내의 구성요소이고
웹 애플리케이션 내의 모든 요청이나
응답을 차단하는데
사용될 수 있습니다
이 인터셉션 과정에서는
우리의 실제 비즈니스 로직 전에
실행되기를 바라는 사전 로직을
실행할 수 있습니다
이것이 제가 CM Filters 개념을 사용하는 이유이며
Spring Security 프레임워크는
웹 애플리케이션 내에서 수행하는 구성을 기반으로
모든 보안을 강제하고 있습니다
Spring Security의 내부 흐름
Spring Security 필터는 인증 및 인가 흐름 중에
매우 중요한 역할을 하는 것입니다
이것은 이 강의의 시작에서 논의한 필터에 관한 이전의 이야기입니다
그래서 여기서 지금 왜 필터에 대해
다시 이야기하고 있는지
궁금증이 생길 것입니다
필터에 대해 다시 이야기하는 이유는
이 섹션에서
우리가 자체적으로 정의한 커스텀(custom) 필터를
정의할 것이기 때문입니다
이는 인증 및 인가 프로세스 중에 실행될 수 있는 필터입니다
여기서 또 다음과 같이 질문할 수 있을 것입니다
왜 Spring Security 내에서 커스텀 필터를
사용하고 싶은지에 대해서입니다
이유는 여러가지가 있을 수 있습니다
복잡한 기업 응용 프로그램에서
종종 특정 상황이나 클라이언트 요구 사항에 따라
인증 및 인가 흐름 중
일부를 하우스키핑(housekeeping)활동에 수행해야 할 것입니다
하우스키핑 활동의 예를 들어보면
인증 전에 몇 가지의
입력 위반을
수행하고 싶을 수 있습니다
청에 추적, 감사 및 보고 세부 정보를
추가하려고 할 수 있습니다
인증 프로세스 중에 시스템에 들어가려고 하는
엔드 유저의 일부 세부 정보를
로그에 기록하려고 할 수 있습니다
IP 주소, 국가 세부 정보 등을
기록하려는 경우나
인증 전에 입력 데이터의
암호화 및 복호화를 수행하려는 경우
OTP를 사용한 다중 인자 인증을
강제하려는 경우 등
원하는 대로
시나리오가 발생할 수 있습니다
실제 프로젝트에 들어가면
실제로 인증
또는 인가 전후에
자체논리를
작성해야 하는 경우가
많이 있습니다
이러한 모든 시나리오에 대해
우리는 자체적으로
커스텀 필터를 작성하고
이를 Spring Security 필터의 흐름에 삽입해야 합니다
모든 요청 또는 응답을
가로채기를 원할 때
가장 명백한 옵션은 HTTP 필터입니다
필터는 Spring Security 프레임워크에서도
활용되는
특수 유형의 서블릿입니다
다음은 유저 인증 중에
Spring Security 프레임워크에서 활용된
몇 가지 내장 필터를 이미 본 적이 있습니다
UsernamePasswordAuthenticationFilter
BasicAuthenticationFilter 그리고
DefaultLoginPageGeneratingFilter 같은 필터입니다
이러한 Spring Security 내장 필터들은
이 강좌에서 많이 접하였습니다
또한 필터에 관한 더 중요한 정보 중 하나는
Spring Security 필터 체인을 살펴보면
인증을 시도하려고 할 때
실행되는 필터의 수가
상당히 많다는 겁니다
자체적인 역할과 책임을 갖는
10개 이상의 Spring Security필터가 실행됩니다
이러한 필터가 실행되는 방식은 연쇄적입니다
필터 체인 내에서
모든 필터가 필터 1이 실행된 후
필터 2
그리고 필터 3으로
하나씩 진행됩니다
그래서 이 체인은 체인 내에서
마지막 필터에 도달할 때까지
다음 필터를 계속해서 작동시킵니다
내장된 필터는 Spring Security를
어떻게 구성하거나
인증을 시도하는지에 따라
어떻게 변경되는지에
따라 다양합니다
다음 강의에서는
Spring Boot 웹 애플리케이션 내에서
사용 가능한 내장된 필터를 살펴보겠습니다
그리고 인증 흐름 중에서
구체적으로 어떤 필터가 실행되고 있는지
이해가 잘 되도록 살펴보겠습니다
내장 필터에 대해
이해가 되면
나만의 커스텀 필터를 정의해볼 수 있습니다
그리고 이러한 커스텀 필터를
Spring Security 내부 필터 체인에 삽입할 수 있습니다
이에 대한 자세한 내용은 추후 이야기해 보겠습니다
지금 염려하지 않으셔도 됩니다
지금은 필터에 대해 명확히 이해하고
필터가 웹 애플리케이션 내부
또는 Spring Security 프레임워크 내에서 어떠한 역할을 하는지를 이해하는 것이 우선입니다
이렇게 이 섹션의 주제에 대해
이해할 수 있었기를 바랍니다
다음 강의에서는
Spring Security 프레임워크 내에서
사용 가능한 내장된 필터를 자세히 살펴보겠습니다
감사합니다 다음 강의에서 뵙겠습니다
수고하셨습니다