JWT는 JSON WeB Token 의 약자입니다 .
JWT는 정보를 JSON 객체 형태로 주고 받기 위한 표준규약에 따라 생성한
토큰 입니다 .
JWT 토큰 구성
JWT는 세 파트로 나누어지며 , 각 파트는 점으로 구분 합니다 .
header(aaaaaa).payload.(bbbbbbb).signature(cccccccc)
Ex) aaaaaa.bbbbbb.ccccccc 요롷케 표현을 합니다 .
이렇게 header payload signature로 나뉜다 .
{ "alg": "HS256", "typ": "JWT" }
Payload
JWT의 내용이다 . 페이로드에있는 속성들은 클레임셋 이라고 부른다 .
클레임셋은 JWT에 대한 내용 (토큰 생성자의 정보,생성일시등)의 값을 나타낸다
Signature
점(.)을 구분자로 해서 헤더와 페이로드를 합친 문자열을 서명한 값이다.
서명은 헤더의 alg 에 정의한 알고리즘과 시크릿키를 이용해 생성하고
Base64 URL-Safe (?) 로 인코딩한다.
, 헤더와 페이로드는 암호화 한 것이 아니라 JSON문자열을 base64로 인코딩 한것입니다 그러므로 누구나 디코딩한다면 헤더와 페이로드를 볼수있으므로
누군가 JWT를 탈취하여 수정한후 서버에 보낼수있으므로 이부분을 검증하는 부분입니다 .
참고 -
https://covenant.tistory.com/201
https://meetup.toast.com/posts/239
https://mangkyu.tistory.com/56
http://www.opennaru.com/opennaru-blog/jwt-json-web-token/