JWT 제네레이터
사용자 정의 헤더, 페이로드, 키로 서명된 JWT를 생성합니다. HS256, RS256, ES256 지원.
JWT란 무엇인가요?
JWT(JSON Web Token, RFC 7519)는 컴팩트한 JSON 객체로 당사자 간 정보를 안전하게 전송하는 오픈 표준입니다. Header.Payload.Signature 세 부분으로 구성되며 점으로 구분됩니다.
JWT의 일반적인 사용 사례는?
JWT는 인증(싱글 사인온), API 권한 부여, 안전한 정보 교환에 널리 사용됩니다. 로그인 후 서버가 JWT를 발급하고, 클라이언트는 후속 요청에서 이 토큰을 포함하여 신원을 증명합니다.
HS256, RS256, ES256 중 어떻게 선택하나요?
HS256은 공유 비밀키를 사용하며 가장 빠르고 단일 서비스에 적합합니다. RS256은 RSA 키 쌍을 사용하며 다중 서비스 아키텍처에 적합합니다. ES256은 타원 곡선 키를 사용하여 짧은 서명으로 강력한 보안을 제공합니다.
JWT 클레임이란 무엇인가요?
클레임은 페이로드의 정보입니다. 등록된 클레임에는 iss(발급자), sub(주제), exp(만료), aud(대상)이 있습니다. 공개 클레임은 IANA에 등록 가능하며, 비공개 클레임은 당사자 간 합의된 커스텀 필드입니다.
JWT를 어떻게 검증하나요?
헤더를 디코딩하여 알고리즘을 확인한 후, 적절한 키(HMAC은 공유 비밀키, RSA/ECDSA는 공개키)로 서명을 검증합니다. exp, iss, aud 클레임도 확인하세요.
브라우저에서 JWT를 생성하는 것이 안전한가요?
네, 이 도구는 Web Crypto API를 사용합니다. 키와 토큰이 브라우저를 떠나지 않으며 서버로 전송되지 않습니다.
인코딩과 서명의 차이점은?
인코딩(Base64)은 데이터를 전송 가능한 형식으로 변환할 뿐이며 누구나 디코딩할 수 있습니다. 서명은 암호학적 해시를 생성하여 토큰이 변조되지 않았음을 증명합니다.
JWT를 암호화할 수 있나요?
네, JWE(JSON Web Encryption)는 페이로드 내용을 암호화합니다. 표준 JWT(JWS)는 무결성만 보장하며, 페이로드는 토큰을 가진 누구나 읽을 수 있습니다.
JWT 보안 모범 사례는?
항상 짧은 만료 시간을 설정하세요. HMAC에 강력하고 랜덤한 비밀키를 사용하세요. RSA/ECDSA 개인키는 안전하게 보관하세요. 페이로드에 민감한 데이터를 넣지 마세요. 운영 환경에서는 HTTPS를 사용하세요.
JWT와 세션 기반 인증의 차이점은?
JWT는 무상태로, 서버가 세션 데이터를 저장하지 않아 마이크로서비스와 크로스 도메인에 적합합니다. 세션은 서버 측 저장이 필요하지만 즉각적인 철회가 가능합니다.
JWT는 로그아웃과 세션 관리에 적합한가요?
JWT는 설계상 무상태이므로 로그아웃에 블랙리스트나 짧은 수명의 토큰과 갱신 토큰 조합 등 추가 메커니즘이 필요합니다. 짧은 수명의 액세스 토큰(예: 15분) 사용을 권장합니다.
갱신 토큰 패턴은 어떻게 작동하나요?
API 호출에 짧은 수명의 액세스 토큰(JWT)을 사용하고, 더 긴 수명의 갱신 토큰으로 새 액세스 토큰을 받습니다. 액세스 토큰이 만료되면 클라이언트는 갱신 토큰을 보내 새 JWT를 받습니다.
"none" 알고리즘이란?
"none" 알고리즘은 JWT가 서명되지 않음을 의미합니다. 테스트 목적으로만 사용하세요. 많은 라이브러리에서 보안을 위해 기본적으로 비활성화되어 있습니다.
JWT에 크기 제한이 있나요?
JWT에는 고정 크기 제한이 없지만 HTTP 헤더로 전송되므로 4KB 이하로 유지해야 합니다. 페이로드는 최소화하여 필요한 클레임만 포함하세요.