Oba tokeny mają prosty cykl życia: krótko żyjący token dostępu autoryzuje każde wywołanie API, a długo żyjący token odświeżający po cichu wybija nowe tokeny dostępu, gdy te wygasają — dzięki czemu użytkownik pozostaje zalogowany bez ponownego wpisywania danych.
Przepływ
┌─────────┐ (user + pass) ┌────────────┐
│ │ ────────────────────────▶ │ Auth server│
│ │ ◀──── access + refresh ─── │ │
└─────────┘ └────────────┘
│ wywołanie API: Authorization: Bearer <access>
▼
┌────────────┐ weryfikacja podpisu + (bez zapytania DB)
│ Resource │ ──── OK ────▶ (access wciąż ważny)
│ API │ ──── ───────▶ (access wygasł)
└────────────┘
│ przy : POST /token { refresh }
▼
┌────────────┐ weryfikacja + rotacja
│ Auth server│ ──── 