토큰 기반 인증 시스템은 클라이언트가 서버에 접속을 하면 서버에서 해당 클라이언트에게 인증되었다는 의미로 토큰을 부여한다. 이 토큰은 유일하며 토큰을 발급받은 클라이언트는 서버에 요청을 보낼 때 요청 헤더에 토큰을 심어 보낸다. 그럼 서버는 클라이언트로부터 받은 토큰을 서버에서 제공한 토큰과의 일치 여부를 체크해 인증 과정을 처리한다.

서버의 세션을 사용해 사용자 인증을 하는 방법으로 서버측에서 사용자의 인증정보를 관리한다
클라이언트로부터 요청을 받으면 클라이언트의 상태를 계속해서 유지하고 사용한다. 즉 상태유지 프로토콜 특징을 가진다. 더 자세한 내용은 이 글을 참고하면 된다.
서버 기반 인증의 단점을 극복하기 위해 등장했다. 인증받은 사용자에게 토큰을 발급하고 로그인이 필요한 작업일 경우 헤더에 토큰을 함께 보내 인증받은 사용자인지 확인한다. 이는 무상태 프로토콜 특징을 가진다.
토큰과 관련된 인증은 대부분 로그인할 때에 사용된다.
JWT라나 인증에 필요한 정보들을 암호화시킨 JSON 토큰을 의미한다. 로그인 정보를 서버가 저장하지 않고 암호화하여 클라이언트가 가지고 있도록 한다. 따라서 클라이언트가 JWT를 서버로 전송하면 서버는 서명을 검증하는 과정을 거치게 되며 검증이 끝나면 요청한 응답을 돌려준다.
JWT를 생성하고 인증하기 위해선 모든 서버가 동일한 Secret Key를 가지고 있어야 한다.
JSON은 Key, Value가 한 쌍을 이루는 객체를 말한다.
{
"employees":[
{"firstName":"One", "lastName":"Gyeol"},
{"firstName":"Park", "lastName":"Min"},
{"firstName":"Peter", "lastName":"Parker"}
]
}

JWT는 Header, Payload, Signature로 구성되어 있다. .으로 Header, Payload, Signature를 구분한다.
Header에는 JWT에서 사용할 타입과 해시 알고리즘의 종류가 담겨있으며, Payload에는 서버에서 첨부한 사용자 권한 정보와 데이터가 담겨있고, Signature에는 Header와 Payload를 Base64 URL-safe Encode를 하나 이후 Header에 명시된 해시함수를 적용하고 개인키(Private Key)로 서명한 전자서명이 담겨있다.
가장 많이 사용하는 방식이다.
서버에서 JWT를 검증해야하는데 서버가 받은 값이 Header + Payload + Server Key를 이용해 HS256 방식으로 암호화한 값이랑 클라이언트에서 보낸 시그니처 부분이랑 같으면 인증을 성공한다.
RSA 암호화 알고리즘으로 JWT 서명 프로세스에 활용되며 무결성과 기밀성을 위해 쓰인다.