[스프링] 스프링 시큐리티를 이용한 접근 제어
스프링은 많은 기능 중 하나로 스프링 시큐리티라는 모듈을 제공합니다. 이 모듈은 웹 애플리케이션에 보안을 쉽게 적용할 수 있게 도와주며, 접근 제어 기능을 제공합니다.
1. 스프링 시큐리티 설정
먼저 프로젝트에 스프링 시큐리티를 설정해야 합니다. pom.xml
파일에 다음 종속성을 추가합니다.
<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>
2. 접근 제어 설정
WebSecurityConfigurerAdapter
를 상속한 클래스를 생성하고 @EnableWebSecurity
어노테이션을 사용하여 시큐리티를 활성화합니다.
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/admin/**").hasRole("ADMIN")
.antMatchers("/user/**").hasRole("USER")
.anyRequest().authenticated()
.and()
.formLogin();
}
}
위 설정은 /admin/**
경로는 ADMIN
권한이 필요하고, /user/**
경로는 USER
권한이 필요하며, 나머지 요청은 인증된 사용자만 접근할 수 있도록 설정합니다.
3. 사용자 및 권한 관리
사용자 및 권한 정보는 데이터베이스에 저장하고, UserDetailsService
를 구현하여 사용자 정보를 가져올 수 있습니다.
@Service
public class CustomUserDetailsService implements UserDetailsService {
@Autowired
private UserRepository userRepository;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
User user = userRepository.findByUsername(username);
if (user == null) {
throw new UsernameNotFoundException("User not found");
}
return new CustomUserDetails(user);
}
}
4. 마무리
이제 스프링 시큐리티를 사용하여 웹 애플리케이션에 접근 제어를 적용할 수 있습니다.
더 자세한 정보는 공식 문서를 참고하세요.
저자: [Your Name]