스프링 부트는 자바 기반의 웹 애플리케이션을 빠르고 쉽게 개발하기 위한 프레임워크입니다. 스프링 시큐리티는 스프링 기반의 보안 프레임워크로서, 웹 애플리케이션의 인증과 권한 부여를 처리합니다. 스프링 부트와 스프링 시큐리티를 함께 사용하여 보안 강화된 웹 애플리케이션을 개발할 수 있습니다.
스프링 부트와 스프링 시큐리티의 기본 설정
스프링 부트와 스프링 시큐리티를 사용하려면 먼저 의존성을 추가해야 합니다. Maven을 사용하는 경우 pom.xml
파일에 다음과 같이 의존성을 추가합니다.
<dependencies>
<!-- 스프링 부트 의존성 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 스프링 시큐리티 의존성 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
</dependencies>
스프링 부트와 스프링 시큐리티의 기본 설정은 application.properties
파일을 통해 구성할 수 있습니다. 예를 들어, 인증이 필요한 모든 요청에 대해 기본적으로 로그인 페이지로 리다이렉트하는 설정을 추가하기 위해서 다음과 같이 작성할 수 있습니다.
spring.security.user.name=admin
spring.security.user.password=1234
spring.security.user.roles=ADMIN
spring.security.basic.enabled=true
spring.security.basic.realm=My Realm
위의 설정에서는 admin
사용자 이름과 1234
비밀번호, ADMIN
역할을 가진 사용자를 생성하고, 기본적으로 HTTP 기본 인증을 사용하여 인증을 수행합니다.
커스텀 인증 및 인가 설정
스프링 시큐리티는 인증과 인가에 관련된 다양한 설정을 제공합니다. 실제로 스프링 시큐리티의 강력한 기능 중 하나는 커스텀 인증 및 인가 설정을 할 수 있다는 것입니다.
인증 및 인가 설정을 위해 WebSecurityConfigurerAdapter
클래스를 확장하여 커스텀 설정을 만들 수 있습니다. 예를 들어, 다음은 모든 요청에 대해 인증을 필요로하고 특정 URL에 대해 특정 권한이 있는 사용자만 접근 가능하도록 설정하는 코드입니다.
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/admin/**").hasRole("ADMIN")
.anyRequest().authenticated()
.and()
.formLogin();
}
}
위의 설정에서는 /admin/**
URL에 대해서는 ADMIN
역할을 가진 사용자만 접근할 수 있고, 그 외의 URL에 대해서는 인증된 사용자만 접근할 수 있습니다. 또한, formLogin()
메서드를 통해 인증을 위한 폼 페이지를 사용하도록 설정하고 있습니다.