Telegram двухфакторная авторизация — Двухфакторная аутентификация с помощью мессенджера Telegram

Введение

Удобство использования корпоративных информационных систем из любой точки земли по сети интернет неоспоримо и, зачастую, необходимость самого доступа с использованием мобильных устройств, требуемая руководством, сводит на «нет» и без того робкие попытки внутренних ИТ-служб компаний обеспечить сохранность корпоративных секретов в условиях ограниченных бюджетов.

Финансовые потери от раскрытия конфиденциальных данных, между тем, могут быть весьма ощутимы и, если «внутри» корпоративной сети вы можете применить множество специализированных решений и/или просто правильно организовать процессы и инфраструктуру, то из сети интернет, и используя личные мобильные устройства (стихийный BYOD никто не отменял), вы открыты множеству угроз и способов получения ваших логинов и паролей.

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

Мы, в компании «АйДи — Технологии управления», понимая, что объять необъятное нельзя (все угрозы), но проблема существует, обратили внимание на компромиссное решение — двухфакторную аутентификацию, которая позволяет с небольшими изменениями корпоративных систем, сделать доступ к ним на порядок безопаснее.

По определению «Лаборатории Касперского» двухфакторная аутентификация — это система доступа, основанная на двух «ключах»: одним вы владеете (телефон, на который приходит SMS с кодом), другой запоминаете (обычные логин и пароль).

SMS, на наш взгляд, можно признать анахронизмом и заменить мессенджером Telegram, который представлен практически на всех платформах, удобен и бесплатен.

25 июня Telegram запустил Bot API (программный интерфейс) и платформу для сторонних разработчиков для создания ботов.

Боты — обычные аккаунты Telegram, управляемые программой и не требующие привязки к телефонному номеру.

Используя данный программный интерфейс специалисты нашей компании создали дополнение (модуль) для конфигураций 1С позволяющее в полной мере использовать двухфакторную аутентификацию. Данный модуль можно с легкостью встроить в существующие конфигурации 1С, построенные на управляемых формах. Модуль содержит настройки (см. рисунок 1), позволяющие настроить использование двухфакторной аутентификации по пользователям и режимам запуска 1С (тонкий клиент, веб-клиент).

Рисунок 1. Настройки двухфакторной аутентификации.

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

Процесс аутентификации с использованием модуля выглядит следующим образом:

1. Пользователь при входе в приложение на платформе 1С вводит стандартный «Логин» и «Пароль».

Рисунок 2. Форма ввода данных для входа в приложение на платформе 1С.

2. Выводится форма для выполнения запроса на получение кода подтверждения пользователя. После выполнения запроса в мессенджер Telegram высылается сгенерированный модулем одноразовый код для аутентификации.

Рисунок 3. Форма запроса на получение кода подтверждения пользователя.

3. Пользователь на своем мобильном устройстве в чате со специализированным ботом получает сообщение с кодом подтверждения.

4. Пользователь вводит полученный код в окне приложения на платформе 1С для подтверждения.

Рисунок 5. Форма ввода кода подтверждения в приложении на платформе 1С.

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

Встраивание модуля в конфигурацию 1С

Встраивание модуля производится обычным объединением с рабочей конфигурацией.

1. Включите возможность изменения конфигурации.

2. Откройте конфигурацию в конфигураторе. Выберите пункт меню «Конфигурация» — «Сравнить, объединить с конфигурацией из файла». Выберите файл конфигурации с двухфакторной аутентификацией (смотри рисунок 6).

3. В открывшемся окне снимите флажок с корня конфигурации, как на рисунке ниже. Далее нажмите кнопку «Действия» и выберите пункт «Отметить по подсистемам файла».

Рисунок 6. Объединение конфигураций.

4. Установите галочку напротив «ДвухфакторнаяАутентификацияТелеграм» и нажмите кнопку «Установить».

Рисунок 7. Отбор по подсистемам.

5. Нажмите кнопку «Выполнить».

Рисунок 8. Объединение конфигураций.

6. Откройте модуль управляемого приложения. Найдите процедуру «ПередНачаломРаботыСистемы» или создайте при ее отсутствии. Вставьте следующий вызов:

Рисунок 9. Модуль управляемого приложения.

7. Настройте права. Для пользователя с административными правами добавьте роль «АдминистрированиеДвухфакторнойАутентификацииТелеграм». Для остальных пользователей добавьте роль «ДвухфакторнаяАутентификацияТелеграм».

Настройка модуля

Создание бота и получение токена.

Для создания бота необходимо в клиенте Telegram найти бота @BotFather и с помощью команды /newbot создать своего бота, задав его имя и получив в результате токен для управления и работы с ботом через API. Пример ниже на рисунке.

Рисунок 10. Чат работы с BotFather.

Настройка параметров модуля

Рисунок 10. Настройки двухфакторной аутентификации.

Для настройки модуля необходимо включить его использование и указать ряд настроек:

  • Имя бота (используется для отображения пользователю при первом входе);
  • Токен бота;
  • Вариант использования двухфакторной аутентификации по пользователям — «Использовать для»:
    • «Всех пользователей (+исключения)»;
    • «Отмеченных пользователей».
  • Вариант указания режимов запуска — «Использовать для вариантов запуска»:
    • «Всех» — режимы запуска настраиваются в целом для всех пользователей;
    • «Задается для пользователя» — режимы запуска настраиваются индивидуально для каждого пользователя.
  • Для каждого пользователя, для которого включена двухфакторная аутентификация, должно быть указано «Имя (Телеграм)» (поле «Username» в персональных настройках мессенджера).

Технические аспекты реализации модуля

Рассмотрев Telegram Bot API, мы остановились на использовании двух методов, это getUpdates и sendMessage.

Для отправки сообщения пользователю с помощью метода sendMessage нам необходимо знать его идентификатор. В силу того, что пользователь не знает своего идентификатора, но знает свой «UserName» (задается в клиенте Telegram), мы задействовали второй метод getUpdates, для его определения. Для этого в настройках модуля необходимо задать имена пользователей в Telegram.

При первом входе в программу с использованием двухфакторной аутентификации, мы просим отправить пользователя любое сообщение боту и подтвердить его в программе. С использованием метода «getUpdates», который возвращает список сообщений, отправленных пользователями нашему боту, мы находим данное сообщение, извлекаем идентификатор пользователя, и сохраняем его в настройках модуля. В дальнейшем данный идентификатор используется для отправки кодов подтверждений пользователю.

Данный модуль следует использовать с версией платформы 8.3.6.1977 и выше, т.к. применяются платформенные методы работы с JSON.

Изменена версия модуля на v1.1. Внесены изменения при работе с веб клиентами.

Заключение

Ждем ваших отзывов, критики и пожеланий под катом.

Поделиться:
Нет комментариев

Добавить комментарий

Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.