Project stack: Nest, Postgres, TypeORM, Docker, Docker Compose, TypeScript, Jest, Swagger
In progress
sequenceDiagram
participant user
participant client
participant server
participant oauth provider
user->>+client: Войти с помощью Яндекс
activate client
Note right of client: Генерация<br>параметров
client->>client:
activate oauth provider
client->>+oauth provider: Перенаправление на Яндекс
deactivate client
oauth provider->>+user: Спрашивает разрешение предоставить сервису данные пользователя
deactivate oauth provider
user->>-oauth provider: Пользователь соглашается
activate oauth provider
Note right of oauth provider: Генерация<br>кода авторизации
oauth provider->>oauth provider:
oauth provider->>server: Передача кода
deactivate oauth provider
server->>oauth provider: Запрос на получение токена по коду
oauth provider->>server: Передача токена
server->>oauth provider: Запрос на получение данных пользователя по токену
oauth provider->>server: Передача данных пользователя
Note right of server: Создание аккаунта<br>пользователя
server->>server:
server->>client: Отправка пары токенов
client->>user: Домашняя страница сервиса
-
POST /auth/registration
- Регистрация нового пользователя -
POST /auth/registration-confirmation
- Подтверждение email после регистрации -
POST /auth/resend-confirmation-code
- Повторная отправка кода подтверждения
-
POST /auth/login
- Вход в систему -
POST /auth/refresh-token
- Обновление токенов -
GET /auth/me
- Получение информации о текущем пользователе -
POST /auth/logout
- Выход из системы
-
POST /auth/password-recovery
- Запрос на восстановление пароля -
POST /auth/confirm-password-recovery
- Подтверждение восстановления пароля -
POST /auth/update-password
- Установка нового пароля
POST /auth/oauth/:type
- Аутентификация через внешние сервисы- Параметр пути: type (google, github)
- Тело запроса: code (код авторизации от провайдера)
- Ответ: accessToken
- Cookie: refreshToken
-
GET /device
- Получение списка устройств пользователя -
DELETE /device
- Удаление всех устройств кроме текущего -
DELETE /device/:id
- Удаление конкретного устройства
Все эндпоинты имеют ограничение: не более 5 запросов с одного IP-адреса в течение 10 секунд.
- Интеграция с сервисами TOTP (Google Authenticator, Authy)
- управление ролевой моделью
- Двухфакторная аутентификация (2FA)
- регистрация сторонних сервисов в сервисе авторизации???
- Поддержка SSO (Single Sign-On)
- решить проблему: как быть, если пользователь зарелся через oauth и хочет залогинить через логин и пароль ` Решить эту проблему можно, например, с помощью синхронизации почтовых адресов. Если при OAuth-аутентификации в вашей базе обнаруживается совпадение по адресу, пользователю можно отправить сообщение типа «указанная почта уже использовалась при входе другим способом, проверьте свой способ аутентификации». Это потребует дополнительных ресурсов для реализации.
Существует альтернативное решение — «магические ссылки», которые отправляются на почту, указанную пользователем при входе. Перейдя по ссылке, он начинает авторизованную сессию. Такой метод аутентификации доказал свою надёжность и уже стал стандартом в web3-сервисах. `
- Интеграция с новыми протоколами: Включите поддержку новых протоколов, таких как WebAuthn или FIDO2, которые обеспечивают более безопасную и удобную авторизацию.
- Использование машинного обучения: Используйте алгоритмы машинного обучения для улучшения безопасности и точности авторизации, а также для предотвращения мошенничества и других типов атак.
- Поддержка различных типов идентификации: Добавьте поддержку различных типов идентификации, таких как биометрическая идентификация (лицо или отпечатки пальцев), голосовая идентификация или другие методы идентификации.
- Интеграция с блокчейнами: Включите поддержку интеграции с блокчейн-технологиями, которые обеспечивают более безопасную и прозрачную авторизацию.
- Интеграция с другими сервисами: Включите поддержку интеграции с другими сервисами и приложениями, чтобы обеспечить единую систему авторизации.
- Аналитика и отчетность: Предоставьте пользователям возможность получать анализ и отчеты о их авторизации и безопасности.
This project is distributed under the MIT license
typeorm migration:create ./src/libs/db/migration/MIGRATION_NAME