[스프링] 스프링 시큐리티를 이용한 데이터 보안 설정
스프링은 많은 기능과 모듈을 제공하며, 그 중에서도 시큐리티 모듈은 웹 애플리케이션의 데이터 보안에 도움을 줍니다. 스프링 시큐리티를 이용하면 인증, 권한 부여, 보안 설정 등을 손쉽게 처리할 수 있습니다.
1. 시큐리티 의존성 추가
먼저, pom.xml 파일에 스프링 시큐리티 의존성을 추가합니다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
의존성을 추가한 후에는 mvn clean install
을 실행하여 의존성을 다운로드 받아야 합니다.
2. 보안 설정 파일 생성
스프링 시큐리티를 이용한 보안 설정을 하려면 SecurityConfig 클래스를 생성해야 합니다. 이때, 해당 클래스는 WebSecurityConfigurerAdapter를 확장해야 합니다.
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/public/**").permitAll()
.anyRequest().authenticated()
.and()
.formLogin();
}
}
위의 코드에서는 /public/**
경로는 권한이 없어도 접근이 가능하도록 설정되었습니다. 그 외의 경로는 모두 인증을 거쳐야 합니다.
3. 사용자 정의 보안 설정
이제 사용자가 정의한 보안 설정을 적용하려면 UserDetailsService를 구현하고, AuthenticationProvider를 구현하여 사용자 정보를 로드하고 인증 과정을 처리합니다.
@Service
public class CustomUserDetailsService implements UserDetailsService {
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
// 사용자 정보를 데이터베이스나 다른 곳에서 가져와서 UserDetails 객체로 반환
}
}
@Component
public class CustomAuthenticationProvider implements AuthenticationProvider {
@Autowired
private CustomUserDetailsService userDetailsService;
@Override
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
// 사용자의 인증 처리 후 Authentication 객체를 반환
}
@Override
public boolean supports(Class<?> authentication) {
return authentication.equals(UsernamePasswordAuthenticationToken.class);
}
}
마무리
스프링 시큐리티를 이용한 데이터 보안 설정은 매우 유연하고 다양한 기능을 제공합니다. 위의 설정을 기반으로하여 필요에 맞게 보안 설정을 추가하고, 사용자의 데이터를 안전하게 보호하는 웹 애플리케이션을 개발할 수 있습니다.
참조: