Os dois tokens seguem um ciclo de vida simples: um access token de vida curta autoriza cada chamada de API, e um refresh token de vida longa silenciosamente cunha novos access tokens quando eles expiram — assim o usuário permanece logado sem reinserir credenciais.
O fluxo
┌─────────┐ login ( pass) ┌────────────┐
│ Client │ ────────────────────────▶ │ Auth server│
│ │ ◀──── access refresh ─── │ │
└─────────┘ └────────────┘
│ chamada de API: : Bearer access
▼
┌────────────┐ verifica assinatura (sem consulta ao DB)
│ Resource │ ──── OK ────▶ (access ainda válido)
│ API │ ──── ───────▶ (access expirado)
└────────────┘
│ : POST token { refresh }
▼
┌────────────┐ verifica rotaciona
│ Auth server│ ──── novo access ( novo refresh) ────▶ repete a chamada
└────────────┘
