Json Web Token - 두 개체에서 JSON 객체를 사용하여 가볍고 self-contained 방식으로 정보를 안정성 있게 전달
self - contained : jwt는 필요한 모든 정보를 자체적으로 지니고있디다. 시스템에서 발급된 토큰은 토큰에 대한 기본 정보, 전달 할 정보, 토큰이 검증됐다는 것을 증명해주는 signature포함
서버의 경우 HTTP의 헤더에 넣어서 전달 할 수도 있고, URL 의 파라미터로 전달 할 수도 있다.
사용하는 상황
<헤더>
두 가지의 정보를 지님
typ : 토큰의 타입 지정 / alg : 해싱 알고리즘 지정 보통 HMAC SHA256 OR RSA사용 → 토큰을 검증할 때 사용되는 signature부분에서 사용
{
"typ": "JWT",
"alg": "HS256"
}
<내용(payload)>
토큰에 담을 정보가 들어있음. 정보의 한 '조각'을 클레임(claim)이라고 부름 이는 name / value 한 쌍으로 이루어짐. 여러개의 클레임을 넣을 수 있음
1) 등록된 (registered) 클레임
2) 공개 (public) 클레임
3) 비공개 (private) 클레임
<서명(signature)>
헤더의 인코딩 값과, 정보의 인코딩값을 합친 후 주어진 비밀키로 해쉬를 하여 생성
수도코드
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret)
이렇게 만든 해쉬를 base64형태로 나타내면 됨
<참조링크>