JSON Web Token의 약자, 웹표준 RFC 7519에 정의되어 있다
서버와 클라이언트 사이의 통신에서 인증 여부를 판단하고
클라이언트의 권한을 파악하기 위해 사용하는 액세스 토큰의 한 구현체
Claim(사용자의 속성 정보)를 JSON형태로 갖는 Claim기반의 Web token이다
회원 인증 : 로그인 시 토큰을 발급하고 이 후 요청 시 토큰을 포함하여
HTTP request함으로서 유저가 요청한 작업에 권한이 있는지 확인
정보 교류 : 토큰 생성자의 signature를 포함하므로 양자간 데이터 교환에
있어서 무결성을 검증할 수 있다
\n
등의 개행 문자가 존재하므로 BASE64인코딩을 통해JWT는 Header, Payload, Signature 세 부분으로 나뉘며
Header와 Payload의 경우 BASE64 Encoding, Signature의 경우
Header에서 지정한 알고리즘으로 생성된 HMAC을 BASE64 Encoding한다
{
"alg": "HS256",
"typ": "JWT"
}
Payload 부분에는 토큰에 담을 정보가 위치한다
각 정보는 Claim이라고 부르며 key:value 쌍으로 존재한다
Claim은 크게 세 분류로 나뉜다
ex) "https://velog.io/jwt_claims/is_admin"
{
"iss": "velopert.com", // registered claim
"exp": "148527000000", // registered claim
"https://velog.io/jwt_claims/is_admin": true, // public claim
"userId": "11028373727102", // private claim
"username": "velopert" // private claim
}
Signature 부분에는 {Header(Base64).Payload(Base64)} 형태를
Header의 alg에 명시된 해시 알고리즘으로 해시한 HMAC을 BASE64로 인코딩한 값