JWT 디코더
JSON 웹 토큰(JWT)을 디코딩하여 헤더, 페이로드, 서명을 확인합니다. 인증 및 권한 부여에 사용되는 JWT 토큰을 디버깅하고 검사하는 데 유용합니다. JWT의 내용은 어디에도 저장되지 않습니다.
페이로드 (클레임):
헤더 (서명 알고리즘 및 토큰 유형):
서명:
서명은 Base64URL 인코딩된 데이터로 표시됩니다. 이 도구에서는 서명 검증을 수행하지 않습니다.
JSON 웹 토큰에 대해 더 알아보기
JWT 형식
JSON 웹 토큰(JWT)은 두 당사자 간에 전달될 클레임을 나타내는 간결하고 URL에 안전한 수단입니다. 점으로 구분된 세 개의 Base64URL 인코딩 부분으로 구성됩니다: header.payload.signature. 헤더는 일반적으로 토큰 유형(JWT)과 서명 알고리즘을 포함합니다. 페이로드는 엔터티(일반적으로 사용자)에 대한 설명과 추가 메타데이터인 클레임을 포함합니다. 서명은 메시지가 중간에 변경되지 않았는지 확인하는 데 사용됩니다.
JOSE (JSON 객체 서명 및 암호화)
JWT는 JSON 기반 데이터를 보호하기 위한 표준화된 방법을 제공하는 더 큰 JOSE(JSON 객체 서명 및 암호화) 프레임워크의 일부입니다. JOSE에는 여러 관련 사양이 포함됩니다: 서명된 토큰을 위한 JWS(JSON 웹 서명), 암호화된 토큰을 위한 JWE(JSON 웹 암호화), 암호화 키를 나타내기 위한 JWK(JSON 웹 키), 암호화 알고리즘을 지정하기 위한 JWA(JSON 웹 알고리즘).
JSON 웹 서명 (JWS)
대부분의 JWT는 JWS 토큰입니다 - 서명되었지만 암호화되지 않았습니다. 이는 누구나 Base64URL 디코딩으로 페이로드를 읽을 수 있지만, 서명을 무효화하지 않고는 수정할 수 없다는 것을 의미합니다. JWS는 무결성과 진정성을 제공합니다: 토큰이 신뢰할 수 있는 당사자에 의해 발급되었고 변조되지 않았음을 확인할 수 있습니다.
서명 알고리즘
JWS는 토큰 서명을 위한 다양한 암호화 알고리즘을 지원합니다. 이는 두 가지 범주로 나뉩니다: 대칭 알고리즘(서명과 검증에 같은 키 사용)과 비대칭 알고리즘(서명에 개인 키, 검증에 공개 키 사용).
HMAC 알고리즘 (대칭)
HS256, HS384, HS512는 각각 SHA-256, SHA-384, SHA-512와 함께 HMAC(해시 기반 메시지 인증 코드)을 사용합니다. 이들은 대칭 알고리즘으로, 동일한 비밀 키가 토큰을 서명하고 검증하는 데 모두 사용됩니다. HMAC 알고리즘은 빠르고 간단하지만, 양쪽 모두 동일한 비밀을 필요로 하므로 안전한 키 배포가 필요합니다.
RSA 알고리즘 (비대칭)
RS256, RS384, RS512는 SHA-256, SHA-384, SHA-512와 함께 RSASSA-PKCS1-v1_5를 사용합니다. PS256, PS384, PS512는 RSASSA-PSS(확률적 서명 방식)를 사용합니다. RSA 알고리즘은 개인 키로 서명하고 공개 키로 검증합니다. 이를 통해 보안을 손상시키지 않고 검증 키를 공개적으로 공유할 수 있으며, 여러 서비스가 토큰을 검증해야 하는 분산 시스템에 이상적입니다.
타원 곡선 알고리즘 (비대칭)
ES256, ES384, ES512는 각각 P-256, P-384, P-521 곡선과 함께 ECDSA(타원 곡선 디지털 서명 알고리즘)를 사용합니다. EC 알고리즘은 RSA와 동일한 보안을 제공하면서도 더 작은 키 크기를 사용하여 더 작은 서명과 더 빠른 연산을 가능하게 합니다. ES256은 효율성으로 인해 현대 애플리케이션에서 점점 더 인기를 얻고 있습니다.
JSON 웹 암호화 (JWE)
JWS가 서명된 토큰을 제공하는 반면, JWE는 페이로드가 기밀인 암호화된 토큰을 제공합니다. JWE 토큰은 세 부분 대신 다섯 부분을 가집니다: 헤더, 암호화된 키, 초기화 벡터, 암호문, 인증 태그. JWE는 AES-GCM 및 AES-CBC with HMAC을 포함한 다양한 암호화 알고리즘을 지원합니다. 이 디코더는 JWS 토큰만 처리하며, JWE 토큰은 적절한 키로 복호화해야 합니다.
RFC 사양
JWT 및 JOSE 표준은 여러 IETF RFC에서 정의됩니다: