Json Web Token

사용자가 로그인하게 되면 이제 request에 JWT가 포함됩니다. 위 토큰으로 허용된 경로, 서비스 및 리소스에 액세스 합니다.

Json의 웹 토큰 구조: xxxxx.yyyyy.zzzzz 처럼 Header, Payload, Signature의 부분을 .로 구분짓습니다

Header은 토큰의 유형과 사용 중인 signing 알고리즘을 넣습니다.

Payload

토큰의 두 번째 부분이며 Claims이 소속됩니다 Claim은 추가 데이터와 entity(일반적으로 사용자)에 대한걸 포함합니다. 3개의 타입이 있는데 registered, public, private claims가 있습니다.

Registered claims: 필수는 아니지만 유용하기에 사전에 설정해두기를 권장합니다.

iss(발행자), exp(만료 시간), sub(주제) 그리고 aud(대상) 등이 들어 갈 수 있습니다.

Public claims: JWT를 사용하는 사람들이 원하는 대로 정의 할 수 있습니다. 그러나 충돌을 방지하려면 충돌방지 네임스페이스가 포함된 URI로 정의해야합니다

example

{
  "sub": "1234567890",
  "name": "John Doe",
  "admin": true
}

그 뒤 Base64Url로 인코딩 됩니다

:변조로부터 보호되지만 누구나 읽을 수 있습니다. 암호화 하지 않는 한 JWT payload, header에 비밀 정보를 넣지 마세요

Signature

signature을 만들려면 인코딩 된 header, payload, sercret, algorithm을 가져와서 서명 해야 합니다.