티스토리 뷰
HttpSecurity
HttpSecurity는 Spring Security 프레임워크에서 제공하는 클래스로, HTTP 보안 구성을 정의하는 데 사용됩니다.
이 클래스를 통해 웹 애플리케이션의 보안 정책을 설정할 수 있습니다.
URL 기반 보안 설정: HttpSecurity를 사용하여 특정 URL 패턴에 대한 접근 권한을 설정할 수 있습니다. 예를 들어, /admin/** 경로에 대해서는 ADMIN 권한이 필요하도록 설정할 수 있습니다.
인증 및 권한 설정: HttpSecurity를 통해 사용자 인증 방식과 권한 부여 정책을 구성할 수 있습니다. 예를 들어, 폼 기반 인증, OAuth2, JWT 토큰 기반 인증 등 다양한 인증 방식을 설정할 수 있습니다.
CSRF 보호, XSS 보호 등보안 기능 설정: HttpSecurity를 사용하면 CSRF 보호, XSS 보호, 캐시 제어 등 다양한 보안 기능을 손쉽게 설정할 수 있습니다.
커스터마이징 가능: HttpSecurity는 유연한 API를 제공하므로, 애플리케이션의 요구사항에 맞게 보안 정책을 커스터마이징할 수 있습니다.
HttpSecurity를 사용해 보안 정책을 설정하는 예시 코드
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/", "/home").permitAll()
.antMatchers("/admin/**").hasRole("ADMIN")
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.logout()
.permitAll()
.and()
.csrf()
.disable(); // CSRF 보호 비활성화
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("user").password("{noop}password").roles("USER")
.and()
.withUser("admin").password("{noop}password").roles("ADMIN");
}
}
/ 및 /home 경로에 대해서는 모든 사용자 접근을 허용합니다.
/admin/** 경로에 대해서는 ADMIN 권한이 필요합니다.
그 외의 모든 경로에 대해서는 인증된 사용자만 접근할 수 있습니다.
폼 기반 로그인 페이지를 /login으로 설정합니다.CSRF 보호 기능은 비활성화합니다.
이처럼 HttpSecurity를 사용하면 애플리케이션의 보안 정책을 체계적으로 관리할 수 있습니다.