JWT 온라인 디코딩

로컬 처리
app.jwt.view

다음으로도 #data={"name":"Ada"} 또는 #url=... 데이터를 넣을 수 있으며, 읽은 뒤 주소 표시줄에서 지워집니다.

사용 방법

JWT는 Header, Payload, 서명 세 구간으로 이루어집니다. 이 페이지는 브라우저에서 앞 두 구간만 Base64URL 디코딩해 만료 시간과 사용자 정의 claim을 보기 쉽게 합니다. Token은 서버로 가지 않습니다. 로그인 상태를 디버깅하거나 exp 가 만료됐는지 확인할 때, 실제 Token을 알 수 없는 사이트에 붙일 필요가 없습니다.

로컬 분해

로그인 상태 디버깅, exp / sub 확인에 맞습니다. Header에서 알고리즘과 타입을, Payload에서 업무 클레임을 볼 수 있습니다.

서명 구간이 없어도 앞 두 구간 디코딩을 시도해, 잘린 로그를 다루기 쉽습니다.

서명 검증 없음

비공개 키는 웹페이지에 있으면 안 됩니다. 운영 서명 검증은 백엔드에 두세요. Token을 가진 사람은 누구나 Payload를 읽을 수 있으니, 기밀은 HTTPS와 짧은 만료에 의존합니다.

이 페이지는 서명 문자열을 보여 주지만 HMAC / RSA가 맞는지는 검증하지 않습니다.

클레임 대조

공식 필드 iss로컬 분해aud로그인 상태 디버깅,iat 등을 인식하고 의미를 표시합니다. 숫자 타임스탬프는 되도록 읽기 쉬운 시간으로 바꿉니다.

사용자 정의 claim은 그대로 나열해 자체 로그인 프로토콜과 대조하기 쉽습니다.

예시

Token 형태
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0IiwibmFtZSI6IuW8oOS4iSIsImlhdCI6MTcyMDAwMDAwMCwiZXhwIjoxOTAwMDAwMDAwfQ.signature
디코딩 후 보이는 것
{
  "header": { "alg": "HS256", "typ": "JWT" },
  "payload": { "sub": "1234", "name": "张三", "iat": 1720000000, "exp": 1900000000 }
}
서명 구간을 검증하나요?

현재는 서명 문자열만 보여 주고 진위를 검증하지 않습니다. 누구나 Payload를 디코딩할 수 있으며, 기밀은 HTTPS와 백엔드 서명 검증에 달려 있습니다.

큰 정수는 정밀도가 떨어지나요?

JavaScript Number에는 정밀도 상한이 있습니다. 아주 큰 ID는 Number로 바꾼 값만 보지 말고 원본 Payload와 대조하세요.

Token이 저장되나요?

업로드하지 않고 클라우드 기록에도 쓰지 않습니다. 탭을 닫으면 메모리에서 사라집니다.

로그인을 위조하는 데 쓸 수 있나요?

할 수도 없고 해서도 안 됩니다. 비공개 키 없이는 서버 서명 검증을 통과하는 Token을 만들 수 없습니다. 이 페이지는 읽기 전용입니다.

권장 워크플로

  1. 응답 헤더, Cookie, 로컬 저장소에서 JWT를 복사하세요(채팅방에 보내지 마세요).
  2. 이 페이지에 붙여넣거나 예시를 불러 Header와 Payload를 보세요.
  3. 다음을 확인하세요: exp / nbf 이 현재 시간과 맞는지, 그리고 aud 이 올바른 서비스를 가리키는지 확인하세요.
  4. 서명 검증, 갱신, 폐기는 모두 백엔드에서 하고, 이 페이지는 읽기를 도울 뿐입니다.

JWT를 디코딩할 수 있다는 것이 인증됐다는 뜻은 아닙니다. Token을 비밀번호처럼 보관하고, 만료되면 바로 무효화하세요.