Spring Security

GreatCloud·2025년 11월 4일

백엔드

목록 보기
1/14

Spring Security란?

Spring 애플리케이션의 인증(Authentication)과 인가(Authorization)를 담당하는 보안 프레임 워크

핵심 개념

1.인증(Authentication)

  • "얘 누구냐?"- 사용자가 본인이 맞는지 확인
  • ex: 로그인(username+password 검증)

2.인가(Authorization)

  • "얘 이거 할 수 있어?"- 인증된 사용자가 특정 자원에 접근할 권한이 있는지 확인
  • ex: ADMIN만 회원 삭제 가능

핵심 구성 요소

1. SecurityFilterChain

  • 모든 HTTP 요청이 거치는 필터들의 체인
  • 요청이 Controller에 도달하기 전에 보안 검사
  • 개발자가 설정하는 부분: 어떤 URL은 허용, 어떤 URL은 인증 필요
요청 → Filter1 → Filter2 → Filter3 → ... → Controller

2. Authentication(인증 객체)

  • 현재 로그인한 사용자 정보를 담는 Interface
  • username, password, 권한(roles)등 포함
  • UsernamePasswordAuthenticationToken(가장 많이 씀)
  • AnonymousAuthenticationToken
  • 등등 구현체가 있다

3. SecurityContext/SecurityContextHolder

  • SecurityContext: 현재 인증된 사용자 정보를 저장하는 Interface
  • SecurityContextHolder: SecurityContext를 관리하는 유틸리티
  • 애플리케이션 어디서든 SecurityContextHolder.getContext().getAuthentication()으로 현재 사용자 정보 조회 가능
  • 스레드별로 독립적으로 관리됨

4. UserDetailsService

  • 이 username을 가진 사용자 정보를 어떻게 가져올지를 정의하는 인터페이스
  • 보통 DB에서 사용자 조회하는 로직 구현
  • loadUserByUsername(String username)메소드 구현

5. PasswordEncoder

  • 비밀번호 암호화/검증 담당
  • 평문 비밀번호를 암호화하거나, 입력된 비밀번호가 맞는지 검증
  • 보통 BCryptPasswordEncoer사용
profile
모르는 것에 부끄러워 말고 아는 것에 자만하지 말 것

0개의 댓글