JWT 토큰의 구성요소
지난 포스트에 JWT 토큰이 무엇이며 어떤 방식으로 발행하는지 코드레벨에서 살펴보았다. 오늘은 조금 이론적으로 접근하여 JWT 토큰이 어떻게 생긴 것인지 이해한 바를 포스팅하려 한다.
JWT 토큰은 헤더
, 페이로드
, 시그니처
가 .
을 구분으로 하여 총 3개의 뭉치로 이루어진 구조이다.
header.payload.signature
JWT Header
Header
에는 어떤 토큰인지를 명시하는 typ
과 암호화 알고리즘 방식인 alg
로 이루어져 있다. 여러가지 알고리즘 방식을 지원하며 이것은 서명을 생성해내는 알고리즘을 말한다.
JWT Payload
Payload
에는 토큰의 사용자를 식별할 최소한의 유저 정보가 들어간다. 여기까지 header
와 payload
를 생성한 다음에는 이 두 가지 정보를 base 64 url
방식으로 인코딩 한 다음 JWT 토큰에 담게된다.
JWT Signature
Signature
에서는 앞의 두 인코딩 된 정보와 .
을 포함하여 header
에서 지정한 알고리즘 방식과 secret key
를 추가하여 해싱을 한다.
즉, 공식 가이드에 나와있는 그대로
'base64UrlEncode(header) + "." + base64UrlEncode(payload)'
를 secret key
를 첨가하여 지정했던 alg
방식으로 해싱하여 Signature
를 발행하게 된다.
3줄 요약