JWT는 말 그대로 JSON기반의 Web 토큰인데 발급된 토큰을 JSON객체로 변환시켜서 클라이언트에게 보내주는 것입니다.

이미지 출처: https://covenant.tistory.com/201
JWT의 구조는 이미지의 안의 색깔을 보면 '.' 으로 구분되는것을 볼 수 있다.
- 헤더(Header) : 토큰의 타입과 해시 암호화 알고리즘 정보가 있다. alg는 해싱 알고리즘을 지정하는 것이고 이 알고리즘은 토큰을 검증할 때 사용되는 서명(signature)부분에서 사용된다.
- 내용(Payload) : 토큰의 정보가 있는 부분이며 Claim이라고 부르기도 한다. Claim은 키-값으로 이루어져 있으며 등록된 Claim, 공개 Claim, 비공개 Claim으로 구분된다.
- 등록된 클레임
ss : 토큰 발급자
sub : 토큰 제목
aud : 토큰 대상자
exp : 토큰 만료 시간
nbf : 토큰 활성 날짜
iat : 토큰이 발급된 시간
jti : JWT 토큰 식별자- 공개 클레임
공개용 정보 전달을 위해 사용되며 충돌방지를 위해 URI형식을 사용한다.- 비공개 클레임
서버와 클라이언트가 합의하에 정의된 사용자 정의 클레임이다.
이름이 중복되어서 충돌 가능성이 있으니 조심해야한다.
- 서명(Signature) : 헤더와 페이로드는 암호화 된것이 아니기 때문에 누구든 디코딩을 한다면 헤더와 페이로드의 내용을 볼 수 있기 때문에 다른 사람이 위변조 했는지 검사하는 부분이다.
참고한 사이트 : https://covenant.tistory.com/201
https://thalals.tistory.com/352
https://mangbaam.github.io/cs/2022/05/11/jwt.html