Данный репозиторий является решением задания олимпиады Volga-IT 2024 по направлению Web-API
Детали задания можно посмотреть в этом документе (https://volga-it.org/)
Для просмотра решения необходимо клонировать репозиторий, и, находясь в директории проекта, запустить следующую команду:
docker-compose up -dДля запуска необходим установленный Docker
После запуска контейнеров, микросервисы будут доступны по следующим адресам:
Account: http://localhost:8080/swagger/index.html
Hospital: http://localhost:8081/swagger/index.html
Timetable: http://localhost:8082/swagger/index.html
History: http://localhost:8083/swagger/index.html
В базе данных уже имеются предустановленные аккаунты:
| username | password | Role |
|---|---|---|
| admin | admin | Admin |
| manager | manager | Manager |
| doctor | doctor | Doctor |
| user | user | User |
-
При вызове метода
Authentication/SignOutAccess Token не блокируется. Предполагается, что из-за короткой жизни токена шанс его перехвата и использования злоумышленником мал и функционал дополнительного хранения заблокированных access token'ов не предусмотрен, но может быть добавлен по согласованию с условным заказчиком. -
Использование метода Authentication/Validate для проверки пользователя и его роли.
На рис. 2 в задании был изображен вызов метода Validate для проверки пользователя. Данный функционал не используется в большей части проекта, вместо него задействован атрибут ASP.NET
[Authorize]. Применение этого метода задействовано через сервисAuthValidationService -
Обнуление refresh token после вызова метода
Authentication/Refresh.Данный пункт взят из беседы олимпиады в Телеграм.
-"7) При выполнении POST
/api/Authentication/Refreshдолжен ли обнуляться refresh токен, который мы передаем в теле запроса?"-"7) да"
Этот пункт связан с пунктом 1. Подразумевается, что при входе, пользователь может пользоваться сервисами, не вводя больше свои данные определенное время, это время задано временем жизни Refresh Token'а. Но в течении этого времени многократно может вызываться метод Refresh, для обновления просроченных Access Token'ов
-
Использование Guid-идентификаторов вместо int auto increment
-
Добавлен дополнительный метод в
AccountController-> получить информацию об одном аккаунте. Это необходимо для проверкиpacientIdв микросервисе History