JWT 토큰의 구성(헤더, 페이로드, 시그니처)

도준혁·2022년 4월 27일
0

JWT 토큰의 구성요소

지난 포스트에 JWT 토큰이 무엇이며 어떤 방식으로 발행하는지 코드레벨에서 살펴보았다. 오늘은 조금 이론적으로 접근하여 JWT 토큰이 어떻게 생긴 것인지 이해한 바를 포스팅하려 한다.

JWT 토큰은 헤더, 페이로드, 시그니처. 을 구분으로 하여 총 3개의 뭉치로 이루어진 구조이다.

header.payload.signature

JWT Header

Header 에는 어떤 토큰인지를 명시하는 typ 과 암호화 알고리즘 방식인 alg 로 이루어져 있다. 여러가지 알고리즘 방식을 지원하며 이것은 서명을 생성해내는 알고리즘을 말한다.

JWT Payload

Payload 에는 토큰의 사용자를 식별할 최소한의 유저 정보가 들어간다. 여기까지 headerpayload 를 생성한 다음에는 이 두 가지 정보를 base 64 url 방식으로 인코딩 한 다음 JWT 토큰에 담게된다.

JWT Signature

Signature 에서는 앞의 두 인코딩 된 정보와 . 을 포함하여 header 에서 지정한 알고리즘 방식과 secret key 를 추가하여 해싱을 한다.

즉, 공식 가이드에 나와있는 그대로

'base64UrlEncode(header) + "." + base64UrlEncode(payload)'

secret key 를 첨가하여 지정했던 alg 방식으로 해싱하여 Signature 를 발행하게 된다.

3줄 요약

  1. JWT 는 헤더, 페이로드, 시그니처로 이루어짐
  2. 헤더, 페이로드는 base 64 방식으로 인코딩(디코딩이 매우 쉬움)
  3. 시그니처 부분에서 헤더에 지정한 방식으로 "인코딩 된 " 헤더와 페이로드를 해싱
profile
ML Ops 와 백엔드를 개발하고 있는 도준혁입니다

0개의 댓글