JWT 디코더 및 만료시간(exp) 디버거 (100% 로컬 보안)
HOTJSON Web Token 헤더/페이로드 디코딩, 만료시간(exp) 카운트다운 진단, 서버 전송 없는 100% 브라우저 로컬 안전 동작
Responsive 728x90 / 320x100 Ad Slot
(CLS Prevention Active · Zero Shift){
"alg": "HS256",
"typ": "JWT"
}4S8y_F0j-r3XzN3pG5U6jK2l7P0q4Z2l6b8a1c9e8g
{
"sub": "1234567890",
"name": "John Doe",
"role": "admin",
"iat": 1516239022,
"exp": 1924905600
}Native In-Feed / High Viewability Ad Slot
(CLS Prevention Active · Zero Shift)JSON Web Token(JWT) 아키텍처와 상태 비저장 인증의 원리
JWT(JSON Web Token, RFC 7519)는 당사자 간의 정보를 안전하게 전송하기 위해 고안된 컴팩트하고 독립적인(Self-contained) 클라우드 웹 표준 인증 포맷입니다. 모놀리식 아키텍처 시절 중앙 세션 저장소(Redis, RDBMS)에 의존하던 전통적인 세션-쿠키 방식과 달리, JWT는 사용자의 고유 식별자, 권한 목록(Roles), 토큰 수명(Expiration) 등의 정보를 토큰 자체의 페이로드(Payload)에 담고 있어, 서버리스(Serverless), 마이크로서비스(MSA), 그리고 분산 클라우드 환경에서 서버 간 세션 동기화 비용을 완전히 제거합니다.
그러나 현업 개발 과정에서 JWT와 관련해 가장 빈번하게 발생하는 치명적인 오해는 'JWT는 암호화(Encryption)되어 있으므로 안전하다'는 착각입니다. 일반적으로 사용되는 JWS(JSON Web Signature) 표준의 JWT는 암호화된 것이 아니라, 단지 마침표(.)로 구분된 3개의 컴포넌트(Header, Payload, Signature)를 URL 안전 문자열인 Base64Url로 인코딩한 것에 불과합니다. 즉, 브라우저 콘솔이나 네트워크 스니핑을 통해 JWT 문자열을 손에 넣은 사람은 누구나 페이로드를 단 1초 만에 디코딩하여 그 안의 모든 데이터를 평문으로 읽을 수 있습니다.
오르보킷 JWT 디코더 및 디버거는 헤더(Header)의 암호화 알고리즘(alg, typ)과 페이로드(Payload)의 클레임 데이터를 즉시 서식화된 JSON으로 시각화합니다. 특히 'exp(만료시간)'와 'iat(발급시간)' Unix 타임스탬프를 사용자의 로컬 시간대로 자동 변환하고 실시간 만료 카운트다운 타이머를 제공합니다. 무엇보다 외부 디버깅 사이트들이 토큰을 서버로 전송하여 유출 위험이 있는 것과 달리, 100% 브라우저 로컬 연산으로 동작하여 사내 운영 서버의 프로덕션 Bearer 토큰도 안심하고 점검할 수 있습니다.
JWT 3단 구조 분석과 Base64Url 디코딩 및 서명 검증 원리
마침표(.)로 결합된 3개 파트의 직렬화 메커니즘과 비대칭/대칭 키 서명 검증 알고리즘입니다.
서버는 비밀키(SecretKey)를 이용해 클라이언트가 보낸 Header와 Payload로 새로운 서명을 계산한 뒤, 토큰의 3번째 파트(Signature)와 바이트 단위로 일치하는지 대조하여 위변조 여부를 100% 감지합니다.
👉 페이로드는 누구나 읽을 수 있지만, 서버의 비밀키 없이는 단 1글자의 클레임도 위변조할 수 없습니다.
- Base64Url 인코딩: 표준 Base64의 '+'와 '/' 문자를 URL 쿼리스트링 및 HTTP 헤더에서 안전하게 사용할 수 있도록 각각 '-'와 '_'로 치환하고 패딩('=')을 생략한 규격입니다.
- 시간 기반 표준 클레임: 'exp'(만료 시간), 'nbf'(활성화 시간), 'iat'(발급 시간)은 모두 초(Seconds) 단위의 Unix Epoch 타임스탬프를 사용합니다.
- 대칭키(HS256) vs 비대칭키(RS256): 단일 백엔드는 공유 비밀키(Secret)를 쓰는 HS256이 효율적이며, 마이크로서비스나 Auth0/Cognito 같은 외부 IdP는 비공개키로 서명하고 공개키로 검증하는 RS256/ES256을 주로 채택합니다.
- 탈취 위험과 무상태성(Stateless): 서버가 세션을 저장하지 않으므로 토큰이 탈취되면 만료될 때까지 강제 무효화하기 어렵습니다. 따라서 Access Token은 수명을 짧게(15~30분) 유지해야 합니다.
JWT 표준 등록 클레임(Registered Claims) 및 알고리즘 규격표
RFC 7519에 정의된 공식 표준 클레임과 대표 서명 알고리즘입니다.
| 클레임 / 알고리즘 | 풀네임 / 분류 | 데이터 타입 | 설명 및 실무 용도 |
|---|---|---|---|
| iss | Issuer (발급자) | String | 토큰을 발행한 주체 URL 또는 식별자 (예: https://auth.orvokit.com) |
| sub | Subject (주제) | String | 토큰의 주인인 고유 사용자 ID (User UUID 등) |
| aud | Audience (대상자) | String / Array | 토큰을 수신하여 처리할 대상 리소스 서버 식별자 |
| exp | Expiration Time (만료일시) | Numeric (Epoch sec) | 토큰이 만료되어 폐기되어야 하는 절대 시점 (Unix 타임스탬프) |
| nbf | Not Before (활성일시) | Numeric (Epoch sec) | 토큰이 유효해지기 시작하는 시점 (이 시간 이전에는 거부) |
| iat | Issued At (발급일시) | Numeric (Epoch sec) | 토큰이 생성되어 클라이언트에 전달된 시점 |
| jti | JWT ID (고유 식별자) | String (UUID) | 토큰의 고유 ID (일회성 토큰 재생 공격 방지 및 블랙리스트 관리) |
| HS256 | HMAC with SHA-256 | Symmetric Algorithm | 단일 대칭 비밀키로 서명 및 검증 수행 (단일 모놀리스 API) |
| RS256 | RSA Signature with SHA-256 | Asymmetric Algorithm | 비공개키로 서명, JWKS 공개키로 다수 서버가 검증 (MSA 표준) |
* 표준 클레임 이름은 대역폭 절약을 위해 3글자 약어로 규격화되어 있습니다.
High-Engagement In-Article Native Ad Slot
(CLS Prevention Active · Zero Shift)사용 방법
11. JWT 토큰 붙여넣기
개발자 도구(Network 탭)나 응답 헤더에서 복사한 'Bearer eyJ...' 형태의 3단 JWT 문자열을 입력창에 붙여넣으세요.
22. 디코딩된 헤더(Header) 및 페이로드(Payload) 확인
Base64Url 디코딩을 거쳐 색상별로 구분된 알고리즘(HS256/RS256)과 클레임 JSON 데이터를 즉시 확인하세요.
33. 토큰 만료 여부(exp) 및 유효시간 실시간 진단
토큰이 이미 만료되었는지(Expired), 또는 만료까지 몇 시간/몇 분이 남았는지 실시간 카운트다운 게이지를 확인하세요.
44. 클레임(Claims) 상세 분석 및 디버깅
sub(사용자 ID), iss(발급자), aud(대상자), scope(권한 롤) 등 비즈니스 인가 로직에 필요한 데이터가 올바른지 검증하세요.
실제 인증 파이프라인 디버깅 시나리오
현업 개발에서 자주 마주치는 JWT 디버깅 활용 사례입니다.
사용자가 자꾸 튕기는 현상 발생 시, exp 클레임과 시스템 시계 오차(Clock Skew)를 대조하여 토큰 수명 설정 오류 파악.
특정 관리자 메뉴 접근 실패 시, 페이로드의 roles 또는 permissions 배열에 필요한 권한 문자열이 누락되었는지 확인.
구글, 카카오, 애플 로그인 시 발급되는 id_token의 이메일 및 사용자 식별자(sub) 페이로드 정상 유입 확인.
클라이언트 사이드 Axios 인터셉터에서 401 발생 전 exp 타임스탬프를 사전에 감지하여 토큰을 무중단 갱신.
💡 JWT 보안 설계 전문가 팁 & 치명적인 보안 취약점
페이로드는 누구나 Base64Url로 디코딩할 수 있는 완전한 공개 텍스트입니다. 주민번호, 비밀번호, 결제 정보 등은 절대로 담지 마세요.
서버 측 검증 라이브러리 설정 시 alg가 'none'으로 지정된 위조 토큰을 허용하지 않도록 엄격한 알고리즘 화이트리스트를 지정하세요.
서버 간 미세한 시간 차이(1~2초)로 인해 방금 발급된 토큰이 즉시 만료로 처리되는 것을 방지하기 위해 10~30초의 허용 오차를 설정하세요.
무상태성 토큰은 탈취 시 취소가 어려우므로 Access Token은 15분~1시간 이내로 짧게 유지하고 Refresh Token을 안전한 HttpOnly 쿠키로 관리하세요.
⚠️ 흔히 하는 실수 & 예방법
자주 묻는 질문 (FAQ)
사용자 및 전문가들이 가장 자주 묻는 핵심 질문과 명확한 해답입니다.
신뢰할 수 없는 외부 웹사이트에 실제 서비스 중인 프로덕션 JWT(특히 유효기간이 많이 남은 Access Token이나 Refresh Token)를 붙여넣는 것은 매우 위험합니다. 악의적인 사이트가 토큰을 백엔드 DB에 수집할 경우 귀하의 계정 세션이 그대로 하이재킹당할 수 있습니다. 오르보킷 JWT 디버거는 외부 네트워크 통신이 일절 없는 100% 브라우저 샌드박스에서만 실행되므로 완벽하게 안전합니다.
Wide Responsive Banner
(CLS Prevention Active · Zero Shift)관련 도구 추천
Base64 인코더 및 디코더
한글 UTF-8 깨짐 방지 완벽 지원, 텍스트 및 파일 업로드 Data URL 상호 변환
URL 인코더 · 디코더 및 Query String 파라미터 파서
웹 주소 퍼센트 인코딩/디코딩, 한글 깨짐 방지 및 URL Query String(?key=value) 표 형태 구조 분석
JSON 포매터 및 유효성 검증기
JSON 정렬, 들여쓰기 2칸/4칸/압축(Minify), 문법 에러 위치 감지, 코드/트리 뷰 및 다운로드
AI 프롬프트 토큰 및 LLM 모델별 API 비용 비교 계산기
텍스트 기반 예상 토큰 계산 및 GPT-6 Sol/Astra, Claude 5.5, Gemini 4, Gemini 3.8 Flash 최신 API 호출 비용 비교