스프링 시큐리티란?

스프링 어플리케이션의 보안을 쉽게 설정할 수 있도록 해주는 프레임워크

스프링 시큐리티가 없다면?

권한과 관련된 모든 로직들을 직접 구현해야 한다

직접 구현하는 방법에 대해서는 Spring Security 없이 보안 구현하기 페이지 참조

스프링 시큐리티의 제공 기능 및 동작 이해

<aside> 💡 Spring Security는 Spring에서 주로 쓰이기에 Spring만 지원한다고 생각할 수 있지만 사실은 별도로도 사용이 가능합니다.

Servlet 기반의 프로젝트이거나, Reactive 기반의 프로젝트이기만 하면 됩니다

</aside>

<aside> 💡 서블릿과 필터의 개념 사전 이해 필요

스프링 시큐리티는 필터(filter)기반으로 동작합니다. 스프링을 처음 사용해본 경우에는 필터를 써본 적이 없으므로 생소할 수 있는 개념인데요

필터 개념 없이 작성한 스프링 프로그램은,HTTP 요청이 내용 가공 없이 그대로 Dispatcher Servlet에 도달하고, HttpRequest객체 형태로 그대로 컨트롤러에 전달됩니다.

필터가 있는 프로그램에서는 Dispatcher Servlet에 도달하기 전에 Http Request를 가로채서 미리 인증 등의 처리를 수행해 주고, 인증이 완료된 결과물을 Dispatcher Servlet에 전달하게 됩니다. 따라서 컨트롤러의 인자 형식이 필터가 전달해주는 객체 (주로 Authentication객체)의 형태로 바뀌게 됩니다

</aside>

<aside> 💡 필터와 인터셉터의 차이는?

공통점 : HTTP 요청을 중간에 가로채서 특정한 처리나 검사 등을 수행한 차이점 : 가로채는 위치가 다르다

</aside>

필터 기반 동작 이해

Security Filter의 종류와 순서

예외 처리

인증(Authentification)