[JWT] Refresh and Access Tokens

JWT썸네일

JWT의 특성상 토큰 탈취는 매우 조심해야 되므로 토큰에 만료 기간을 주어야 합니다. 그러나 Refresh Token 없이 Access Token만을 사용하면 사이트 이용 도중에 예를들어 갑자기 로그아웃이 되버리는 상황이 발생할 수 있으므로 Refresh Token는 Access Token 만료 시 재발급할 때 이용됩니다.

Refresh Token & Access Token


토큰 발급 과정

  1. 클라이언트에서 "username:password" 형태의 값을 base64로 인코딩한 후 authorization 헤더에 "Basic $token" 형태로 전송
  2. API 서버에서 ID와 Password를 검증한 후
  3. 클라이언트로 토큰(Refresh + Access)를 전송

Refresh Token 사용 과정

  1. Access Token 재발급 URL로 요청
[Haeder]
authorization: "Bearer $refreshToken"
  1. ID와 Password를 검증한 후 Access Token 재발급
  2. API 서버에서 Access Token을 클라이언트로 전송

Access Token 사용 과정

  1. API 요청
[Haeder]
authorization: "Bearer $accessToken"
  1. API 서버에서 Access Token 검증 후
  2. DB에 데이터 요청후 응답을 받음
  3. 응답을 클라이언트에 전송

최종 로직

Access Token 토큰 사용 과정 사이에 Refresh Token 사용 과정이 껴있는 느낌 flowchart