- 토큰 기반 인증(Token-Based Authentication) 의 개념
- Stateless 아키텍처의 의미, 필요성
- 토큰의 자체 포함성(self-contained) 개념
- 서버 부하 분산과 확장성 측면에서 토큰 기반 인증의 장점
- 세션 기반 인증과 비교하여 토큰 기반 인증의 특징 구분하기
토큰 기반 인증 개요
토큰 기반 인증은 사용자가 로그인에 성공하면
서버가 세션을 저장하지 않고, 대신 토큰(Token)을 발급하여
클라이언트가 이를 보관하고 요청마다 서버에 전달하는 방식이다
이 방식은 서버가 사용자의 상태(Session)를 저장하지 않으므로 Stateless 아키텍처를 따른다
Stateless 아키텍처의 이해
토큰 기반 인증은 Stateless(무상태성) 아키텍처의 핵심이다
서버는 클라이언트의 인증 상태를 저장하지 않고, 오직 요청에 담긴 토큰만으로 사용자를 식별한다
1. Stateless의 특징
| 특징 | 설명 |
| 서버 상태 저장 | 없음(Stateless) |
| 인증 정보 위치 | 클라이언트가 보관한 토큰 |
| 요청 처리 | 각 요청마다 토큰을 검증하여 처리함 |
2. 장점
- 서버 확장시 세션 공유 문제 해결(서버간 세션 동기화가 불필요, 클라이언트마다 토큰을 가지고 있기 때문)
- 부하 분산(Load Balancing) 용이
- 서버 리소스 절약(세션 저장 공간이 불필요함)
예 : 사용자가 서버 A에서 로그인 후 서버 B로 요청을 보내더라도, 토큰만 유효하다면 정상적으로 인증된다
| 항목 | 세션 기반 인증 | 토큰 기반 인증 |
| 서버 상태 저장 | 세션 저장소가 필요 | 저장하지 않음(Stateless) |
| 확장성 | 세션 공유가 필요함 | 서버간 동기화가 불필요함 |
| 부하 분산 | Sticky Session 필요 | 자유로운 부하 분산 가능 |
토큰의 자체 포함성(Self-Contained)
토큰은 보통 JWT(Json Web Token) 형태로 발급된다
JWT는 자체적으로 사용자의 정보와 권한 등을 포함하고 있다
1. 구조
header.payload.signature
- Header : 토큰 타입(JWT)과 서명 알고리즘 정보가 들어있는곳
- Payload : 사용자의 정보(userId, role 등)와 만료시간(exp)이 들어있는곳
- Signature : 서버 비밀키를 이용한 서명 값(위조 방지)
예시
{
"alg": "HS256",
"typ": "JWT"
}. // header 끝
{
"sub": "alice",
"role": "USER",
"exp": 1700000000
}. // payload 끝
"signatureData" // signature
2. 자체 포함성의 의미
- 토큰만 있으면, 서버는 추가 조회 없이 사용자의 정보를 확인할 수 있다
- 세션 저장소를 따로 운영할 필요가 없다
팁
- 토큰에는 중요한 개인정보를 직접 담지 않고, 최소한의 정보만 포함해야한다
- 민감한 데이터는 DB 조회를 통해 확인하고, 토큰에는 ID / 권한 / 만료시간 정도만 포함하는게 일반적이다
| 항목 | 설명 |
| Header | 토큰 메타 정보(타입, 알고리즘 등) |
| Payload | 사용자 정보, 권한, 만료시간 |
| Signature | 위조 방지를 위한 서버 서명 (서버 전용 보안) |
서버 부하 분산과 확장성 향상
토큰 기반 인증은 분산 환경에서 특히 강력한 장점을 가진다
1. 서버 확장성
- 서버는 토큰만 검증하면 되므로, 사용자의 수가 늘어나도 세션 저장소의 부담이 없다
- 새로운 서버를 증설하더라도 세션 동기화 과정이 필요하지 않음
2. 부하 분산(로드 밸런서)
- 모든 서버가 동일한 방식으로 토큰 검증을 수행할 수 있다
- 특정 서버에 사용자를 고정시키는 Sticky Session 이 필요하지 않다
모든 서버가 독립적으로 토큰 검증을 처리할 수 있어서, 시스템 확장성이 크게 향상된다
팁
- 토큰 검증을 위한 키 관리가 중요하다(예 : 대칭키, 공개키 / 개인키)
- 만료 시간(exp)을 반드시 설정하여 보안 사고를 예방해야함(탈취 예방)
'Spring Boot > Security 토큰 기반 인증,인가' 카테고리의 다른 글
| JWT의 구조, 원리 : JWT의 구조 이해 (0) | 2026.05.20 |
|---|---|
| JWT의 구조, 원리 : JWT의 정의와 표준 (0) | 2026.05.20 |
| 토큰 기반 인증의 개념, 필요성 : 토큰 기반 인증이 적합한 상황 (0) | 2026.05.19 |
| 토큰 기반 인증의 개념, 필요성 : 세션 기반 인증, 한계 (복습) (0) | 2026.05.18 |