JWT는 JSON Web Token의 약자로 인증에 필요한 정보들을 Token에 담은 JSON입니다.
이 정보는 디지털 서명이 되어 있어서 검증 및 신뢰할 수 있으며 변조를 체크할 수 있습니다.
JWT는 세 부분으로 구성되어 있으며 JSON 형태로 저장된 각 부분은 Base64Url로 인코딩되어 있습니다.
헤더는 토큰의 타입과 사용된 알고리즘을 포함합니다.
typ : 토큰의 타입 지정
alg : 알고리즘 방식을 지정
페이로드는 클레임(claim)이라고 부르며 토큰에서 사용할 정보들을 저장하고 있습니다.
클레임은 크게 세 가지 유형으로 나뉩니다.
1. Registered
2. public
임의로 정의될 수 있는 이름을 가진 클레임으로 사용자 정의 클레임입니다.
충돌을 방지하기 위해 JSON Web Token Registry를 통해 정의하거나 충돌이 없음을 보장하는 네임 스페이스를 포함해야 합니다.
3. private
서버와 클라이언트 간에 합의하여 사용되는 이름입니다.
서명 부분은 헤더와 페이로드를 암호화하는데 사용합니다. 각각을 Base64Url로 인코딩하고 그 값을 비밀 키를 사용해 지정된 알고리즘으로 해싱하고 이 값을 다시 Base64Url로 인코딩하여 생성합니다.