기능 소개
JSON Web Token(JWT)은 점으로 구분된 세 부분으로 이루어진 간결한 문자열입니다. 서명 알고리즘을 나타내는 헤더, 사용자나 세션에 관한 클레임을 담은 페이로드, 그리고 서명입니다. JWT는 로그인 세션, OAuth 2.0 액세스 토큰, OpenID Connect ID 토큰에 쓰입니다.
헤더와 페이로드는 암호화된 것이 아니라 Base64URL로 인코딩되어 있을 뿐입니다. 이 도구는 이를 읽기 쉽게 포맷된 JSON으로 디코딩하고 표준 시간 클레임을 설명해 주므로, 토큰이 누구를 위한 것인지, 어떤 권한을 담고 있는지, 만료되었는지 확인할 수 있습니다.
사용 방법
- 인코딩된 토큰에 토큰을 붙여넣습니다. Authorization 헤더에서 복사한 앞부분의
Bearer는 자동으로 제거됩니다. - 상태 배지를 확인합니다: 만료되지 않음, 만료됨, 아직 유효하지 않음, 만료 없음.
- 발급 시각, 유효 시작 시각, 만료 시각을 확인합니다. 로컬 시간과 Unix 초로 함께 표시됩니다.
- 복사 버튼으로 포맷된 헤더나 페이로드 JSON을 복사합니다.
예시
예시 토큰의 헤더와 페이로드는 다음과 같습니다.
{ "alg": "HS256", "typ": "JWT" }
{
"sub": "1234567890",
"name": "张三 Jane Doe",
"roles": ["admin", "editor"],
"iat": 1700000000,
"exp": 4102444800
}
주요 클레임
iss발급자,sub주체(보통 사용자 ID),aud대상iat발급 시각,nbf유효 시작 시각,exp만료 시각, 모두 Unix 초 단위jti고유 토큰 ID, 토큰 폐기에 자주 쓰임
자주 묻는 질문
› 여기에 토큰을 붙여넣어도 안전한가요?
토큰은 브라우저에서 디코딩되며 어디로도 전송되지 않습니다. 그렇더라도 프로덕션 토큰은 비밀번호처럼 다루세요. 유효한 토큰을 가진 사람은 누구나 만료될 때까지 그 토큰을 사용할 수 있습니다.
› 이 도구가 서명을 검증하나요?
아니요. 검증하려면 비밀 키(HS256)나 발급자의 공개 키(RS256, ES256)가 필요합니다. 디코딩은 내용을 읽기만 하며, 그 내용은 암호화된 것이 아니라 Base64URL로 인코딩되어 있을 뿐입니다. 서버에서 검증하지 않은 토큰의 클레임은 절대 신뢰하지 마세요.
› "만료됨"으로 표시되는 이유는 무엇인가요?
exp 클레임이 기기의 현재 시각보다 이전이기 때문입니다. 기기 시계가 정확한지 확인한 뒤 발급자에게 새 토큰을 요청하세요.
› 암호화된 토큰(JWE)도 디코딩할 수 있나요?
아니요. JWE는 다섯 부분으로 이루어지고 페이로드가 암호화되어 있으므로 복호화 키 없이는 읽을 수 없습니다.