Note:
Spring Security
는 강력하고 고도로 사용자 정의 가능한 인증 및 액세스 제어 프레임워크이다Spring
기반 애플리케이션을 보호하기 위한 사실상의 표준이다.Spring Security
는 Java 애플리케이션에 인증과 권한 부여를 모두 제공하는 데 중점을 둔 프레임워크이다.- 모든 Spring 프로젝트와 마찬가지로
Spring Security
의 진정한 힘은 사용자 정의 요구 사항을 충족하기 위해 얼마나 쉽게 확장할 수 있는지에 있습니다.
SecurityContextPersistenceFilter
SecurityContextRepository
에서SecurityContext
를 로드하고 저장하는 일을 담당함LogoutFilter
로그아웃 URL로 지정된 가상URL에 대한 요청을 감시하고 매칭되는 요청이 있으면 사용자를 로그아웃시킴UsernamePasswordAuthenticationFilter
사용자명과 비밀번호로 이뤄진 폼기반 인증에 사용하는 가상 URL요청을 감시하고 요청이 있으면 사용자의 인증을 진행함DefaultLoginPageGeneratingFilter
폼기반 또는 OpenID 기반 인증에 사용하는 가상URL에 대한 요청을 감시하고 로그인 폼 기능을 수행하는데 필요한 HTML을 생성함BasicAuthenticationFilter
HTTP 기본 인증 헤더를 감시하고 이를
처리함RequestCacheAwareFilter
로그인 성공 이후 인증 요청에 의해 가로채어진 사용자의 원래 요청을 재구성하는데 사용됨SecurityContextHolderAwareRequestFilter
HttpServletRequest
를HttpServletRequestWrapper
를 상속하는 하위 클래스(SecurityContextHolderAwareRequestWrapper)로 감싸서 필터 체인상 하단에 위치한 요청 프로세서에 추가 컨텍스트를 제공함AnonymousAuthenticationFilter
이 필터가 호출되는 시점까지 사용자가 아직 인증을 받지 못했다면 요청 관련 인증 토큰에서 사용자가 익명 사용자로 나타나게 됨SessionManagementFilter
인증된 주체를 바탕으로 세션 트래킹을 처리해 단일 주체와 관련한 모든 세션들이 트래킹되도록 도움ExceptionTranslationFilter
이 필터는 보호된 요청을 처리하는 동안 발생할 수 있는 기대한 예외의 기본 라우팅과 위임을 처리함FilterSecurityInterceptor
이 필터는 권한부여와 관련한 결정을AccessDecisionManager
에게 위임해 권한부여 결정 및 접근 제어 결정을 쉽게 만들어 줌
gradle
에서 security 의존성 추가를 해준다.
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-security'
}
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
}
}
@Configuration
bean을 등록하고 있음을 명시하는 어노테이션 이다.
@EnableWebSecurity
SpringSecurityFilterChain
이 자동으로 등록이된다.
@EnableGlobalMethodSecurity
스프링 시큐리티의 메소드 어노테이션기반 시큐리티 를 활성화 하기 위해서 사용
1. securedEnabled : @Secured 애노테이션을 사용하여 인가 처리를 하고 싶을때 사용하는 옵션 (defaultValue : false)
2. prePostEnabled : @PreAuthorize, @PostAuthorize 애노테이션을 사용하여 인가 처리를 하고 싶을때 사용하는 옵션 (defaultValue : false)
3. jsr250Enabled : @RolesAllowed 애노테이션을 사용하여 인가 처리를 하고 싶을때 사용하는 옵션 (defaultValue : false)
WebSecurityConfigurerAdapter
WebSecurityConfigurer
인스턴스를 생성하기 위한 편리한 기본 클래스를 제공합니다. 구현을 통해 메서드를 재정의하여 사용자 지정할 수 있습니다.
시큐리티를 만들을때 configurer adapter 을 설정을 해준다.
configure 메소드는 httpsecurity 클래스를 가지고 세팅을 해준다.