Ротация refresh-токена
Вопрос
Сервер делает ротацию refresh-токенов: при обмене выдаёт новый, а старый помечает использованным. Пришёл запрос с уже использованным refresh. Как правильно поступить?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Варианты ответа
- Выдать новую пару: скорее всего, у клиента упала сеть и он просто повторил запрос
- Считать это возможной кражей и отозвать всю цепочку токенов сессии, потребовав входправильный ответ
- Вернуть 500, чтобы клиент повторил запрос позже уже со свежим refresh из своего хранилища
- Продлить старый refresh ещё на сутки и залогировать повтор как сетевую ошибку клиента
Разбор
Повторное использование значит, что токеном пользовались двое: настоящий клиент и, возможно, злоумышленник. Стандартная реакция (reuse detection) это отозвать всё семейство токенов. Чтобы не выкидывать честных пользователей при параллельных запросах, на клиенте делают single-flight обмена, а на сервере иногда дают короткое окно повторной выдачи. Тихо выдать новую пару значит наградить вора. 500 неверен по смыслу, а продление старого токена ломает саму идею ротации.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.