JWT
JWT 유틸리티는 JSON Web Token을 디코딩하고 검사하여, 개인 키 없이도 구조, 클레임, 보안 속성을 검토할 수 있게 합니다.
도구 사용
- 입력 필드에 JWT를 붙여 넣습니다. 도구는 점으로 구분된 표준 세 부분 형식을 지원합니다.
- 도구가 헤더와 페이로드 부분을 자동으로 분리하고 Base64 디코딩합니다.
- 아래 세 영역에서 디코딩된 출력을 검토합니다.
검사에는 키 자료가 필요하지 않습니다. 서명 검증은 별도의 작업입니다.
디코딩된 영역
헤더
알고리즘(alg)과 키 ID(kid) 필드를 표시합니다. 알고리즘 경고도 여기에 나타납니다.
| 조건 | 경고 수준 |
|---|---|
alg: none | 치명적: 토큰에 서명이 없음 |
alg: HS256 | 알림: 대칭 방식이며, 비밀 키가 약하면 무차별 대입이 가능함 |
alg: RS256 또는 ES256 | 경고 없음 |
페이로드
모든 클레임을 값과 추론된 유형과 함께 표시합니다. 디코딩되는 표준 클레임은 다음과 같습니다.
| 클레임 | 의미 |
|---|---|
iss | 발급자 |
sub | 주체(일반적으로 사용자 ID) |
aud | 수신 대상 |
exp | 만료 시각 |
nbf | 사용 가능 시작 시각 |
iat | 발급 시각 |
jti | JWT ID(고유 토큰 식별자) |
사용자 정의 클레임은 표준 클레임 아래에 표시됩니다.
만료 확인
토큰에 exp 클레임이 있으면 도구가 현재 시각과 비교하여 다음 중 하나를 표시합니다.
- 유효함: 토큰이 아직 만료되지 않았습니다.
- 만료됨: 토큰의 만료 시각이 지났으며, 경과한 시간도 표시됩니다.
- 만료 없음: 토큰에
exp클레임이 없습니다.
서명
Base64url로 인코딩된 원본 서명을 표시합니다. 키를 제공하지 않으면 도구는 검증을 시도하지 않습니다. 이 영역은 참고용이며 서명이 있는지 확인하기 위한 것입니다.
확인할 사항
- 일부 라이브러리는
alg: none토큰을 검증 없이 받아들입니다. 대상 애플리케이션이 이를 허용하는지 테스트합니다. - 수명이 긴 토큰(
iat에서 수일 또는 수년 뒤의exp)은 애플리케이션이 토큰을 교체하지 않음을 시사합니다. - 암호화되지 않은 페이로드 클레임에 저장된 민감한 데이터(PII, 내부 ID, 역할 플래그)는 토큰을 가진 누구나 읽을 수 있습니다.
jti가 없는 토큰은 개별적으로 폐기할 수 없습니다.