현대 무상태(stateless) 마이크로서비스 및 OAuth 2.0 / OpenID Connect 아키텍처에서 JSON Web Token (JWT)은 클라이언트와 서버 간에 사용자 신원 정보를 안전하게 전달하는 표준 규격(RFC 7519)입니다.
1. 3단계 토큰 내부 구조
JWT 문자열은 마침표(.)로 구분된 3개의 Base64URL 인코딩 블록으로 이루어져 있습니다:
1. 헤더 (빨강)서명 알고리즘 & 토큰 유형
2. 페이로드 (보라)클레임 & 사용자 데이터
3. 전자서명 (파랑)위변조 방지 암호학적 서명
2. 표준 등록 클레임 (iss, exp, sub, iat)
iss(Issuer / 발급자): 토큰을 생성하고 발급한 기관 식별자.sub(Subject / 주체): 인증된 사용자 또는 주체의 고유 식별자.exp(Expiration Time / 만료시각): 토큰이 만료되는 유닉스 타임스탬프.iat(Issued At / 발급시각): 토큰이 발급된 시점의 타임스탬프.
3. 대칭키(HS256) vs 비대칭키(RS256) 전자서명
HS256 (HMAC-SHA256)은 발급자와 수신자가 단일 비밀키를 공유합니다. RS256 (RSA-SHA256)은 개인키로 서명하고 공개키(JWKS)로 검증하여, 서명 권한 유출 위험 없이 서드파티 서비스가 토큰 무결성을 직접 검증할 수 있습니다.
4. 핵심 보안 취약점과 방어 전략
헤더의 "alg": "none" 조작 허용, XSS 공격에 취약한 localStorage 저장, 서명 검증을 생략한 채 페이로드를 신뢰하는 행위 등이 가장 흔한 심각한 보안 결함입니다.