JWT Token Decoder & Encoder
JWT(JSON Web Token)를 실시간으로 디코드하고 인코드하세요. 토큰의 구조를 분석하고 보안성을 확인할 수 있습니다.
JWT 디코더
JWT 토큰을 입력하여 헤더와 페이로드를 확인하세요.
헤더 (Header)
페이로드 (Payload)
서명 (Signature)
서명 검증을 위해서는 비밀키가 필요합니다.
토큰 분석
알고리즘:
-
타입:
-
발급자 (iss):
-
대상 (aud):
-
발급시간 (iat):
-
만료시간 (exp):
-
상태:
-
JWT 인코더
헤더와 페이로드를 입력하여 새로운 JWT 토큰을 생성하세요.
HS256 알고리즘을 사용할 경우 비밀키가 필요합니다. 테스트용으로는 간단한 문자열을 사용하세요.
생성된 JWT 토큰
JWT 완전 가이드
JWT의 구조와 보안에 대해 자세히 알아보세요.
JWT 구조
JWT는 점(.)으로 구분된 세 부분으로 구성됩니다:
1. 헤더 (Header)
토큰의 타입과 사용된 해시 알고리즘을 명시합니다.
{ "alg": "HS256", "typ": "JWT" }
2. 페이로드 (Payload)
클레임(claim)이라 불리는 엔티티에 대한 설명을 포함합니다.
{ "sub": "1234567890", "name": "John Doe", "iat": 1516239022, "exp": 1516325422 }
3. 서명 (Signature)
토큰이 변조되지 않았음을 확인하는 데 사용됩니다.
HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret )
JWT 보안 고려사항
비밀키 보안
HS256 알고리즘 사용 시 비밀키는 절대 노출되어서는 안 됩니다. 충분히 복잡하고 긴 비밀키를 사용하세요.
토큰 만료 시간
짧은 만료 시간을 설정하여 토큰이 도용되었을 때의 위험을 최소화하세요.
민감한 정보 제외
JWT는 Base64로 인코딩되어 있을 뿐 암호화되지 않습니다. 민감한 정보는 포함하지 마세요.
HTTPS 사용
JWT는 항상 HTTPS를 통해 전송되어야 합니다.
JWT 클레임 (Claims)
표준 클레임 (Registered Claims)
iss (Issuer): 토큰 발급자
sub (Subject): 토큰 주제 (사용자 ID 등)
aud (Audience): 토큰 대상자
exp (Expiration Time): 만료 시간
iat (Issued At): 발급 시간
nbf (Not Before): 유효 시작 시간
jti (JWT ID): JWT 고유 식별자
공개 클레임 (Public Claims)
충돌을 방지하기 위해 IANA JWT Registry에 정의되거나 네임스페이스를 포함한 URI로 정의됩니다.
비공개 클레임 (Private Claims)
당사자들 간에 정보를 공유하기 위해 만들어진 사용자 정의 클레임입니다.
서명 알고리즘
HMAC (대칭키)
- HS256: HMAC using SHA-256
- HS384: HMAC using SHA-384
- HS512: HMAC using SHA-512
같은 비밀키로 서명하고 검증합니다.
RSA (비대칭키)
- RS256: RSASSA-PKCS1-v1_5 using SHA-256
- RS384: RSASSA-PKCS1-v1_5 using SHA-384
- RS512: RSASSA-PKCS1-v1_5 using SHA-512
개인키로 서명하고 공개키로 검증합니다.
ECDSA (타원곡선)
- ES256: ECDSA using P-256 and SHA-256
- ES384: ECDSA using P-384 and SHA-384
- ES512: ECDSA using P-521 and SHA-512
RSA보다 더 효율적인 비대칭키 알고리즘입니다.
JWT 모범 사례
토큰 저장
- 브라우저에서는 httpOnly 쿠키에 저장
- localStorage나 sessionStorage 사용 시 XSS 공격 위험
- 모바일 앱에서는 안전한 저장소 사용
토큰 갱신
- 리프레시 토큰 패턴 사용
- 액세스 토큰은 짧은 수명 (15분 이내)
- 리프레시 토큰은 긴 수명 (수일~수주)
토큰 무효화
- 로그아웃 시 토큰 블랙리스트 추가
- 의심스러운 활동 감지 시 토큰 무효화
- 정기적인 토큰 순환
디버깅과 모니터링
- 토큰 만료 시간 추적
- 비정상적인 토큰 사용 패턴 모니터링
- 로그에 토큰 내용 기록 금지