Spring Security

moon.kick·2025년 4월 16일

좋은 질문이야! Spring Security스프링 프레임워크에서 인증(Authentication)과 권한(Authorization)을 처리해주는 보안 프레임워크야. 쉽게 말하면, "누가 로그인했는지 확인하고", "그 사람이 뭘 할 수 있는지 제어하는 시스템"이야.


🔐 Spring Security란?

웹 애플리케이션의 보안을 책임지는 스프링 기반의 프레임워크


💡 핵심 기능 두 가지

기능설명
인증(Authentication)사용자가 누구인지 확인 (예: 로그인)
인가(Authorization)인증된 사용자가 무엇을 할 수 있는지 결정 (예: 관리자만 글 삭제 가능)

🧩 Spring Security 작동 흐름 (기본)

  1. 사용자가 로그인 시도
  2. UsernamePasswordAuthenticationFilter가 아이디/비밀번호 받음
  3. AuthenticationManager가 인증 시도
  4. UserDetailsService를 통해 사용자 정보를 DB에서 로드
  5. 비밀번호 비교 후 성공하면 SecurityContext에 인증 정보 저장
  6. 이후 요청은 이 SecurityContext를 참고해 접근 허용 or 거부

🔧 어떤 것들을 설정할 수 있을까?

  • /admin/** 경로는 관리자만 접근 가능
  • 로그인 페이지 URL 커스터마이징
  • 비밀번호 암호화 (BCryptPasswordEncoder)
  • JWT 토큰 기반 인증 연동
  • CSRF, CORS 설정 등

🧠 실제 코드 예시 (간단한 설정)

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
          .authorizeRequests()
            .antMatchers("/admin/**").hasRole("ADMIN")
            .antMatchers("/user/**").authenticated()
            .anyRequest().permitAll()
          .and()
            .formLogin()
            .loginPage("/login")
            .defaultSuccessUrl("/home")
          .and()
            .logout()
            .logoutSuccessUrl("/");
    }
}

🏗️ Spring Security를 사용하는 이유?

이유설명
✅ 신뢰성스프링에서 공식 지원, 검증된 보안 방식
✅ 유연성필터, 인증 로직을 커스터마이징 가능
✅ 확장성JWT, OAuth2, 소셜 로그인 연동 가능
✅ 개발 속도복잡한 인증 로직을 빠르게 구현 가능

✨ 예를 들어 이런 걸 만들 수 있어

  • 로그인/회원가입 시스템
  • 관리자 전용 페이지
  • 게시판 글 작성은 로그인 사용자만
  • OAuth2 소셜 로그인 (카카오, 구글 등)
  • JWT 기반 토큰 인증 API

혹시 이걸 더 쉽게, "로그인 시스템 흐름 + 스프링에서 그걸 어떻게 처리하는지" 같이 그림이나 도식으로 보여줄까?
아니면 앞으로 배우게 될 Spring Boot + JWT 연동 흐름도 알려줄 수 있어!
원하는 방향 알려줘 😊

profile
@mgkick

0개의 댓글