사용 방법
- 토큰을 붙여 넣습니다.
Authorization: Bearer ...에서 복사했다면 Bearer가 붙어 있어도 됩니다. - 헤더와 페이로드가 JSON으로 풀리고, 발급·만료 시각이 한국 시간으로 표시됩니다. 위쪽 상자에서 지금 기준으로 만료됐는지 바로 볼 수 있습니다.
- HS256 같은 비밀키 방식이면 비밀키를 넣고 ‘서명 확인’을 눌러 위조 여부를 확인할 수 있습니다. 비밀키도 브라우저 밖으로 나가지 않습니다.
계산 기준과 공식
JWT는 헤더.페이로드.서명 세 부분을 점으로 이은 문자열입니다. 헤더와 페이로드는 JSON을 Base64URL로 인코딩한 것일 뿐 암호화가 아니므로, 토큰을 가진 사람은 누구나 내용을 읽을 수 있습니다.
- 헤더: 서명 알고리즘(
alg)과 형식(typ) - 페이로드: 사용자 ID(
sub), 발급 시각(iat), 만료 시각(exp) 같은 클레임. 시각은 Unix 초 단위입니다. - 서명: 헤더와 페이로드를 비밀키(HS256)나 개인키(RS256, ES256)로 서명한 값. 내용이 한 글자라도 바뀌면 서명이 맞지 않습니다.
이 도구의 ‘유효/만료’ 표시는 시각만 비교한 것입니다. 서버는 서명, 발급자(iss), 대상(aud)까지 확인해야 합니다.
예시
예시 토큰 읽기
처음 들어 있는 토큰은 HS256으로 서명됐고, 페이로드에
sub: user_1024,role: admin, 1년 뒤 만료 시각이 들어 있습니다. 비밀키 칸에123tool-demo-secret을 넣고 서명 확인을 누르면 ‘서명 일치’가 나옵니다.페이로드를 고쳐 권한을 바꾸면
가운데 부분을 디코딩해
role을 바꾸고 다시 인코딩해도, 서명은 원래 내용으로 계산된 값이라 서버 검증에서 실패합니다. 같은 비밀키로 서명 확인을 해 보면 ‘서명 불일치’가 나옵니다. 이것이 JWT가 위조를 막는 방식입니다.
결과를 읽는 법
만료됨이면 서버는 이 토큰을 거부합니다. 리프레시 토큰으로 새 토큰을 받아야 합니다. 서버와 클라이언트의 시계가 몇 분 어긋나 있으면 만료 직전 토큰이 거부될 수 있습니다.
세 부분이 아니라 다섯 부분이면 암호화된 JWE 토큰이라 비밀키 없이는 내용을 볼 수 없습니다.
자주 묻는 질문
JWT 내용을 볼 수 있다면 안전하지 않은 것 아닌가요?
JWT는 내용을 숨기는 게 아니라 위조를 막는 방식입니다. 그래서 페이로드에 비밀번호, 주민번호 같은 민감한 정보를 넣으면 안 됩니다. 숨겨야 하면 JWE(암호화된 JWT)를 써야 합니다.
여기에 운영 토큰을 넣어도 되나요?
토큰은 서버로 전송되지 않고 브라우저 안에서만 해석됩니다. 그래도 운영 환경의 유효한 토큰은 탈취되면 그대로 쓸 수 있으므로, 가능하면 만료된 토큰이나 테스트 토큰을 넣으세요.
RS256 토큰은 왜 서명 확인이 안 되나요?
RS256, ES256은 개인키로 서명하고 공개키(JWKS)로 검증합니다. 공개키를 가져와 맞춰야 해서 이 도구에서는 비밀키 방식(HS256/384/512)만 확인합니다.
exp 숫자는 어떻게 읽나요?
1970년 1월 1일(UTC)부터 흐른 초입니다. 이 도구는 자동으로 한국 시간으로 바꿔 보여주며, 직접 바꾸려면 타임스탬프 변환기를 쓰면 됩니다.
결과가 이상하거나 있었으면 하는 기능이 있나요? 오류 제보 · 의견 보내기