Оба токена следуют простому жизненному циклу: короткоживущий access-токен авторизует каждый вызов API, а долгоживущий refresh-токен незаметно чеканит новые access-токены, когда те истекают — так пользователь остаётся в системе без повторного ввода учётных данных.
Поток
┌─────────┐ login ( pass) ┌────────────┐
│ Client │ ────────────────────────▶ │ Auth server│
│ │ ◀──── access refresh ─── │ │
└─────────┘ └────────────┘
│ вызов API: : Bearer access
▼
┌────────────┐ проверка подписи (без обращения к DB)
│ Resource │ ──── OK ────▶ (access ещё действителен)
│ API │ ──── ───────▶ (access истёк)
└────────────┘
│ при : POST token { refresh }
▼
┌────────────┐ проверка ротация
│ Auth server│ ──── новый access ( новый refresh) ────▶ повторить вызов
└────────────┘
