이번 포스트에서는 Maven을 사용하여 스프링 시큐리티를 구현하는 방법에 대해 알아보겠습니다.
1. Maven 프로젝트 생성
먼저, Maven 프로젝트를 생성해야 합니다. 이를 위해 다음 명령을 실행합니다:
mvn archetype:generate -DgroupId=com.example -DartifactId=security-demo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
위 명령을 실행하면 security-demo
라는 이름의 프로젝트 디렉토리가 생성됩니다.
2. pom.xml 파일 설정
다음은 Maven 프로젝트의 pom.xml
파일에 필요한 종속성을 추가해야 합니다.
<dependencies>
<!-- Spring Security -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>5.4.1</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>5.4.1</version>
</dependency>
<!-- Spring Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.4.2</version>
</dependency>
<!-- Spring Boot DevTools -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<version>2.4.2</version>
<optional>true</optional>
</dependency>
</dependencies>
위의 종속성들은 Spring Security와 Spring Web, 그리고 Spring Boot DevTools를 사용하기 위해 필요합니다.
3. Spring Security 설정
이제 Spring Security를 구성해야 합니다. src/main/resources
디렉토리에 application.properties
파일을 생성하고 다음 내용을 추가합니다:
spring.security.user.name=admin
spring.security.user.password=secret
spring.security.user.roles=USER
위 설정은 사용자 이름, 비밀번호 및 역할을 정의합니다. 이 예제에서는 사용자 이름을 admin
, 비밀번호를 secret
, 역할을 USER
로 설정하였습니다.
4. 보안 구성 파일 생성
다음으로 src/main/java/com/example
디렉토리에 SecurityConfig.java
파일을 생성하고 다음 내용을 추가합니다:
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
}
이 클래스는 Spring Security의 설정 파일로 동작하며, WebSecurityConfigurerAdapter
클래스를 상속받아 구현합니다.
5. 인증 및 접근 제어 설정
SecurityConfig
클래스 내에서 인증 및 접근 제어를 설정해야 합니다. 다음은 예제 설정입니다:
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin()
.and()
.httpBasic();
}
}
위 설정은 모든 요청에 대해 인증을 요구하며, 폼 기반 인증을 사용하고, HTTP Basic 인증도 지원합니다.
6. Spring Boot 어플리케이션 실행
이제 모든 설정이 완료되었습니다. 다음 명령으로 Spring Boot 어플리케이션을 실행합니다:
mvn spring-boot:run
어플리케이션이 성공적으로 실행되면 웹 브라우저에서 http://localhost:8080
에 접속하여 인증을 시도할 수 있습니다. 위에서 설정한 사용자 이름과 비밀번호를 입력하면 인증이 성공하게 됩니다.
결론
이렇게 Maven을 사용하여 스프링 시큐리티를 구현하는 방법을 알아보았습니다. Spring Security를 사용하면 웹 애플리케이션의 인증과 접근 제어를 손쉽게 구현할 수 있습니다.