Spring

Spring Security의 인증과 인가에 대해서 설명해주세요

필터 체인 아키텍처부터 인증 흐름, 인가 설정, PasswordEncoder까지 — Spring Security의 핵심 구조를 인터랙티브 시각화로 완전 정복합니다.

2026년 3월 19일 · 약 13분 읽기

Q. "Spring Security의 인증과 인가가 어떻게 동작하는지 설명해주세요."

예상 꼬리질문

답변 가이드

"Spring Security는 서블릿 필터 체인 기반으로 동작합니다. 요청이 컨트롤러에 도달하기 전에 약 15개의 보안 필터를 거치며, 인증(Authentication)은 '당신은 누구인가'를, 인가(Authorization)는 '당신은 무엇을 할 수 있는가'를 확인합니다."

"인증 흐름은 UsernamePasswordAuthenticationFilter → AuthenticationManager → AuthenticationProvider → UserDetailsService 순서로 진행됩니다. UserDetailsService가 DB에서 사용자를 조회하고, PasswordEncoder로 비밀번호를 비교합니다."

"인증 성공 시 SecurityContextHolder(ThreadLocal 기반)에 Authentication 객체가 저장되며, 이후 요청마다 이 컨텍스트에서 인증 정보를 조회합니다."

면접에서 "Spring Security가 어떻게 동작하나요?"라고 물으면, 필터 체인과 인증 흐름을 구조적으로 설명할 수 있어야 합니다.

복잡한 내부 구조를 인터랙티브 시각화로 한눈에 파악하며 준비해 보겠습니다.


1. 인증 vs 인가 — 보안의 두 기둥

꼬리질문: "인증(Authentication)과 인가(Authorization)의 차이를 설명해주세요"

인증(Authentication)은 "당신은 누구인가?"를 확인하고, 인가(Authorization)는 "당신은 무엇을 할 수 있는가?"를 확인합니다.

두 개념을 비교하며 차이를 확인하세요.

인증(Authentication) vs 인가(Authorization)

보안의 두 기둥을 비교하세요.

핵심: 인증이 먼저, 인가가 그 다음. 인증 없이 인가는 불가능합니다.

2. Security Filter Chain — 요청의 관문

꼬리질문: "Spring Security의 필터 체인은 어떻게 동작하나요?"

Spring Security의 핵심은 Security Filter Chain입니다. 요청이 컨트롤러에 도달하기 전에 약 15개의 보안 필터를 순서대로 통과합니다.

필터를 하나씩 통과시키며 각 필터의 역할을 확인하세요.

Security Filter Chain

요청이 컨트롤러에 도달하기까지 거치는 보안 필터를 확인하세요.

HTTP 요청Filter ChainController
1

SecurityContextPersistenceFilter

SecurityContext를 세션에서 복원/저장

2

UsernamePasswordAuthenticationFilter

/login POST 요청을 가로채 인증 수행

3

BasicAuthenticationFilter

HTTP Basic 인증 헤더 처리

4

AuthorizationFilter

URL 기반 권한 검사 (requestMatchers)

5

ExceptionTranslationFilter

인증/인가 예외를 401/403 응답으로 변환

6

FilterSecurityInterceptor

최종 보안 결정 (접근 허용/거부)

3. 인증 흐름 — 로그인이 처리되는 8단계

꼬리질문: "인증 흐름을 단계별로 설명해주세요"

사용자가 ID/PW로 로그인하면 Filter → AuthenticationManager → AuthenticationProvider → UserDetailsService → PasswordEncoder를 거쳐 인증이 완료됩니다.

로그인 요청이 8단계를 거쳐 처리되는 과정을 따라가세요.

인증 흐름 시뮬레이터

로그인 요청이 8단계를 거쳐 처리되는 과정을 따라가세요.

1

로그인 요청

Client
2

Token 생성

Filter
3

AuthenticationManager

Manager
4

AuthenticationProvider

Provider
5

UserDetailsService

Service
6

비밀번호 비교

Encoder
7

인증 성공

Provider
8

SecurityContext 저장

Context

4. SecurityContext — 인증 정보의 저장소

꼬리질문: "SecurityContext는 무엇이고 어디에 저장되나요?"

SecurityContextHolder는 ThreadLocal 기반으로 현재 스레드의 보안 컨텍스트를 보유하며, Authentication 객체에 Principal, Credentials, Authorities가 담깁니다.

인증 전후 SecurityContext의 상태를 비교하세요.

SecurityContext 시각화

ThreadLocal 기반 SecurityContext에 인증 정보가 저장되는 구조를 확인하세요.

SecurityContextHolder (ThreadLocal)

SecurityContext

Authentication (null)

인증 정보 없음 — 로그인이 필요합니다

SecurityContext의 Authentication이 null이므로, 인증이 필요한 리소스 접근 시 401 Unauthorized가 반환됩니다.

자주 발생하는 문제

퀴즈로 확인하기

개념을 제대로 이해했는지 확인해 보세요.

1 / 4현재 점수: 0
Case 1: 인증 vs 인가
인증된 일반 사용자(ROLE_USER)가 /admin 페이지에 접근했다.
서버가 반환하는 HTTP 상태 코드는?

면접 체크리스트

이 항목들을 자신 있게 설명할 수 있다면 Spring Security 질문은 준비 완료입니다.

  • - 인증 vs 인가: 인증은 "누구인가"(401), 인가는 "권한이 있는가"(403)
  • - 필터 체인: DelegatingFilterProxy → FilterChainProxy → SecurityFilterChain (약 15개 필터)
  • - 인증 흐름: Filter → AuthenticationManager → AuthenticationProvider → UserDetailsService → PasswordEncoder
  • - SecurityContext: ThreadLocal 기반, Authentication 객체 보유
  • - PasswordEncoder: BCrypt 해싱, 솔트 자동 생성, 평문 저장 금지

참고 자료


의견을 들려주세요

서비스 개선에 큰 도움이 됩니다. 익명으로 자유롭게 남겨주세요.

0 / 1000
이전격리 수준과 동시성 문제 (준비 중)
다음SecurityFilterChain 구조 (준비 중)