JWT 특성
Jwt 는 StateLess
쉽게 말하자면 DB 작업을 하지 않는다(저장 되지 않는).
알고리즘을 굴려 암호화 된 토큰을 보낸다.
서버측 에서 는 토큰을
JWT 구성
header :
alg : 암호화 알고리즘(ex: HMAC SHA256, RSA)
typ : 토큰 유형

Payload :
실제로 사용될 정보/내용을 담고 있는 섹션이다.
토큰에서 사용할 정보의 조각들인 Claim 이 담겨있다. (실제 JWT 를 통해서 알 수 있는 데이터)

Signiture :

시그니처에서 사용하는 알고리즘은 헤더 에서 정의한 알고리즘 방식(alg)을 활용한다.
시그니처의 구조는 (헤더 + 페이로드)와 서버가 갖고 있는 유일한 key 값을 합친 것을 헤더에서 정의한 알고리즘으로 암호화를 한다.
JWT의 장담점
JWT는 인증에 필요한 정보가 담긴 토큰을 클라이언트에서 저장하기 때문에 DB조회를 하지않아도
되고 서버 확장성에 좋다. (이용자가 많을때 서버 부하 를 줄일수 있다)
그러나 이러한 장점은 클라이언트에서 토큰이 탈취될 수 있다는 단점이기도 하다.
그래서 토큰을 AccessToken, RefreshToken 으로 이중으로 나누어서 사용하고 있다.
+ (secret key 가 노출되면 해커가 JWT 조작 가능 .)
AccessToken
- 인증시, 필요한 정보가 담긴 토큰으로 인증을 통과할 수 있는 key라고 보면 된다.
- 인증에 필요한 정보가 담기기 때문에 탈취에 대한 위험을 줄이기 위해 토큰의 유효기간이 매우 짧다.
- 말 그대로 인증된 유저인지 서버에서 검증하는 토큰 입니다. client 쪽에서 요청 헤더에 담아 보내는 토큰 입니다.
RefreshToken
- 유효 기간이 짧은 Access Token을 보조해주는 토큰으로 Access Token보다 유효기간이 길며, Access Token을 발급하는데 사용된다.
- access token이 만료되거나 잘못된 토큰일 경우 refresh token을 사용해 유저를 검증합니다. 만약 refresh token을 검증하여 인증된 유저일 경우 access token을 재발행 해줍니다.
일반적으로 Refresh Token은 Access Token의 만료 시간이 지난 후에 새로운 Access Token을 발급받기 위해 사용된다. 이 과정에서 Refresh Token은 서버에 저장되어야 하며, 유효성을 검증하고 새로운 Access Token을 발급하는 작업이 필요하다.