JWT 인증 제대로 이해하기: 세션과 무엇이 다른가
데브노트 편집팀·2026.07.09·7분 읽기
ADVERTISEMENT
JWT(JSON Web Token)는 서버가 상태를 저장하지 않는 인증 방식입니다. 토큰 자체에 정보가 담겨 있어, 서버는 서명만 검증하면 됩니다.
세션 vs JWT
| 구분 | 세션 | JWT |
|---|---|---|
| 상태 저장 | 서버(메모리·DB) | 없음(토큰 자체) |
| 확장성 | 서버 간 공유 필요 | 서버 무상태라 쉬움 |
| 무효화 | 즉시 삭제 가능 | 만료 전 취소 어려움 |
세션은 서버가 로그인 상태를 기억하고, JWT는 클라이언트가 토큰을 들고 다니며 매 요청에 제시합니다.
JWT 구조: 헤더.페이로드.서명
eyJhbGciOiJIUzI1NiJ9 . eyJ1c2VySWQiOjF9 . SflKxw...
헤더(알고리즘) 페이로드(데이터) 서명
페이로드는 암호화가 아니라 인코딩일 뿐입니다. 누구나 디코딩해 볼 수 있으니 비밀번호 같은 민감정보를 넣으면 안 됩니다. 서명은 서버 비밀키로 만들어 위변조를 막습니다.
액세스 + 리프레시 전략
- 액세스 토큰: 수명 짧게(15~30분). API 인증에 사용
- 리프레시 토큰: 수명 길게(2주). 액세스 토큰 재발급에만 사용
// 액세스 토큰 검증 미들웨어 예시
import jwt from 'jsonwebtoken';
function auth(req, res, next) {
const token = req.headers.authorization?.split(' ')[1];
try {
req.user = jwt.verify(token, process.env.JWT_SECRET);
next();
} catch {
res.status(401).json({ error: '유효하지 않은 토큰' });
}
}
저장 위치와 보안 함정
- localStorage: 편하지만 XSS에 토큰 탈취 위험
- httpOnly 쿠키: JS 접근 불가라 XSS에 안전, 대신 CSRF 대비 필요
- 권장: 리프레시 토큰은 httpOnly + Secure 쿠키, 액세스 토큰은 메모리
마무리 체크리스트
- 페이로드에 민감정보 금지(인코딩일 뿐)
- 액세스는 짧게, 리프레시는 길게
- 리프레시 토큰은 httpOnly 쿠키에
- 즉시 무효화가 필요하면 블랙리스트 병행
- 항상 HTTPS로 전송
JWT는 무상태 확장성이 강점이지만, '취소가 어렵다'는 약점을 토큰 전략으로 메우는 게 핵심입니다.
ADVERTISEMENT
함께 보면 좋은 글
백엔드·인프라· 7분
CORS 에러, 도대체 왜 나는 걸까: 원리와 해결
브라우저의 동일 출처 정책, preflight(OPTIONS) 요청, Access-Control-Allow-* 헤더의 역할을 이해하면 CORS 에러는 더 이상 미스터리가 아닙니다.
2026.06.12
백엔드·인프라· 6분
REST vs GraphQL: 무엇을 언제 선택할까
오버페칭·언더페칭 문제부터 캐싱·러닝커브까지. REST와 GraphQL의 본질적 차이와 프로젝트별 선택 기준을 실전 관점에서 비교합니다.
2026.07.10
백엔드·인프라· 7분
REST API 설계 원칙: 실무에서 욕먹지 않는 7가지 규칙
URL에 동사를 넣고, 200으로 에러를 내보내는 잘못된 API는 이제 그만. 리소스 명명, HTTP 메서드, 상태 코드, 버저닝까지 실무 표준에 맞춰 REST API를 설계하는 법을 정리했습니다.
2026.06.25