TIL - HttpServlet | Spring Security의 Filter 맛보기

su·2023년 7월 14일
0

TIL

목록 보기
43/93
post-thumbnail

HttpServlet

  • HttpServletRequest와 HttpServletResponse는 Java Servlet API의 일부로, 웹 어플리케이션에서 클라이언트의 요청과, 서버의 응답을 처리하기 위해서 사용되는 클래스
  • 서블릿 컨테이너에서 자동으로 생성되며 서블릿이나 필터 등에서 이 객체에 접근하여 요청, 응답을 처리
    → 이를 통해 클라이언트의 요청을 이해하고 적절한 응답을 생성해 전송 가능

HttpServletRequest

클라이언트의 요청 정보를 캡슐화 하는 객체

  • 클라이언트가 서버로 전송한 HTTP 요청에 대한 정보를 제공
  • 요청 URL, HTTP Method, Header, Cookie, Session 등의 정보에 접근 가능
  • 파라미터를 읽고, 파일 업로드를 처리하는 메서드도 제공

HttpServletResponse

서버가 클라이언트에게 응답을 보낼 때 사용되는 객체

  • 서버가 클라이언트로 보내는 Http 응답의 내용과 상태를 관리
  • 응답 Header, Cookie, Status Code, 출력 스트림 등을 설정하고 조작 가능
  • 클라이언트에게 HTML, JSON 파일 등의 응답을 보낼 수 있음
HttpServletRequestHttpServletResonse
클라이언트의 요청 정보를 캡슐화하는 객체서버가 클라이언트에게 응답을 보내는 데 사용되는 객체
클라이언트가 서버로 전송한 HTTP 요청에 대한 정보 제공서버가 클라이언트로 보내는 HTTP 응답의 내용과 상태 관리

Spring Security

Spring 기반 어플리케이션에서, 인증과 인가를 모두 제공하는 데에 초점을 둔 프레임워크이다.
인증과 인가를 Filter의 흐름에 따라 처리한다.
보안과 관련해서 체계적으로 많은 옵션을 제공해주기 때문에 개발자의 입장에서는 하나하나 보안 관련 로직을 작성하지 않아도 된다는 이점이 있다.
Spring Security는 기본적으로 인증 절차를 거친 다음에, 인가를 진행하게 되며
(Authentication -> Authorization)
인가 과정에서 해당 리소스에 대한 접근 권한이 있는지 확인하게 된다.

Spring Security Filter

Spring Security의 Filter Chain이 있다.
아래는 기본적으로 Chain에 있는 Filter의 종류와 기능이다.

필터명기능
SecurityContextPersistenceFilterSecurityContextRepository에서 Security Context를 가져오거나 저장하는 역할
LogoutFilter지정된 로그아웃 URL에 대한 요청을 감시하고, 매칭되는 해당 유저를 로그아웃 처리
UsernamePasswordAuthenticationFilter사용자명과 비밀번호로 이루어진 폼 기반 인증에 사용하는 가상 URL 요청을 감시하고, 요청이 있다면 사용자의 인증 진행
DefaultLoginPageGeneratinFilter폼 기반 혹은 OpenID 기반 인증에 사용하는 가상 URL에 대한 요청을 감시하고, 로그인 폼 기능을 수행하는 데에 필요한 HTML을 생성
BasicAuthenticationFilterHTTP 기본 인증 헤더를 감시하여 처리
RequestCacheAwareFilter로그인 성공 후, 원래 요청 정보를 재 구성하기 위해 사용
SecurityContextHolderAwareRequestFilterHttpServletRequestWrapper를 상속한 SecurityContextHolderAwareRequestWrapper 클래스로, HttpServletRequest 정보를 감쌈
AnonymousAuthenticationFilter이 필터가 호출되는 시점까지 사용자 정보가 인증되지 않았다면, 인증 토큰에 사용자가 익명 사용자로 나타남
SessionMagagementFilter인증된 주체를 바탕으로 세션 트래킹을 처리해 단일 주체와 관련한 모든 세션들이 트래킹 되도록 도움
ExceptionTranslationFilter보호된 요청을 처리하는 중 발생 가능한 예외를 위임하거나 전달하는 역할
FilterSecurityInterceptorAccessDecisionManager로 권한 부여 처리를 위임함으로써 접근 제어 결정을 쉽게 해줌
  • SecurityContextHolderAwareRequestWrapper 클래스는 필터 체인상의 다음 필터들에게 부가 정보를 제공한다

출처: https://iyk2h.tistory.com/158

profile
(❁´◡`❁)

0개의 댓글