Security 설정은 애플리케이션을 보호하고, 민감한 데이터와 리소스에 대한 접근을 제어하기 위해 필수적이다.
특히 웹 애플리케이션과 같이 외부 네트워크를 통해 접근 가능한 시스템의 경우, 다양한 보안 위협으로부터 시스템을 안전하게 보호해야 한다.
Spring Security는 Java 기반의 애플리케이션에 대해 인증 및 권한 부여를 제공하는 강력하고 맞춤화 가능한 인증 및 액세스 제어 프레임워크이다.
Spring Security는 주로 다음과 같은 보안 기능을 제공한다.
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-security'
}
Spring Security 5.4 이후 권장하는 방식이다.
SecurityFilterChain Bean을 직접 정의하여 애플리케이션의 보안 필터 체인을 설정한다.
구성 요소의 분리를 통해 더 유연하고 명확한 보안 구성이 가능하며, 여러 개의 SecurityFilterChain Bean을 정의하여 다양한 보안 요구사항을 더 세분화하여 관리할 수 있다.
import org.springframework.context.annotation.Bean;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.web.SecurityFilterChain;
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/public/**").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login").permitAll()
.and()
.logout().permitAll();
return http.build();
}