0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
설정
HS256, HS384, HS512, RS256 및 RS512 알고리즘을 사용하여 JSON 웹 토큰(JWT)을 생성 및 디코딩합니다. 생성, JSON 페이로드와 비밀 키를 입력하여 토큰을 생성하세요. 읽기, 기존 토큰을 붙여 헤더, 페이로드를 확인하고 서명을 검사하세요.

HMAC con SHA-256. 공유 대칭 키. 일반 사용을 위해 권장됩니다.

비밀 키
엔트리다

작동 방식

JSON 웹 토큰(JWT)은 두 당사자 사이에서 정보(클레임)를 전달하는 간결한 서명 토큰입니다. 점으로 구분된 세 부분(헤더, 페이로드, 서명)으로 이루어지며, 각 부분은 Base64URL로 인코딩됩니다.

생성 모드에서는 헤더와 페이로드를 JSON으로 정의하고 비밀 키(HMAC)나 개인 키(RSA/ECDSA)로 서명합니다. 읽기 모드에서는 기존 토큰을 붙여넣어 내용을 확인하고 서명을 검증합니다.

페이로드는 암호화되지 않습니다. 누구나 Base64URL을 디코딩해 읽을 수 있습니다. 서명은 토큰이 변경되지 않았음을 보장할 뿐 내용을 숨기지 않습니다. JWT에 민감한 데이터를 넣지 마세요.

예시

header{"alg":"HS256","typ":"JWT"} → eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
payload{"sub":"1234567890","name":"John Doe","iat":1516239022} → eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ
tokeneyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c서명(세 번째 부분)은 알고리즘과 키에 따라 달라집니다. 이 예시는 키 "your-256-bit-secret"과 함께 HS256을 사용합니다.

활용 사례

  • API에서 사용자를 인증하기: 서버가 서명된 토큰을 발급하고 세션을 저장하지 않고 요청마다 검증합니다.
  • 인증 토큰을 검사하고 디버깅하여 클레임(sub, exp, 역할)과 날짜를 확인하기.
  • 토큰의 서명을 비밀 키나 공개 키로 검증하여 변조되지 않았음을 확인하기.
  • 인증 흐름을 개발할 때 다양한 알고리즘(HMAC, RSA, ECDSA)으로 테스트 토큰을 생성하기.

자주 묻는 질문

JWT의 내용은 암호화되나요?

아니요. 헤더와 페이로드는 Base64URL로 인코딩되어 있을 뿐이며 누구나 디코딩할 수 있습니다. 서명은 기밀성이 아니라 무결성(변경되지 않았음)을 보장합니다.

HS256과 RS256의 차이는 무엇인가요?

HS256은 서명과 검증에 하나의 공유 비밀 키를 사용합니다(HMAC). RS256은 비대칭으로, 개인 키로 서명하고 공개 키로 검증합니다. 여러 서비스가 발급 권한 없이 검증만 해야 할 때 이상적입니다.

iat, exp, nbf 클레임은 무엇을 의미하나요?

표준 타임스탬프입니다: iat(발급 시각), exp(만료 시각), nbf(이 시각 이전에는 무효). 1970년 이후의 초(유닉스 에포크)로 표현됩니다.

"none" 알고리즘이 권장되지 않는 이유는 무엇인가요?

서명 없는 토큰을 생성하기 때문입니다. 누구나 페이로드를 수정해도 여전히 수락됩니다. 테스트용으로만 유용하며 프로덕션에서는 절대 사용하지 마세요.

내 토큰이 서버로 전송되나요?

아니요. 생성, 디코딩, 검증은 모두 브라우저에서 이루어지며, 토큰과 키는 기기를 벗어나지 않습니다.