왜 토큰을 2개로 나눌까? 🤔

- 토큰 유효기간이 긴 경우, 탈취 시 장시간 악용 가능 (보안 취약)

- 토큰 유효기간이 짧은 경우, 로그인 빈도 수가 많아짐 (사용자 불편)

Access Token (접근 토큰)

API 요청 시 인증된 사용자임을 증명하기 위한 토큰 → “지금 이 요청을 해도 되는 사용자인가?”

GET /api/products HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
{
  "sub": "20",
  "role": "USER",
  "exp": 1736073600
}

Refresh Token (갱신 토큰)

만료된 Access Token을 재발급받기 위한 토큰

{
  "sub": "20",
  "exp": 1738675200
}

Access Token 만료 시 전체 흐름

[1] Access Token 만료
      ↓
[2] API 요청 → 401 Unauthorized
      ↓
[3] Refresh Token으로 재발급 요청
      ↓
[4] 새 Access Token 발급
      ↓
[5] 기존 API 재요청