JWT란 Json Web Token의 약자로, 모바일이나 웹의 사용자인증을 위해 사용하는 암호화된 토큰을 의미한다. JWT정보를 request에 담아 사용자의 정보를 열람, 수정 하는 등의 작업을 수행할 수 있다.
기존의 서버 기반 인증 시스템에서는 서버측에서 유저들의 정보를 세션에 기억하고 있어야 했기에, 세션을 유지하기 위해 메모리/디스크/데이터베이스 시스템에 이를 담아두고 있어야했다.
하지만 토큰 기반 시스템의 경우 Client가 해당 토큰 정보를 보관하며, 유저의 인증정보를 서버나 세션에 담아두지 않고 사용한다. 따라서 서버에 담아둠으로써 발생하는 많은 문제점들을 해소할 수 있다.
무상태(stateless), 확장성
보안성
불필요한 인증 과정의 감소
HTTPS사용의 강제성
claim이 많아질수록 JWT토큰이 길어진다. 매 호출때마다 토큰 데이터를 서버에 전달하는데, 길이가 길어질수록 네트워크 대역폭 낭비가 심해질 수 있다.
JWT는 기본적으로 Payload에 대한 정보를 암호화 하고 base64엔코딩만 하기 때문에 중간에 패킷을 가로채거나 토큰을 취득하게 되면, 디코딩을 통해 데이터를 볼 수 있다. 따라서 JWE를 통해 암호화 하거나 중요한 데이터를 payload에 넣지 말아야한다.
https://etloveguitar.tistory.com/101
https://tech.toktokhan.dev/