Json Web Token의 약자로 말 그대로 인증의 필요한 정보들을 Json형태로 암호화한 토큰이다.
JWT의 구조는 Header.Payload.Signature 의 구조로 되어 있는데
Header : JWT에서 사용할 토큰 타입과 해시 알고리즘 방식이 들어있다.
Payload : 서버에서 응답할 값이 들어있다. key-value 형식으로 되어 있다.
Signature : 토큰의 변조를 확인하는 부분. Header와 Payload, Secret의 값을 Header에 있는 해시 알고리즘으로 해싱하여 만들어진 값이다.
장점 :
1. 데이터의 위변조를 방지한다.
2. 데이터 검증에 필요한 정보를 갖고 있어 인증을 위한 별도 저장소가 필요가 없다.
3. 서버가 StateLess 상태가 된다.
StateLess(무상태) 서버가 세션을 관리하지 않아 클라이언트로 오는 요청만 받아 응답하면 된다.
단점 :
1. 토큰의 길이가 길어 인증 요청이 많아질 수록 네트워크에 부하가 온다.
2. Payload 자체는 암호화가 되지 않아 중요한 정보는 담을 수 없다.
3. 토큰을 탈취당하면 대체가 어렵다.