Spring security는 인증, 권한 관리, 데이터 보호 기능을 포함하여 웹 개발 과정에서 필수적인 사용자 관리 기능을 구현하는 데 도움을 주는 프레임워크다. 일반적으로 로그인, 로그아웃, 세션 관리, 권한 등 플랫폼에 맞춰 작업되는 인가&보안 기능을 효율적이고 신속하게 구현할 수 있도록 도와준다.
특히 Spring Security는 IoC/DI 패턴과 같은 확장 패턴을 염두해서 인증, 인가 부분을 개발할 수 있기 때문에 개발 작업 효율을 높일 수 있다.
또한 Spring Security는 Filter를 기반으로 동작하기 때문에 Spring MVC와 분리되어 관리하고 동작할 수 있으며, bean으로 설정할 수 있어 3.2 부터는 XML 설정을 이용하지 않아도 된다는 장점이 있다.
Spring Security 기본 세팅 방법을 알아보자. 참고로 Gradle을 사용하고 있다.
implementation("org.springframework.boot:spring-boot-starter-security")
Console Log: Using generated security password: 3690b8e3-9113-414d-9833-871732483201d
기본 세팅 id는 'user'이고 pw는 로그에 생성된 비밀번호를 입력하면 된다.
아래 코드는 요청되는 모든 URL을 허용하겠다는 의미이다. 이는 필요한 경우 조건을 수정하여 사용할 수 있다.
아키텍처에서 보듯이 모든 요청을 Filter가 가로채서 인증, 인가 부분을 체크하고 난 다음 흐름으로 이어지게 된다. 때문에 관련 설정이 간단해지고 내부 비즈니스 로직에는 영향을 덜 미치게 된다.
@RequiredArgsConstructor
@Configuration
@EnableWebSecurity
public class WebSecurityConfig{
@Bean
Public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.authorizeHttpRequests((authorizeRequests) ->
authorizeRequests.anyRequests().permitAll()
);
return http.build();
}