이 글은 JWT 공식문서를 참고하여 작성된 글입니다.
JWT는 JSON Web Token의 준말입니다.
JSON이 무엇인지는 이 글에서 확인할 수 있습니다.
공식 문서에는 JWT를 다음과 같이 정의합니다.
JSON Web Token (JWT) is an open standard (RFC 7519) that defines a compact and self-contained way for securely transmitting information between parties as a JSON object.
위 정의를 번역, 요약하면 다음과 같습니다.
dots(.)으로 구분된 세 부분으로 구성
일반적으로 다음과 같은 구조
xxxxx.yyyyy.zzzzz
세 부분을 하나씩 살펴봅시다.
서명 알고리즘(HMAC SHA256, RSA)과 토큰의 타입으로 구성됩니다.
예시는 다음과 같습니다.
{
"alg": "HS256",
"typ": "JWT"
}
Header는 Base64Url로 인코딩됩니다.
Payload는 클레임을 포함하는 부분입니다. 클레임은 엔티티(일반적으로 사용자) 및 추가 데이터에 대한 statement입니다.
클레임에는 3가지 유형이 있습니다.
예시는 다음과 같습니다.
{
"sub": "1234567890",
"name": "John Doe",
"admin": true
}
Payload는 Base64Url로 인코딩됩니다.
Signature 부분은 인코딩된 Header, 인코딩된 Payload, secret, Header에 지정된 알고리즘을 서명하여 구성합니다.
HMAC SHA256 알고리즘이 지정된 경우의 예시는 다음과 같습니다.
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret)
이번 글에서는 JWT가 무엇인지, 어떤 구조를 가지고 있는지 알아봤습니다. 다음 글에서는 JWT의 작동 방식에 대해 알아보겠습니다.