JWT
📌 JWT(JSON Web Token)란?
info
JWT는 사용자 인증 정보를 JSON 형식으로 인코딩하여 만든 디지털 토큰이다.
인증된 사용자의 신원을 증명하고, 서버 간의 Stateless(무상태) 통신을 가능하게 한다.
✅ JWT의 구조
JWT는 .
으로 구분된 3개의 문자열로 구성된다.
xxxxx.yyyyy.zzzzz
구성 요소 | 설명 |
---|---|
Header | 토큰 타입과 서명 알고리즘 (예: HS256) |
Payload | 사용자 정보(Claims) 포함 (ex. userId, role 등) |
Signature | 비밀키 기반의 서명값 (위조 방지) |
✅ JWT 예시
Header: {
"alg": "HS256",
"typ": "JWT"
}
Payload: {
"sub": "1234567890",
"name": "John Doe",
"role": "USER",
"exp": 1682927358
}
✅ JWT의 특징
- Stateless: 서버에 세션 상태를 저장하지 않음
- Self-contained: 필요한 정보가 토큰 내부에 모두 포함
- 확장성: 여러 서비스 간 인증 정보 공유 용이
- 보안 주의: 민감 정보는 토큰에 직접 포함하지 말 것
✅ JWT 동작 흐름
- 사용자가 로그인 → 서버에서 JWT 생성 후 응답
- 클라이언트는 JWT를 로컬에 저장(LocalStorage, Cookie 등)
- 이후 요청 시
Authorization: Bearer <token>
헤더로 전송 - 서버는 토큰을 검증하여 사용자 인증 처리
✅ JWT vs 세션 기반 인증
항목 | JWT | 세션 |
---|---|---|
서버 상태 | Stateless | Stateful |
저장 위치 | 클라이언트 (브라우저) | 서버 (메모리/DB) |
확장성 | 뛰어남 (서버 간 공유 쉬움) | 낮음 |
보안 | 토큰 탈취 위험 존재 | 서버 보호 필요 |
로그아웃 처리 | 복잡 (블랙리스트 필요) | 세션 만료로 간단 |
✅ JWT 사용 시 주의 사항
- HTTPS 기반 통신 필수 (중간자 공격 방지)
- 짧은 만료 시간 설정 권장
- Refresh Token과 조합하여 사용
- 토큰 검증 시 서명 유효성 반드시 체크
댓글남기기