클라이언트의 요청 정보를 캡슐화 하는 객체
- 클라이언트가 서버로 전송한 HTTP 요청에 대한 정보를 제공
- 요청 URL, HTTP Method, Header, Cookie, Session 등의 정보에 접근 가능
- 파라미터를 읽고, 파일 업로드를 처리하는 메서드도 제공
서버가 클라이언트에게 응답을 보낼 때 사용되는 객체
- 서버가 클라이언트로 보내는 Http 응답의 내용과 상태를 관리
- 응답 Header, Cookie, Status Code, 출력 스트림 등을 설정하고 조작 가능
- 클라이언트에게 HTML, JSON 파일 등의 응답을 보낼 수 있음
HttpServletRequest | HttpServletResonse |
---|---|
클라이언트의 요청 정보를 캡슐화하는 객체 | 서버가 클라이언트에게 응답을 보내는 데 사용되는 객체 |
클라이언트가 서버로 전송한 HTTP 요청에 대한 정보 제공 | 서버가 클라이언트로 보내는 HTTP 응답의 내용과 상태 관리 |
Spring 기반 어플리케이션에서, 인증과 인가를 모두 제공하는 데에 초점을 둔 프레임워크이다.
인증과 인가를 Filter의 흐름에 따라 처리한다.
보안과 관련해서 체계적으로 많은 옵션을 제공해주기 때문에 개발자의 입장에서는 하나하나 보안 관련 로직을 작성하지 않아도 된다는 이점이 있다.
Spring Security는 기본적으로 인증 절차를 거친 다음에, 인가를 진행하게 되며
(Authentication -> Authorization)
인가 과정에서 해당 리소스에 대한 접근 권한이 있는지 확인하게 된다.
Spring Security의 Filter Chain이 있다.
아래는 기본적으로 Chain에 있는 Filter의 종류와 기능이다.
필터명 | 기능 |
---|---|
SecurityContextPersistenceFilter | SecurityContextRepository에서 Security Context를 가져오거나 저장하는 역할 |
LogoutFilter | 지정된 로그아웃 URL에 대한 요청을 감시하고, 매칭되는 해당 유저를 로그아웃 처리 |
UsernamePasswordAuthenticationFilter | 사용자명과 비밀번호로 이루어진 폼 기반 인증에 사용하는 가상 URL 요청을 감시하고, 요청이 있다면 사용자의 인증 진행 |
DefaultLoginPageGeneratinFilter | 폼 기반 혹은 OpenID 기반 인증에 사용하는 가상 URL에 대한 요청을 감시하고, 로그인 폼 기능을 수행하는 데에 필요한 HTML을 생성 |
BasicAuthenticationFilter | HTTP 기본 인증 헤더를 감시하여 처리 |
RequestCacheAwareFilter | 로그인 성공 후, 원래 요청 정보를 재 구성하기 위해 사용 |
SecurityContextHolderAwareRequestFilter | HttpServletRequestWrapper를 상속한 SecurityContextHolderAwareRequestWrapper 클래스로, HttpServletRequest 정보를 감쌈 |
AnonymousAuthenticationFilter | 이 필터가 호출되는 시점까지 사용자 정보가 인증되지 않았다면, 인증 토큰에 사용자가 익명 사용자로 나타남 |
SessionMagagementFilter | 인증된 주체를 바탕으로 세션 트래킹을 처리해 단일 주체와 관련한 모든 세션들이 트래킹 되도록 도움 |
ExceptionTranslationFilter | 보호된 요청을 처리하는 중 발생 가능한 예외를 위임하거나 전달하는 역할 |
FilterSecurityInterceptor | AccessDecisionManager로 권한 부여 처리를 위임함으로써 접근 제어 결정을 쉽게 해줌 |