Реализовать механизм поверхностной аутентификации в Telegram клиенте с использованием Telegram Bot API. Кандидат должен продемонстрировать умение работать с существующей кодобазой, интегрировать внешние сервисы и реализовывать безопасные методы аутентификации.
Техническое задание
1. Модификация Telegram Client
Исходный код: Telegram Android Client (предоставляется отдельно)
Добавить кнопку авторизации в интерфейсе приложения
При нажатии открывать страницу авторизации внутри приложения
2. Серверная часть (REST API)
Реализовать сервер с двумя endpoint'ами:
POST /auth/init
Параметры: user_id (идентификатор пользователя)
Генерирует уникальный sessionId и token
Сохраняет в БД с полями:
session_id (String, PRIMARY KEY)
token (String, UNIQUE)
user_id (Long)
accepted (Boolean, default: false)
created_at (Timestamp)
expires_at (Timestamp) // +10 минут
Возвращает JSON:
json
{
"sessionId": "uuid-session-123",
"token": "jwt-or-uuid-token",
"expiresIn": 600
}
Защищенный endpoint для проверки
Endpoint для внутренней проверки реализации
Детали будут предоставлены дополнительно
3. Telegram Bot
Создать бота с командами:
/start {sessionId} подтвердить
Логика бота:
При получении sessionId проверять его валидность и время жизни
При подтверждении обновлять запись в БД: accepted = true
4. Клиентская логика
При открытии страницы авторизации:
Вызывать /auth/init с user_id текущего пользователя
Получать sessionId и token
Добавить кнопку, по которой пользователь сможет перейти в бота для подтверждения
Закрывать страницу авторизации
Показывать уведомление об успехе
Технологический стек
Клиент: Java, Android SDK
Сервер: Spring Boot
База данных: На выбор кандидата
Telegram Bot: Java + Telegram Bot Library
Требования к реализации
Обязательные требования:
Полная работоспособность всей цепочки аутентификации
Обработка ошибок и edge cases
Безопасное хранение и передача данных
Логирование ключевых событий
Будет преимуществом:
Unit-тесты для критической логики
Документация API
Конфигурация через environment variables
Если заинтересовало прошу написать мне
Опубликован 03.10.2025 в 16:06 Последнее изменение: 08.10.2025 в 12:56
Заказ находится в архиве