입력은 이 브라우저에서 처리됩니다.
사용 예제 코드
개발에 가져다 쓸 수 있는 기본 예제입니다. 표시된 환경에서 실행하세요.
Node.js 22+ · ES module (.mjs)
현재 입력 반영은 코드에 사용된 항목에만 적용됩니다. 파일 입력은 예제에 포함하지 않습니다.
필요한 패키지 설치
npm install jose
import { SignJWT, decodeJwt, jwtVerify } from "jose";
const algorithm = "HS256";
// Test key only. Load your real key from a secret store.
const key = new TextEncoder().encode("demo-key-".padEnd(64, "x"));
const expiryMinutes = Number("30");
const token = await new SignJWT({ sub: "user-123" })
.setProtectedHeader({ alg: algorithm })
.setIssuedAt()
.setExpirationTime(Math.floor(Date.now() / 1000) + expiryMinutes * 60)
.sign(key);
console.log(token);
console.log(decodeJwt(token)); // Decoding does not verify trust.
const verified = await jwtVerify(token, key, { algorithms: [algorithm] });
console.log(verified.payload); // Signature and exp/nbf checked.
// Set issuer and audience options when your service requires them.
이렇게 사용하세요
테스트 서버의 JWT에서 exp를 확인한 뒤, 공유 비밀키로 서명을 검증합니다.
알아두면 좋은 점
형식과 의미
디코딩은 인증이 아닙니다. 누구나 헤더와 페이로드를 읽을 수 있습니다.
올바른 사용
HS256·HS384·HS512는 UTF-8 공유 비밀키를 사용합니다. 각각 32·48·64바이트 이상을 권장합니다.
자주 놓치는 부분
서명, exp 만료, nbf 시작 시각을 따로 표시합니다. 발급자·대상 검증은 이 도구의 범위가 아닙니다.
지원 범위와 제한
토큰·JSON 100KB, HMAC 계열 알고리즘만 지원
입력이 제한을 넘으면 데이터를 나누어 처리하세요. 파일 형식이나 알고리즘이 지원 범위에 없으면 다른 형식으로 임의 변환하지 말고 요구 사항에 맞는 도구를 선택하세요.