JWT - Access Toeken, Refresh Token

mil nil·2023년 1월 6일
0
  • Access Token과 Refresh Token 모두 JWT이다.
  • Client는 두 토큰을 캐시 혹은 웹스토리지에 저장한다.

Access Token

  • Access Token은 정보를 담고 있는 토큰이다.
  • 유효기간은 10분 ~ 1시간 정도로(설정하기 나름) 짧을수록 토큰 탈취에 대한 위험성이 줄어든다.

Refresh Token

  • Refresh Token은 Access Token이 만료되었을 때 Access Token 재발행에 사용된다.
  • 유효기간은 1 ~ 2주 정도(설정하기 나름)
  • Access Token의 유효기간이 짧은 경우에도 Acess Token이 만료되었을 때 Token 재발급을 위해 다시 로그인하는 수고를 줄여주고 이를 통해 Access Token 탈취에 대한 위험성이 줄어든다.
  • Refresh Token은 DB에 저장되어 DB에 있는 내용과 동일할 경우 Access Token을 발행한다.

case1 : access token과 refresh token 모두가 만료 → 에러 발생 (재 로그인하여 둘다 새로 발급)
case2 : access token은 만료, refresh token은 유효 → refresh token을 검증하여 access token 재발급
case3 : access token은 유효, refresh token은 만료 → access token을 검증하여 refresh token 재발급
case4 : access token과 refresh token 모두 유효 → 정상 처리

Access Token 만료가 될 때마다 계속 과정 9~11을 거칠 필요는 없다. Token을 보내줄 때 유효기간을 함께 보내주면 사용자(프론트엔드)에서 Access Token의 를 통해 유효기간을 확인한 후 API 요청 전에 토큰이 만료됐다면 곧바로 Refresh Token만 보내서 재발급 요청을 할 수도 있다. 만료된 Token을 괜히 한 번 더 옮기는 과정을 줄여줄 수 있다.

참조: [WEB] 📚 Access Token & Refresh Token 원리 (feat. JWT)
참조: JWT 토큰 인증 절차

profile
자바 배우는 사람

0개의 댓글