JWT (JSON Web Token) 개요

이건우·2025년 3월 8일

웹 프로그래밍

목록 보기
16/43

JWT의 구조

JWT는 3가지 부분으로 구성되며, 각 부분은 .(점)으로 구분되며,
각 부분은 Base64 URL로 인코딩되며,
Signature 부분은 특정서명 알고리즘을 사용하여 생성됩니다.

xxxxx.yyyyy.zzzzz
부분설명
Header (헤더)JWT의 타입과 서명(Signature) 알고리즘을 정의
Payload (페이로드)토큰에 포함된 사용자 정보(클레임) 저장
Signature (서명)데이터 변조 방지를 위한 전자 서명

JWT 각 구성 요소


1) Header (헤더)

JWT의 발급 정보를 담고 있는 부분

{
  "alg": "HS256",
  "typ": "JWT"
}

alg (Algorithm): 서명에 사용할 해싱 알고리즘 (예: HS256, RS256)
typ (Type): 토큰의 타입 (항상 "JWT")


2) Payload (페이로드)

필요한 정보를 담고 있는 부분

{
"sub": "user123",
"name": "홍길동",
"iat": 1710000000,
"exp": 1710600000,
"role": "admin"
}

주요 클레임 (Claim)

클레임(Claim)은 JWT 내부에 포함되는 정보이며,
일반적으로 다음과 세 가지 유형이 있습니다.

등록된 클레임 (Registered Claims)

iss (Issuer) : 토큰 발급자
sub (Subject) : 토큰 대상 (사용자 ID 등)
aud (Audience) : 토큰 대상 시스템
exp (Expiration) : 토큰 만료 시간 (Unix Timestamp)
iat (Issued At) : 토큰 발급 시간
nbf (Not Before) : 특정 시간 전까지는 유효하지 않음


공개 클레임 (Public Claims)
조직 내에서 정의한 클레임 role, email, username 등

비공개 클레임 (Private Claims)
특정 애플리케이션에서만 사용하는 클레임 order_id, customer_id 등


3) Signature (서명)

데이터 무결성을 보장하는 서명(Signature)부분.

header와 payload를 Base64 URL 인코딩하여 결합한 후 비밀 키(secret key)를 이용해 HMAC, RSA, 또는 ECDSA 방식으로 서명 생성
이 서명으로 데이터 변조가 감지 가능하며,
인증 서버가 발급한 JWT인지 검증 가능

JWT는 일반적으로 로그인시에 발급되며, 이후 요청마다 포함되어
사용자를 인증하는 역할을 합니다.

profile
새싹개발자

0개의 댓글