AlexanderZharyuk/async-auth

Реализовать эндпоинт обновления токена

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-токена