Document accepted cross-tab reauthentication, on-demand candles, native query/logging ownership and the complete deployment path. Preserve historical ADR context and link amendments through ADR 018. Related backend change: WealthLedger/backend@d698ed9
19 lines
1.8 KiB
Markdown
19 lines
1.8 KiB
Markdown
# 009. Политика конкурентной ротации refresh token
|
|
|
|
**Status:** Accepted; supersedes the refresh-token reuse rule in ADR-006.
|
|
|
|
Cookie-clearing policy уточнена в [ADR 018](018-minimal-runtime-coordination.md):
|
|
неуспешный refresh больше не удаляет cookie. CAS и отказ superseded token сохранены.
|
|
|
|
## Context
|
|
|
|
Два одновременных запроса могут предъявить один действительный refresh token. Отзыв Session для проигравшего запроса делает недействительной сессию успешного запроса, а сохранение отдельной истории token или grace-window для различения replay добавляет непропорциональное состояние локальному MVP.
|
|
|
|
## Decision
|
|
|
|
Backend атомарно ротирует refresh token через compare-and-swap: один запрос становится победителем. Запрос с superseded refresh token, включая проигравший конкурентный запрос, получает `401` и удаление cookie, но сам по себе не отзывает Session. Публичный auth contract и feature documentation должны отражать эту семантику.
|
|
|
|
## Consequences
|
|
|
|
Повторное предъявление superseded token больше не служит автоматическим сигналом для отзыва Session. Если понадобится различать конкурентный запрос и подтверждённый replay, потребуется отдельный change с дополнительным server-side состоянием и новой security policy.
|