스프링 시큐리티 ① : 기본 설정
스프링 시큐리티는 필터 기반으로 인증과 권한을 통해 강력한 보안을 제공한다. 그 중 DelegatingFilterProxy 는 스프링 애플리케이션 컨텍스트에 위임된 필터 빈을 처리하기 위한 프록시 필터로써 스프링 프레임워크 기반의 웹 애플리케이션에서 서블릿 필터 라이프 사이클과 연계해 스프링 빈 의존성을 서블릿 필터에 바인딩하는데 사용된다.
아래 기본 설정을 해두면 스프링에서 제공하는 10개의 시큐리티 필터가 자동으로 등록된다.
이 때 10개의 필터는 아래와 같다.
00 시큐리티 필터
필터 |
설명 |
SecurityContextPersistenceFilter |
SecurityContextRepository에서 SecurityContext를 로드하고 저장하는 일을 담당함 |
LogoutFilter |
로그아웃 URL로 지정된 가상URL에 대한 요청을 감시하고 매칭되는 요청이 있으면 사용자를 로그아웃시킴 |
UsernamePasswordAuthenticationFilter |
사용자명과 비밀번호로 이뤄진 폼기반 인증에 사용하는 가상 URL요청을 감시하고 요청이 있으면 사용자의 인증을 진행함 |
DefaultLoginPageGeneratingFilter |
폼기반 또는 OpenID 기반 인증에 사용하는 가상URL에 대한 요청을 감시하고 로그인 폼 기능을 수행하는데 필요한 HTML을 생성함 |
BasicAuthenticationFilter |
HTTP 기본 인증 헤더를 감시하고 이를 처리함 |
RequestCacheAwareFilter |
로그인 성공 이후 인증 요청에 의해 가로채어진 사용자의 원래 요청을 재구성하는데 사용됨 SecurityContextHolderAwareRequestFilter HttpServletRequest를 HttpServletRequestWrapper를 상속하는 하위 클래스(SecurityContextHolderAwareRequestWrapper)로 감싸서 필터 체인상 하단에 위치한 요청 프로세서에 추가 컨텍스트를 제공함 |
AnonymousAuthenticationFilter |
이 필터가 호출되는 시점까지 사용자가 아직 인증을 받지 못했다면 요청 관련 인증 토큰에서 사용자가 익명 사용자로 나타나게 됨 |
SessionManagementFilter |
인증된 주체를 바탕으로 세션 트래킹을 처리해 단일 주체와 관련한 모든 세션들이 트래킹되도록 도움 |
ExceptionTranslationFilter |
이 필터는 보호된 요청을 처리하는 동안 발생할 수 있는 기대한 예외의 기본 라우팅과 위임을 처리함 |
FilterSecurityInterceptor |
이 필터는 권한부여와 관련한 결정을 AccessDecisionManager에게 위임해 권한부여 결정 및 접근 제어 결정을 쉽게 만들어 줌 |
01 XML 설정
1 2 3 4 | <filter> <filter-name>springSecurityFilterChain</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter> | cs |
DelegatingFilterProxy 위임을 위해 필요로 하는 빈의 이름이 springSecurityFilterChain 이기 때문에 반드시 filter-name 을 springSecurityFilterChain 로 지정해주어야 한다.
02 JAVA 설정
1 2 3 | import org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer; public class SecurityWebInitializer extends AbstractSecurityWebApplicationInitializer { } | cs |
AbstractSecurityWebApplicationInitializer 를 상속받는 클래스를 만들어주기만 하면 된다.
XML로 설정을 하던 Java로 설정을 하던 애플리케이션으로 들어오는 요청을 가로채 ID가 springSecurityFilterChain인 빈에 위임시킨다.
03 스프링 MVC 웹 보안 활성화
1 2 3 | @Configuration @EnableWebMVCSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { } | cs |
@EnableWebMVCSecurity 어노테이션으로 간단하게 시큐리티 웹 보안을 활성화 시킬 수 있다.
참고 : Spring Security와 보안, 첫번째 이야기 (http://www.nextree.co.kr/p1886/)
|
이 포스트는 스프링 인 액션을 읽고 개인적으로 필요하다고 생각되는 내용을 정리한 포스트입니다. 일부 내용, 소스코드는 스프링 인 액션의 내용일 수 있습니다. |
'🌱 SPRING > 스프링 인 액션' 카테고리의 다른 글
스프링 시큐리티 ③ : 사용자 저장소 (0) | 2018.09.16 |
---|---|
스프링 시큐리티 ② : 상세 설정하기 (0) | 2018.09.16 |
예외 처리하기 (0) | 2018.07.31 |
멀티 파트 폼 데이터 (0) | 2018.06.13 |
자바 설정으로 Filter 등록하기 (0) | 2018.06.13 |