Основная идея сервиса заключается в предоставлении функционала авторизации пользователей на сайте с возможностью загрузки всех необходимых персональных данных. Для обеспечения безопасности при передаче данных между клиентом и сервером используется хеширование. Для контроля доступа генерируются и валидируются JWT-токены, которые подтверждают подлинность пользователя. Все персональные данные сохраняются в базе данных с соблюдением необходимых мер защиты.
Решение разделено на два микросервиса:
- Сервис, отвечающий за логику Аутентификации
- Сервис, отвечающий за работу с БД
- Добавить регистрацию
- Изменить способ хэширования пароля
- Добавить черный список токенов
- Аутентификация пользователей
- Разработчики, занимающиеся разработкой веб-сайтов с возможностью авторизации/регистрации
- C#
- ASP.NET
- Swagger
- PostgreSQL
- npgsql
- Cryptography C#
Название запроса | Тип запроса | Описание |
---|---|---|
Logout | DELETE | Удаляет сессию пользователя из БД, аннулирует access токен на клиенте и удаляет refresh токен в cookie. |
Login | POST | Производит авторизацию пользователя, создает сессию в БД, генерирует access и refresh токены в HttpOnly Cookie. |
refreshToken | POST | Обновляет access и refresh токены клиента. Используется в случае недействительности access токена. |
getRefreshToken | GET | Выводит активный refresh токен пользователя. |
GetWeatherForecast | GET (Authorize) | Тестовый запрос, необходим для получения данных. Требует авторизации. Используется для проверки авторизации. |
- Установите PostgreSQL и настройте базу данных.
- Примените SQL скрипты для создания структуры БД. Скрипты находятся в папке
db-scripts
.
- Запустите сервис
dbProvider
, который будет работать с базой данных. - Запустите сервис
AuthenticationService
, который отвечает за логику аутентификации.
- После запуска сервисов откройте Swagger UI по адресу:
http://localhost:port/swagger
для ознакомления с API и выполнения тестовых запросов.
- Все запросы, связанные с авторизацией, используют JWT токены для контроля доступа.
- Для обеспечения безопасности данные пользователей хешируются перед сохранением в базе данных.