Los dos tokens siguen un ciclo de vida simple: un access token de vida corta autoriza cada llamada a la API, y un refresh token de vida larga acuña silenciosamente nuevos access tokens cuando expiran — de modo que el usuario sigue con la sesión iniciada sin reintroducir credenciales.
El flujo
┌─────────┐ login ( pass) ┌────────────┐
│ Client │ ────────────────────────▶ │ Auth server│
│ │ ◀──── access refresh ─── │ │
└─────────┘ └────────────┘
│ API : : Bearer access
▼
┌────────────┐ verify signature ( DB lookup)
│ Resource │ ──── OK ────▶ (access still valid)
│ API │ ──── ───────▶ (access expired)
└────────────┘
│ : POST token { refresh }
▼
┌────────────┐ verify rotate
│ Auth server│ ──── access ( refresh) ────▶ retry the
└────────────┘
