Spring Security는 첫 번째로 Configuration을 추가해주어야한다. Configuration은 springSecurityFilterChain
라 불리는 모든 security에 대한 Servlet Filter를 생성한다.
아래 예시 코드는 Spring Security의 가장 간단한 Configuration이다.
import org.springframework.context.annotation.*;
import org.springframework.security.config.annotation.authentication.builders.*;
import org.springframework.security.config.annotation.web.configuration.*;
@Configuration
@EnableWebSecurity
public class WebSecurityConfig {
@Bean
public UserDetailsService userDetailsService() {
InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
manager.createUser(User.withDefaultPasswordEncoder().username("user").password("password").roles("USER").build());
return manager;
}
}
여기서 @EnableWebSecurity
는 어떤 역할을 해주는지 살펴보자.
- 모든 URL에 접근하기위해서는 인증(authentication)을 요구하도록 한다.
/login
으로 이동하면 username(ID), password를 입력하는 로그인 폼을 적용한다./logout
을 통해 로그아웃할 수 있다.- CSRF 토큰을 생성하여
CSRF attack
을 예방한다. (ref. 예시로 이해하는 CSRF Attack) - 인증 후 Session Id를 변경하는 전략을 적용하여
Session Fixation attack
을 예방한다. - Servlet API 메소드
[reference]
https://docs.spring.io/spring-security/reference/servlet/configuration/java.html#jc-hello-wsca