Начать проект
Telegram

Авторизация Telegram Mini App: что должен проверять сервер

Как устроить вход в Mini App: проверить initData, срок данных, принадлежность записей и серверные права. Чек-лист требований для заказчика.

Данные пользователя, полученные интерфейсом Mini App, не являются готовым разрешением на серверные действия. Сервер должен подтвердить данные запуска по правилам Telegram, определить пользователя и проверить права на запрашиваемый объект.

Разделите отображение и доверие

Интерфейс может показывать имя и фотографию, но доступ к записям должен определяться сервером. Параметр user_id, присланный из браузера, нельзя считать достаточным доказательством личности.

Telegram различает исходную строку initData и удобный объект initDataUnsafe. В официальной документации указано, что данные для серверного использования нужно проверять. Проверка подписанных данных и проверка прав — два отдельных шага.

Определите срок допустимого запуска

У данных есть время auth_date. В системе нужно согласовать срок, в течение которого запуск принимается, и поведение после его истечения. Проверка времени дополняет проверку подписи.

Не обещайте бессрочный вход только потому, что приложение продолжает отображаться. Пользователь может оставить его открытым, вернуться позже или потерять соединение. В каждом состоянии нужно понятное продолжение либо предложение открыть приложение заново.

Проверьте принадлежность объектов

Подтверждённый пользователь не должен автоматически получать доступ к любой записи сервиса. Сервер проверяет, принадлежит ли заказ или документ этому пользователю и разрешено ли запрашиваемое действие.

ЗапросЧто проверить
Открыть свой заказПринадлежность заказа
Изменить записьПраво и допустимость текущего состояния
Получить документДоступ к самому файлу
Выполнить административное действиеОтдельное разрешение
Повторить операциюСохранённый результат и правила повторов

Такие проверки нужны независимо от видимости кнопок в интерфейсе.

Сохраняйте секреты на серверной стороне

Секреты интеграции не должны попадать в код приложения, который загружает браузер. Для диагностики не записывайте полный набор секретных параметров в открытый журнал.

Определите порядок изменения секретов и доступов при передаче проекта. Настройки окружения, журнал и исходники должны иметь согласованные границы доступа. Конкретную реализацию проверяют для архитектуры проекта.

Включите отказные сценарии в приёмку

На тестовой среде проверьте корректный запуск, изменённые данные, просроченное время и попытку открыть чужой объект. Проверьте также прямой запрос к административной операции из обычного пользовательского сценария.

Ожидаемый отказ должен быть предсказуемым и не раскрывать закрытые сведения. В интерфейсе пользователь должен понимать, нужно ли повторить действие или заново открыть приложение.

Эти требования стоит включить в задание на Telegram Mini App. Тогда авторизация оценивается по подтверждённому доступу и проверкам, а не по одному экрану с именем пользователя.

← Все статьи
Следующий проект

Есть задача? Обсудим.

Расскажите о своём проекте. Уточним задачу, предложим решение и посчитаем стоимость.

Что будет дальше

  1. Уточним задачу и пожелания.
  2. Предложим состав работ, сроки и стоимость.
  3. Согласуем смету до начала разработки.

Обсудим вашу задачу

Обычно отвечаем в течение пары часов.

Куда ответить

Удобнее без формы?Написать в Telegram