Security
Security는 Spring기반의 어플리케이션의 보안(인증과 권한)을 담당하는 프레임워크이다.
인증(Authentication) : 인증은 '증명하다'라는 의미로 예를 들어, 유저 아이디와 비밀번호를 이용하여 로그인하는 과정이다.
인가(Authorization) : '권한부여' 또는 '허가'라는 의미로 어떤 대상이 특정 목적을 실현하도록 허용(Access)을 의미한다.
권한(Role) : 인증된 주체가 어플리케이션의 동작을 수행할 수 있도록 허락했는지 결정할 때 사용된다.
스프링 시큐리티는 필터(Filter)기반으로 동작하기 때문에 스프링 MVC와 분리되어 관리 및 동작한다.
🔎 Filter
Dispatcher Servlet에 요청이 전달되기 전/후에 url 패턴에 맞는 모든 요청에 대해 부가작업을 처리할 수 있는 기능을 제공한다. 디스패처 서블릿은 스프링의 가장 앞단에 존재해 프론트 컨트롤러로 필터는 스프링 밖에서 처리되는 것이다.
🔎 Inerceptor
Spring이 제공하는 기술로 Dispatcher Servlet이 컨트롤러를 호출하기 전/후에 요청과 응답을 참조하거나 가공할 수 있는 기능을 제공한다. 즉, 웹 컨테이너(서블릿 컨테이너)에서 동작하는 필터와 달리 인터셉터는 스프링 컨텍스트에서 동작한다.
스프링 MVC에서 가장 먼저 요청 받는 Dispatcher Servlet이 요청 받기 전에 다양한 필터가 있다. 이 필터들은 클라이언트와 자원 사이에서 요청과 응답 정보를 이용해 다양한 처리를 하는데 목적이 있다. 그리고 스프링의 시큐리티에는 다양한 기능을 가진 필터들이 10개이상 존재한다. 이를 Security Filter Chain이라고 한다.