JWT 구조

KJH·2023년 7월 30일

이전글

구조

.으로 구분된 세 부분

  • Header
  • Payload (정보)
  • Signature (서명)

서명 알고리즘, 토큰 유형
ex)

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

Base64Url로 인코딩됨

Payload

클래임 (정보의 단위)

종류
  • 등록된 클레임 (Registered Claims) : 이미 정해저 있는, JWT에 공통적으로 포함되는 클레임 필수❌
  • 공개 클레임 (Public Claims) : 사용저 정의 클레임
  • 비공개 클레임 (Private Claims) : 등록되지 않음, 두 개체가 합의해서 사용
{
  "sub": "1234567890",
  "name": "John Doe",
  "admin": true
}

해더와 같이 Base64Url로 인코딩됨

서명

  1. 헤더와 페이로드를 Base64Url로 인코딩
  2. 인코딩된 헤더와 페이로드를 연결하고, 이를 비밀키 또는 개인키와 함께 해시 알고리즘을 사용
  3. 이 암호화된 값을 다시 Base64Url로 인코딩하여 서명 생성

ex

HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  secret)

JWT는 암호화가 아니라 서명에 목적이 있다.
BASE64로 인코딩하기 때문에, 토큰을 가지고 있다면 누구나 쉽게 읽을 수 있다.
따라서 민감한 정보는 ❌❌

참고 사이트

1개의 댓글

comment-user-thumbnail
2023년 7월 30일

좋은 글 감사합니다.

답글 달기