Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

OTP AUTHENTICATION SERVICE

Описание проекта

Данный проект представляет собой сервис генерации и валидации одноразовых OTP-кодов (One-Time Password) с возможностью их доставки через Email, эмулятор SMS, Telegram и сохранение в файл.

Также реализована система регистрации и аутентификации пользователей с разграничением ролей (администратор и пользователь), авторизация по JWT-токенам, логирование, контроль конфигурации OTP-кодов и управление пользователями.

Технологии и стек

  • Java 17
  • Spring Boot (MVC, Security, JDBC)
  • PostgreSQL 17
  • Maven (в качестве системы сборки)
  • JWT (JJWT)
  • Telegram Bot API
  • JavaMailSender (Email)
  • SLF4J + Logback (логирование)

Функциональные возможности

Пользовательское API:

  • Регистрация и вход пользователей (роль USER)
  • Генерация OTP-кодов, привязанных к операциям
  • Получение OTP-кодов через Email, SMS, Telegram или файл
  • Валидация полученного OTP-кода

Административное API:

  • Изменение конфигурации OTP (TTL и длина)
  • Получение списка всех пользователей (исключая администраторов)
  • Удаление пользователей и всех их OTP-кодов

Архитектура проекта

Проект построен по трёхслойной архитектуре:

  1. Контроллеры (слой API) — package: controller
  2. Сервисы (бизнес-логика) — package: service
  3. DAO/репозитории (доступ к данным) — package: repository

Также включены:

  • JWT-фильтры (filter)
  • Исключения и обработчики (exception, handler)
  • AOP логирование (audit, aspect)

Структура БД

  1. users — учетные записи пользователей и их контактные данные.
  2. token — токены доступа и обновления для JWT.
  3. otp_config — глобальная конфигурация OTP (одна запись).
  4. otp_codes — сгенерированные коды, связанные с операциями.

Статусы OTP-кодов:

  • ACTIVE — активен
  • EXPIRED — срок действия истёк
  • USED — успешно использован

Запуск проекта

  1. Клонируйте репозиторий:

  2. Настройка подключения к БД: Обновите src/main/resources/application.yml с вашими параметрами PostgreSQL.

  3. Сборка и запуск: mvn clean install mvn spring-boot:run

  4. Инициализируйте базу данных вручную или с помощью миграций (если подключены).

Примеры API

Регистрация пользователя: POST /api/v1/auth/register
Тело запроса: { "username": "user1", "password": "password123", "email": "user@example.com", "phone": "+71234567890", "telegramNickname": "@nickname" }

Аутентификация: POST /api/v1/auth/login
Ответ: JWT access + refresh токены

Генерация OTP: POST /api/v1/otp/generate
{ "operationId": "UUID", "deliveryChannel": "EMAIL" // или SMS, TELEGRAM, FILE }

Валидация OTP: POST /api/v1/otp/validate
{ "operationId": "UUID", "code": "123456" }

Изменение конфигурации OTP (админ): PUT /api/v1/admin/otp-config
{ "codeLength": 6, "ttlSeconds": 120 }

Тестирование

Для запуска тестов: mvn test

Тесты располагаются в директории: src/test/java/org/example

Зависимости и библиотеки

Все внешние библиотеки автоматически подтягиваются через pom.xml. Включены:

  • Spring Boot Starter Web/Security/JDBC
  • PostgreSQL JDBC Driver
  • JJWT
  • JavaMailSender
  • Telegram Bot SDK
  • SLF4J / Logback

Логирование

Каждый запрос логируется с указанием:

  • Времени вызова
  • Параметров запроса
  • Пользователя (если авторизован)
  • Результата или ошибки

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages