Реализовать эндпоинт обновления токена
Closed this issue · 0 comments
Что нужно сделать
Необходимо реализовать эндпоинт по следующему пути:
v1/auth/refresh_token
Как нужно сделать
Роутер должен принимать только POST
запросы, а также содержать тело запроса:
{
"refresh_token": string,
}
Сервис в свою очередь должен провалидировать переданные данные и при успешном запросе в ответ отдавать сгенерированную пару токенов:
- access_token
- refresh_token
После успешного запроса access_token
должен сохраниться в куки с флагом HttpOnly
и secure
. В то же время refresh_token
должен обновиться в хранилище (На усмотрение исполнителя - либо PostgreSQL, либо Redis). Жизнь access_token
длится 15 минут, жизнь refresh_token
- 7 дней. При генерации access_token
необходимо придумать идентификатор токена (JTI) и добавляется уникальная сигнатура, взятая из таблицы сигнатур.
Ожидаемый результат
При успешной авторизации должно быть следующее:
- Пользователь получает пару
access_token
иrefresh_token
в ответе от сервиса - Выставляется кука с необходимыми флагами
- В хранилище рефреш токенов обновляется токен с циклом жизни
При неуспешной авторизации должно быть следующее:
- В куках может остаться протухший access (Либо устанавливаем куку с жизненным циклом, либо удаляем со стороны сервиса)
- Информативная ошибка
Полезные ссылки:
- jwt.io - Для валидации JWT-токена