JWT(JSON Web Token)란 인증에 필요한 정보들을 암호화시킨 JSON 토큰을 의미한다. 그리고 JWT 기반 인증은 JWT 토큰(Access Token)을 HTTP 헤더에 실어 서버가 클라이언트를 식별하는 방식이다
JWT는 . 을 구분자로 나누어지는 세 가지 문자열의 조합이다.
. 을 기준으로 좌측부터 Header, Payload, Signature를 의미한다.
alg
: 서명 암호화 알고리즘(ex: HMAC SHA256, RSA)
typ
: 토큰 유형
서버와 클라이언트가 주고받는 시스템에서 사용될 정보가 들어있다.
시그니처에서 사용하는 알고리즘은 헤더에서 정의한 알고리즘 방식(alg)을 활용한다.
시그니처의 구조는 (헤더 + 페이로드)와 서버가 갖고 있는 유일한 key 값을 합친 것을 헤더에서 정의한 알고리즘으로 암호화를 한다.
JWT도 제 3자에게 탈취당할 가능성이 있기 때문에 그대로 사용하는것이 아닌 Access Token과 Refresh Token으로 나누어 사용한다.
클라이언트가 가지고있는 실제 유저의 정보가 담긴 토큰
클라이언트에서 요청이 오면 서버는 해당 토큰에 있는 정보를 토대로 사용자 정보에 맞게 응답
새로운 Access Token을 발급해주기 위해 사용하는 토큰으로 짧은 수명을 가지는 Access Token에게 새로운 토큰을 발급해주기 위해 사용.
해당 토큰은 보통 데이터베이스에 유저 정보와 같이 기록