스프링 시큐리티란
Spring Security는 일반적인 공격에 대한 인증, 권한 부여 및 보호 기능을 제공하는 프레임워크이다.
명령형, 선언형 애플리케이션을 지원한다.
인증과 인가
Spring Security에서는 인증과 인가를 제공한다.
쉽게 풀어서 설명하자면
- 인증(Authentication) : 로그인
- 인가(Authorization) : 권한
웹사이트에 회원가입하고 로그인하는것을 인증(Authentication)이라고하고
로그인하고 남이 쓴 글을 수정, 삭제 할수없는것이 인가(Authorization)이라고 한다.
Filters
Security의 Servlet지원은 Servlet Filters를 기반으로한다.
위의 이미지는 단일 HTTP요청에 대한 일반적인 계층이다.
DelegatingFilterProxy
Spring Security는 위의 Servlet Filter를 기반으로 한다고 했다. 하지만 Servlet Container와 Spring Container는 다르기때문에 같이 사용할수없다. 이것을 가능하게 해주는것이 DelegatingFilterProxy이다.
요청이 들어오면 Servlet Filter에서 DelegatingFilterProxy로 전달한다. DelegatingFilterProxy는 ApplicationContext에서 springSecurityFilterChain이름으로 생성된 Bean을찾아 요청을 위임하는 순서이다.
이 과정에서 실제 보안처리는 하지않는다.
FilterChainProxy
springSecurityFilterChain 이름으로 생성되는 Bean이다.
DelegatingFilterProxy에서 요청을 위임받고 실제 보안처리를 한다.
Spring Security가 초기화될때 생성되는 Filter들을 관리하고 제어한다.