Используемые технологии:
- Go
- JWT
- MongoDB
Задание:
Написать часть сервиса аутентификации.
Два REST маршрута:
- Первый маршрут выдает пару Access, Refresh токенов для пользователя сидентификатором (GUID) указанным в параметре запроса
- Второй маршрут выполняет Refresh операцию на пару Access, Refreshтокенов
Требования:
Access токен тип JWT, алгоритм SHA512, хранить в базе строго запрещено.
Refresh токен тип произвольный, формат передачи base64, хранится в базеисключительно в виде bcrypt хеша, должен быть защищен от изменения настороне клиента и попыток повторного использования.
Access, Refresh токены обоюдно связаны, Refresh операцию для Access токена можно выполнить только тем Refresh токеном который был выдан вместе с ним.
Принцип работы:
Первый маршрут http://localhost:8080/generate-tokens с ключом user_id. Генерирует Access и Refresh токены(Access токен живёт 1 час), и отправляет их пользователю, также сохранятся bcrypt хеш Access токена в MongoDB. Второй маршрут http://localhost:8080/refresh-tokens содержите два ключа: user_id и refresh_token. По этим данным выдаёт пользователю новые токены, а также обновляет bcrypt хеш. Также в коде расписаны обработчики ошибок, которые сообщаются пользователю при вводе неправильной информации