Авторизация через Telegram для бизнеса: OAuth и Login Widget
К списку новостей

Авторизация через Telegram для бизнеса: OAuth и Login Widget в интернет-проектах


Telegram запустил полноценную OAuth-авторизацию для сторонних сайтов и приложений. Разработчики могут интегрировать вход через мессенджер по стандартным протоколам. Это заменяет самодельные решения.

Два способа интеграции авторизации

OAuth 2.0 с OpenID Connect

Современный подход использует протокол OIDC через сервис oauth.telegram.org. Пользователь переходит на Telegram, подтверждает авторизацию и возвращается с authorization code. Код обменивают на access token и ID token.

Процесс выглядит так:

  • Формирование запроса авторизации с client_id и redirect_uri.
  • Редирект пользователя на oauth.telegram.org/auth.
  • Получение кода авторизации в callback.
  • Обмен кода на токены через токен-эндпоинт.
  • Проверка подписи и содержимого ID token.

Telegram Login Widget

Виджет - альтернативный вариант для быстрой интеграции. Его подключают через JavaScript SDK. Он работает в двух режимах: Callback (обработка через JS-функцию) и Redirect (перенаправление на указанный URL с параметрами).

Настройка через BotFather

Для любого способа авторизации нужен бот. Он не участвует в обмене сообщениями, только предоставляет идентификатор и токен для проверки подписи.

Настройка в @BotFather:

  • Команда /setdomain для привязки к домену.
  • Bot Settings > Web Login для OAuth.
  • Указание Allowed URLs и redirect URI.
  • Получение Client ID и Client Secret.

Важное ограничение: Telegram принимает только HTTPS-схемы. Для локальной разработки нужен HTTPS-туннель через ngrok или аналогичные сервисы.

Проверка подлинности данных

Серверная валидация - ключевой элемент безопасности. Нельзя доверять только данным из браузера.

Для Login Widget алгоритм проверки:

  • Сбор всех полей кроме hash.
  • Сортировка по алфавиту и склейка в data-check-string.
  • Вычисление secret_key как SHA256 от токена бота.
  • Расчет HMAC-SHA-256 от data-check-string.
  • Сравнение с полученным hash.

Для OAuth проверяют ID token: загрузка публичных ключей Telegram, валидация алгоритма подписи, audience, issuer, nonce и срока действия.

Практическое применение для бизнеса

Авторизация через Telegram решает несколько задач:

Упрощение входа для клиентов

Более миллиарда пользователей могут войти одним кликом. Это снижает барьер входа и увеличивает конверсию.

Проверенные данные

Telegram гарантирует подлинность ID пользователя, имени и username через криптографическую подпись. Это важно для корпоративных порталов и сервисов с ограниченным доступом.

Интеграция с существующими системами

Полученные данные (ID, имя, username) легко связать с внутренними учетными записями. Можно реализовать как дополнительный способ входа, не затрагивая основную систему аутентификации.

Компании, работающие с большим объемом клиентских данных, применяют Telegram-авторизацию для быстрого доступа к личным кабинетам. Например, сервис для селлеров предложит вход через Telegram для доступа к аналитике отзывов маркетплейсов. Это ускорит работу с системой управления репутацией.

Типичные ошибки интеграции

Технические проблемы:

  • Несоответствие redirect_uri заявленному в настройках.
  • Отсутствие HTTPS для локального тестирования.
  • Неправильная проверка JWT-токенов.
  • Игнорирование валидации nonce для защиты от CSRF.

Безопасность:

  • Хранение client_secret в открытом виде.
  • Отсутствие серверной проверки подписи.
  • Доверие только клиентским данным.
  • Сохранение избыточных персональных данных.

Сценарии для корпоративного использования

Telegram-авторизация подходит для внутренних корпоративных порталов. Можно указать любой домен в настройках, включая внутренние адреса компании.

Схема работы:

  • Сотрудник переходит на корпоративный портал.
  • Выбирает вход через Telegram.
  • Подтверждает авторизацию в мессенджере.
  • Система проверяет его username в списке разрешенных.
  • При совпадении предоставляет доступ к ресурсам.

Список авторизованных пользователей хранят в Google Таблицах или корпоративной базе данных с проверкой через API.

Мобильная интеграция

Для мобильных приложений доступны нативные SDK под iOS и Android. Они используют тот же механизм OAuth, но с deep links для возврата в приложение после авторизации.

Схема для ботов: пользователь получает ссылку авторизации, проходит OAuth в браузере, возвращается в Telegram через t.me-ссылку с параметром start. Бот получает уведомление и действует от имени пользователя с полученными токенами.

Telegram-авторизация становится стандартом для российских интернет-проектов благодаря высокому проникновению мессенджера и простоте интеграции. Правильная реализация с серверной проверкой обеспечивает безопасность и удобство для пользователей.