티스토리 뷰
Spring Security
스프링 시큐리티란 Authentication(인증), Authorization(인가) 부여 및 보호 기능을 제공하는 프레임워크이다.
개발자가 커스텀 기능을 만들어서 웹 애플리케이션의 보안을 적용하는 것엔 한계가 존재한다. 왜냐하면 해커들은 계속하여 공격을 시도할 것이기 때문...
따라서 스프링의 보안만을 담당하는 팀이 제공하는 Spring Security 프레임워크를 사용한다. 개발자는 비즈니스 로직에만 몰두하고, 보안은 프레임워크의 도움을 받는 것이다.
서블릿 필터(Servlet Filter)
이름에서도 알 수 있듯이 사용자의 요청이 들어왔을 때 필터 기능이 작동한다고 생각하면 된다.
사용자의 요청이 서버로 도착하기 전에 Servlet을 거쳐서 필터링되는 것을 Servlet Filter라고 한다.
사용자의 인증의 경우에도 서블릿 필터를 통해 처리할 수 있다.
서블릿 필터 life cycle
서블릿 필터의는 다음 4단계로 진행된다.
- 생성
- 초기화 : init()
- 필터 : doFilter()
- 종료 : destroy()
여기서 중요한 것은 필터이다. 필터에서 서블릿으로 가는 요청을 가로채어 먼저 처리한다. 또한 필터는 연속적인 작용을 수행한다.
즉 필터가 4개가 존재한다면 1 -> 2 -> 3 -> 4 필터를 연속적으로 처리한다. 이를 FilterChain이라고 한다.
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
//여기에 전처리
chain.doFilter(request, response);
//여기에 후처리
}
코드에서 알 수있듯이 chain.doFilter()를 통해 여러 개의 필터가 연속적으로 처리된다. 마치 재귀함수 호출하는 느낌이다.