Spring Security.ch3

이호영·2022년 5월 11일
0

SpringSecurity

목록 보기
3/6

서블릿 컨테이너

Tomcat은 서블릿 컨테이너라고도 불린다.
왜일까? 그 이유는 서버가 여러게의 서블릿을 가지고 있기 때문입니다.

controller에 method에 url을 매핑해서 webrequest가 찾아가도록하는 방법은 DispatchServlet을 통해 가능한 것이다.
등록된 controller method들 에서 url과 매칭이되는 method를찾아서 그 method를 실행시켜주는 역활은 함
request가 들어올 때는 DispatchServlet에 들어오기 전에 여러가지 filter를 걸쳐서 들어온다.
모든 request는 filter들을 모두 거쳐와야 한다.

Spring Security에서는 보안정책에 따라서 여러가지 정책을 사용할 수 있다.
필터 체인에 한번에 모두 넣을 수 없기때문에 DelegatingFilterProxy라는 필터를 사용한다.
url 패턴에 따라 적용된다.
각각의 filter는 단일책임처럼 각각 서로 다른 문제를 해결한다.

필터 설명

HeaderWriterFilter : Http 해더를 검사한다. 써야 할 건 잘 써있는지 필요한 해더를 더해줘야 할 건 없는지

CorsFilter : 허가된 사이트나 클라이언트의 요청인가?

CsrfFilter : 내가 내보낸 리소스에서 올라온 요청인가?

LogoutFilter : 지금 로그아웃하겠다고 하는건가?

UsernamePasswordAuthenticationFilter : username / password 로 로그인을 하려고 하는지 만약 로그인이면 여기서 처리하고 가야 할 페이지로 보냄

ConcurrentSessionFilter : 여거저기서 로그인 하는걸 허용할 것인가?

BearerTokenAuthenticationFilter : Authorization 해더에 Bearer 토큰이 오면 인증 처리 해줌.

BasicAuthenticationFilter : Authorization 해더에 Basic 토큰을 주면 검사해서 인증처리 해줌.

RequestCacheAwareFilter : 방금 요청한 request 이력이 다음에 필요할 수 있으니 캐시에 담아놓음.

SecurityContextHolderAwareRequestFilter : 보안 관련 Servlet 3 스펙을 지원하기 위한 필터라고 한다.

RememberMeAuthenticationFilter : 아직 Authentication 인증이 안된 경우라면 RememberMe 쿠키를 검사해서 인증 처리해줄께

AnonymousAuthenticationFilter : 아직도 인증이 안되었으면 너는 Anonymous 사용자야

SessionManagementFilter : 서버에서 지정한 세션정책을 검사할께.

ExcpetionTranslationFilter : 나 이후에 인증이나 권한 예외가 발생하면 내가 잡아서 처리해 줄께.

FilterSecurityInterceptor : 여기까지 살아서 왔다면 인증이 있다는 거니, 니가 들어가려고 하는 request 에 들어갈 자격이 있는지 그리고 리턴한 결과를 너에게 보내줘도 되는건지 마지막으로 내가 점검해 줄께.

filter는 넣거나 뺄 수 있고 순서를 조절할 수 있다.
이때 필터의 순서가 치명적일 수 있기 때문에 기본 필터들은 그 순서가 어느정도 정해져 있다.

url패턴을 지정할때는 http.antMatcher("/**")등으로 설정하면 된다.
두개이상의 filter chain을 구성할 때는 순서가 중요하기때문에
Order라는 annotation을 작성하여 설정한다.

0개의 댓글