기존의 서버 기반으로 인증하는 방법은 서버 측에서 유저들의 정보를 세션에 기억하고, 이 세션을 유지해야 했다. 규모가 커짐에 따라 서버의 부하는 커지게 된다.
사용자가 늘어 서버를 확장하게 되면 세션을 분산시키는 시스템을 설계해야 한다.
인증받은 사용자들에게 토큰을 발급하고, 서버에 요청을 할 때 헤더에 토큰을 함께 보내도록 하여 유효성 검사를 한다.
이러한 시스템에서는 더이상 사용자의 인증 정보를 서버나 세션에 유지하지 않고 클라이언트 측에서 들어오는 요청만으로 작업을 처리한다.
토큰 자체에 유저 정보를 담아서 http 헤더에 전달하기에 세션을 유지할 필요 없음 -> 유저의 수가 많으면 서버 과부하
서버의 확장에 따른 추가적인 작업이 필요없음
JSON 포맷을 이용한 가볍고 안전한 정보 교환을 위한 Claim 기반의 Web Token
서버만 아는 Secret 키로 디지털 서명화
Claim : 사용자 정보나 데이터 속성 등을 의미
header.payload.signature .으로 구분된 3가지 형식
Json 형태인 각 부분은 Base64로 인코딩 되어 표현