KUKJIN LEE
posted 16 hours ago
[Spring Boot Security] 보안 설정에 대해서 알아보자
Spring Boot Security는 강력한 보안 설정 기능을 제공하여 개발자가 간편하게 웹 애플리케이션의 보안을 강화할 수 있도록 합니다.
1. HttpSecurity를 이용한 보안 설정
1.1 HttpSecurity
클래스는 HTTP 요청에 대한 보안을 구성하는 데 사용됩니다. 이를 통해 특정 URL 패턴에 대한 접근 권한을 설정하고, CSRF(Cross-Site Request Forgery), CORS(Cross-Origin Resource Sharing)과 같은 다양한 보안 기능을 손쉽게 적용할 수 있습니다.
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/public/**").permitAll() // 공용 URL 접근 허용
.antMatchers("/admin/**").hasRole("ADMIN") // 관리자 URL에 ADMIN 권한 필요
.anyRequest().authenticated() // 나머지 요청에 대해 인증 요구
.and()
.formLogin() // 기본 로그인 폼 제공
.and()
.logout() // 로그아웃 설정
.permitAll();
}
/public/**
경로는 누구나 접근할 수 있게 하고, /admin/**
경로는 ADMIN 권한이 있어야 하며, 그 외 모든 요청은 인증된 사용자만 접근할 수 있도록 구성합니다.
2. CSRF 보호 설정
2.1 CSRF 보호란? Cross Site Request Forgery는 공격자가 사용자 대신 악의적인 요청을 서버에 보내는 공격 기법입니다. Spring Security는 기본적으로 CSRF 보호를 활성화하여 공격을 방지합니다.
3. CORS 설정
3.1 CORS란? Cross Origin Resource Sharing은 다른 도메인에서 자원의 접근을 허용할지 여부를 결정하는 보안 매커니즘입니다. Spring Security에서는 HttpSecurity를 통해 CORS 설정을 쉽게 구성할 수 있습니다.
4. 로그아웃 설정
4.1 Spring Security에서 로그아웃 기능을 제공하며, /logout
URL로 로그아웃 요청을 처리합니다. 로그아웃 시 Session
을 후효화하고, 기본적으로 루트 페이지로 리다이렉트합니다.
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.logout()
.logoutUrl("/perform-logout") // 로그아웃 URL 변경
.logoutSuccessUrl("/login?logout") // 로그아웃 성공 시 리다이렉트 URL 설정
.invalidateHttpSession(true) // 세션 무효화
.deleteCookies("JSESSIONID") // JSESSIONID 쿠키 삭제
.permitAll();
}