SpringBoot 를 배워보자/7. 보안
스프링 시큐리티 기본 설정
_Blue_Sky_
2024. 9. 29. 16:02
728x90
728x90
스프링 부트 스프링 시큐리티 기본 설정: 상세 가이드
소개
스프링 부트 스프링 시큐리티는 스프링 부트 애플리케이션에 강력한 보안 기능을 쉽게 추가할 수 있도록 도와주는 강력한 프레임워크입니다. 인증, 권한 부여, CSRF 보호 등 다양한 보안 기능을 제공하며, 커스터마이징을 통해 더욱 복잡한 보안 시나리오에도 적용할 수 있습니다. 이 글에서는 스프링 부트 스프링 시큐리티의 기본 설정 방법을 자세히 설명하고, 각 설정 항목의 의미와 활용 방법을 알아보겠습니다.
왜 스프링 시큐리티를 사용해야 할까요?
- 간편한 설정: 스프링 부트 스타터를 통해 쉽게 설정할 수 있습니다.
- 다양한 기능: 인증, 권한 부여, CSRF 보호, XSS 방지 등 다양한 보안 기능을 제공합니다.
- 커스터마이징: 다양한 인터페이스와 확장 포인트를 제공하여 필요에 따라 커스터마이징이 가능합니다.
- 활발한 커뮤니티: 많은 개발자들이 사용하고 있으며, 활발한 커뮤니티를 통해 다양한 정보를 얻을 수 있습니다.
728x90
기본 설정
1. 의존성 추가
implementation 'org.springframework.boot:spring-boot-starter-security'
2. SecurityConfig 클래스 생성
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin();
}
}
- @Configuration: 스프링 설정 클래스임을 나타냅니다.
- @EnableWebSecurity: 스프링 시큐리티를 활성화합니다.
- HttpSecurity: HTTP 요청에 대한 보안 설정을 위한 객체입니다.
- authorizeRequests(): 요청에 대한 권한을 설정합니다.
- anyRequest().authenticated(): 모든 요청에 대해 인증을 요구합니다.
- formLogin(): 기본 로그인 페이지를 제공합니다.
3. 사용자 정보 설정
- In-Memory 사용자:
@Bean public UserDetailsService userDetailsService() { UserDetails user = User.withDefaultPasswordEncoder() .username("user") .password("password") .roles("USER") .build(); return new InMemoryUserDetailsManager(user); }
- DB 사용자: UserDetailsService 인터페이스를 구현하여 데이터베이스에서 사용자 정보를 조회하는 로직을 작성합니다.
주요 설정 항목
- authorizeRequests(): 요청에 대한 권한을 설정합니다.
- antMatchers(): 특정 URL에 대한 권한을 설정합니다.
- hasAnyRole(), hasAuthority(): 특정 역할 또는 권한을 가진 사용자만 허용합니다.
- permitAll(), denyAll(): 모든 사용자 허용 또는 거부
- formLogin(): 로그인 페이지 설정
- loginPage(): 로그인 페이지 URL 설정
- loginProcessingUrl(): 로그인 요청 URL 설정
- usernameParameter(), passwordParameter(): 사용자 이름과 비밀번호 파라미터 설정
- logout(): 로그아웃 설정
- logoutUrl(): 로그아웃 요청 URL 설정
- logoutSuccessUrl(): 로그아웃 성공 후 이동할 URL 설정
- csrf(): CSRF 보호 설정
- httpBasic(): HTTP Basic 인증 설정
- sessionManagement(): 세션 관리 설정
고급 설정
- 커스텀 인증: UserDetailsService 인터페이스를 구현하여 사용자 인증 로직을 커스터마이징합니다.
- 커스텀 접근 결정: AccessDecisionManager 인터페이스를 구현하여 접근 결정 로직을 커스터마이징합니다.
- OAuth2: OAuth2를 통한 인증 설정
- WebSocket 보안: WebSocket 통신 보안 설정
결론
스프링 부트 스프링 시큐리티는 스프링 부트 애플리케이션에 강력한 보안 기능을 제공하는 필수적인 프레임워크입니다. 이 글에서 소개한 기본 설정을 시작으로 다양한 설정을 통해 더욱 강력하고 안전한 애플리케이션을 개발할 수 있습니다.
728x90
728x90