IT 개발/BackEnd

[SpringBoot] Spring Security 학습법 & 실무 적용 방법

으녕로그 2025. 3. 7. 16:52
728x90
반응형

Spring Security는 웹 애플리케이션의 인증(Authentication)과 인가(Authorization)를 담당하는 강력한 보안 프레임워크입니다. 많은 기업에서 Spring Boot와 함께 사용하며, 실무에서도 필수적인 기술 중 하나입니다. 이번 글에서는 Spring Security를 학습하는 방법과 실무에서 활용하는 팁을 공유하겠습니다.


📌 1. Spring Security 학습을 위한 기본 개념 정리

Spring Security를 배우기 전, 먼저 아래 개념들을 이해하는 것이 중요합니다.

✅ 1) 인증(Authentication)과 인가(Authorization)의 차이

  • 인증 (Authentication): 사용자의 신원을 확인하는 과정 (예: 로그인)
  • 인가 (Authorization): 특정 리소스에 대한 접근 권한을 확인하는 과정 (예: 관리자만 접근 가능)

✅ 2) Spring Security의 핵심 개념

  • Security Filter Chain: 요청이 들어오면 필터를 통해 인증 및 인가를 처리하는 체인 구조
  • UsernamePasswordAuthenticationToken: 기본적인 인증 객체
  • UserDetails & UserDetailsService: 사용자 정보를 담고 인증을 처리하는 인터페이스
  • AuthenticationProvider: 인증 로직을 처리하는 컴포넌트

📌 2. Spring Security 학습 로드맵

✅ 1) 공식 문서 & 기본 개념 익히기

📌 추천 자료:

✅ 2) 기본 설정 실습 (Spring Boot 프로젝트에서 적용)

📌 Hello Spring Security 프로젝트 만들어보기

  1. Spring Boot 프로젝트 생성 (Spring Initializr 활용)
  2. spring-boot-starter-security 의존성 추가
  3. 기본 로그인 설정 및 동작 확인
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

📌 기본적인 Security 설정 코드

@Configuration
@EnableWebSecurity
public class SecurityConfig {
    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests(auth -> auth
                .requestMatchers("/admin").hasRole("ADMIN")
                .anyRequest().authenticated()
            )
            .formLogin();
        return http.build();
    }
}

✅ 3) JWT(Json Web Token) 인증 적용하기

Spring Security에서 JWT를 활용하면 세션을 사용하지 않고도 인증을 처리할 수 있습니다.

📌 JWT 학습을 위한 추천 자료:

📌 JWT 적용 시 해야 할 것:

  1. spring-boot-starter-oauth2-resource-server 의존성 추가
  2. JWT 토큰을 생성하고 검증하는 서비스 구현
  3. Security Filter에서 JWT 검증 처리
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
    http
        .authorizeHttpRequests(auth -> auth
            .anyRequest().authenticated()
        )
        .oauth2ResourceServer(OAuth2ResourceServerConfigurer::jwt);
    return http.build();
}

📌 3. 실무에서 Spring Security 적용 시 고려할 점

✅ 1) 역할(Role) 기반 접근 제어 설정하기

  • @PreAuthorize, @Secured 어노테이션을 활용하여 특정 역할만 API를 호출할 수 있도록 설정 가능
@PreAuthorize("hasRole('ADMIN')")
@GetMapping("/admin")
public String adminPage() {
    return "관리자 페이지";
}

✅ 2) OAuth2 및 소셜 로그인 연동 (Google, Kakao, Naver)

Spring Security는 OAuth2를 지원하여 소셜 로그인을 쉽게 구현할 수 있음

📌 OAuth2 구현 참고 자료:

✅ 3) CSRF, CORS 설정 이해하기

Spring Security는 기본적으로 CSRF 보호가 활성화되어 있음

  • REST API에서는 CSRF 보호를 비활성화해야 함
http.csrf().disable();

🚀 결론: Spring Security 학습법 정리

인증 & 인가 개념 정리 → 공식 문서 & 튜토리얼 실습기본적인 Security 설정 적용 (로그인, 권한 관리, JWT)실무에서 필요한 추가 설정 (OAuth2, CORS, CSRF 등) 학습

Spring Security는 처음 배우면 어렵게 느껴질 수 있지만, 하나씩 차근차근 실습하면서 적용하면 점점 익숙해질 거예요!

📌 Spring Security 공부하면서 궁금한 점이 있으면 댓글로 남겨주세요! 😊

728x90
반응형