Spring Security는 모든 요청이 컨트롤러에 도달하기 전에 가로채는 서블릿 filter chain입니다. **인증(authentication)**은 "당신은 누구인가?"에 답하고; **인가(authorization)**는 "이 작업을 할 수 있는가?"에 답합니다. 무상태 REST API에서는 서버 측 세션 대신 JWT(JSON Web Token)를 쓰는 것이 일반적인 접근입니다.
JWT 흐름
text
POST /login (user+pass) ──▶ AuthController verifies ──▶ signs JWT ──▶ returns token
│
Client stores it, then sends on every call: ▼
GET /api/orders Authorization: Bearer <jwt> ──▶ JwtFilter validates ──▶ controller
토큰은 서버가 서명하므로, 이후 요청에서 filter가 이를 검증할 수 있습니다 — 이것이 무상태이면서 수평 확장 가능하게 만드는 요소입니다.
