💻데브노트소개
🗄️

JWT 인증 제대로 이해하기: 세션과 무엇이 다른가

데브노트 편집팀·2026.07.09·7분 읽기
X(트위터)
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는 무상태 확장성이 강점이지만, '취소가 어렵다'는 약점을 토큰 전략으로 메우는 게 핵심입니다.

#JWT#인증#보안#백엔드
X(트위터)
ADVERTISEMENT