LumoMate
LumoMate/용어집/BoundarySecurity

JWT

JWT(JSON Web Token)는 사용자 정보를 담고 서명한 짧은 문자열입니다. 서버가 매 요청마다 DB를 보지 않고도 '이 사용자는 누구다'를 검증할 수 있게 해 줍니다.
JWT의 개념을 표현한 편집형 일러스트.

쉬운 설명

전통적인 세션 방식은 서버가 사용자별 세션 ID를 메모리·DB에 저장해 두고, 매 요청마다 그 ID로 사용자를 찾아옵니다. 서버를 여러 대 운영하거나 서버리스에서는 다소 무겁습니다. JWT는 사용자 정보 자체를 토큰 안에 담고 서버 비밀 키로 서명해 두는 방식입니다.

구조는 세 부분 — 헤더, 페이로드, 서명 — 이 점(.)으로 이어져 있습니다. 페이로드 안에 'userId: 42, role: editor, exp: 만료시각'처럼 정보가 평문으로(Base64 인코딩) 들어가고, 마지막 서명이 그 내용을 누구도 변조하지 못하게 보증합니다. 클라이언트가 토큰을 보관하고, 매 요청에 Authorization 헤더로 함께 보냅니다.

동작 흐름은 다섯 단계입니다. ① 사용자 로그인 → ② 서버가 비밀 키로 서명한 JWT 발급 → ③ 클라이언트가 토큰을 저장(쿠키·localStorage) → ④ 매 요청에 'Authorization: Bearer <token>'으로 함께 보냄 → ⑤ 서버는 서명만 검증하면 즉시 사용자를 인식. DB 조회가 필요 없어 응답이 빠르고, 여러 서버로 확장이 쉽습니다.

자주 혼동되는 두 가지. 첫째, JWT는 암호화가 아니라 서명입니다. 즉 내용은 누구나 볼 수 있고, 변조만 막힙니다. 그래서 페이로드에 민감 정보를 담으면 안 됩니다. 둘째, JWT는 '서버가 즉시 무효화하기 어렵다'는 단점이 있습니다. 발급 후엔 만료까지 유효하기 때문에, 로그아웃 즉시 차단이 중요한 시스템은 짧은 만료(15분~1시간) + 갱신 토큰(refresh token)을 함께 쓰거나, 차단 목록(blocklist)을 별도로 관리합니다.

쓰지 말아야 하는 곳도 있습니다. 보안 요구가 매우 높은 시스템(금융·의료) — 즉시 무효화·세션 추적이 필요하면 전통적인 세션이 더 안전합니다. JWT의 가장 큰 가치는 '서버 간 신원 전달' — API 게이트웨이 뒤의 여러 서비스가 같은 토큰을 검증해 사용자를 인식하는 마이크로서비스 아키텍처에서 진가가 드러납니다.

JWT의 개념을 본문 안에서 다른 각도로 비춰 보는 편집형 일러스트.
FIG. 1JWT을 다른 각도에서 다시 봅니다.

비유로 보면

JWT는 콘서트의 손목 밴드와 비슷합니다. 입장 시 한 번 발급받으면, 그 뒤로는 어느 구역에 가든 손목 밴드만 보여 주면 직원이 즉시 통과시켜 줍니다. 매번 입장권 발급기에 다시 가지 않아도 됩니다. 단점은 콘서트 도중에 환불·퇴장 처리를 해도 손목 밴드를 풀기 전까지는 그 사람이 계속 입장한 상태로 보인다는 점입니다.

어디에서 만나나

모바일 앱과 서버 통신, 마이크로서비스 사이의 인증 전달, OAuth/OIDC의 ID 토큰, 사이드프로젝트·SaaS의 일반적인 로그인. Auth0·Clerk·Supabase Auth·Firebase Auth 같은 인증 서비스 대부분이 JWT 기반으로 동작합니다.

작은 예시

로그인하면 서버가 'user_id=42, exp=1h 후'가 담긴 JWT를 발급합니다. 브라우저는 그 토큰을 저장해 두고 매 API 호출의 헤더에 'Authorization: Bearer <token>'으로 함께 보냅니다. 서버는 토큰의 서명만 확인하면 즉시 'user 42'로 인식할 수 있고, DB 조회가 필요 없습니다.

자주 하는 오해

오해
흔한 오해 셋. ① 'JWT는 암호화' — 서명이지 암호화가 아닙니다. 페이로드는 누구나 디코딩해 볼 수 있습니다. ② '쿠키 대신 무조건 JWT' — 같은 도메인 안의 단일 서비스라면 세션 쿠키가 더 단순·안전한 경우가 많습니다. ③ 'JWT면 즉시 무효화 가능' — 그 반대입니다. 만료까지 유효하므로 즉시 차단이 어렵습니다.

한 줄 정리

JWT의 가치는 '서버가 매번 DB를 안 봐도 사용자를 인식한다'에 있습니다. 그 가치는 마이크로서비스·서버리스에서 가장 잘 드러나고, 단순한 단일 서비스에는 과한 선택일 수 있습니다.
매주 월요일 오전 8시

한 주에 한 통,
오래 남는 이해를 보냅니다.

흘려보내지 않는 글만 골라 보내드립니다. 광고와 추적, 외부로 빠지는 미끼 링크 없이 메일 안에서 끝나는 한 통입니다.

언제든 한 번의 클릭으로 해지할 수 있습니다. 스팸은 보내지 않습니다.