Введение
Удобство использования корпоративных информационных систем из любой точки земли по сети интернет неоспоримо и, зачастую, необходимость самого доступа с использованием мобильных устройств, требуемая руководством, сводит на "нет" и без того робкие попытки внутренних ИТ-служб компаний обеспечить сохранность корпоративных секретов в условиях ограниченных бюджетов.
Финансовые потери от раскрытия конфиденциальных данных, между тем, могут быть весьма ощутимы и, если "внутри" корпоративной сети вы можете применить множество специализированных решений и/или просто правильно организовать процессы и инфраструктуру, то из сети интернет, и используя личные мобильные устройства (стихийный BYOD никто не отменял), вы открыты множеству угроз и способов получения ваших логинов и паролей.
ИТ-менеджер компании может пытаться сопротивляться и ограничивать использование корпоративных информационных систем с мобильных устройств в сети интернет, но такая позиция заведомо обречена на провал и даже может быть названа луддизмом.
Мы, в компании «АйДи - Технологии управления», понимая, что объять необъятное нельзя (все угрозы), но проблема существует, обратили внимание на компромиссное решение - двухфакторную аутентификацию, которая позволяет с небольшими изменениями корпоративных систем, сделать доступ к ним на порядок безопаснее.
По определению "Лаборатории Касперского" двухфакторная аутентификация — это система доступа, основанная на двух «ключах»: одним вы владеете (телефон, на который приходит SMS с кодом), другой запоминаете (обычные логин и пароль).
SMS, на наш взгляд, можно признать анахронизмом и заменить мессенджером Telegram, который представлен практически на всех платформах, удобен и бесплатен.
25 июня Telegram запустил Bot API (программный интерфейс) и платформу для сторонних разработчиков для создания ботов.
Боты — обычные аккаунты Telegram, управляемые программой и не требующие привязки к телефонному номеру.
Используя данный программный интерфейс специалисты нашей компании создали дополнение (модуль) для конфигураций 1С позволяющее в полной мере использовать двухфакторную аутентификацию. Данный модуль можно с легкостью встроить в существующие конфигурации 1С, построенные на управляемых формах. Модуль содержит настройки (см. рисунок 1), позволяющие настроить использование двухфакторной аутентификации по пользователям и режимам запуска 1С (тонкий клиент, веб-клиент).
Для работы модуля необходимо наличие у пользователей клиентского приложения Telegram на мобильном устройстве.
Процесс аутентификации с использованием модуля выглядит следующим образом:
1. Пользователь при входе в приложение на платформе 1С вводит стандартный «Логин» и «Пароль».
2. Выводится форма для выполнения запроса на получение кода подтверждения пользователя. После выполнения запроса в мессенджер Telegram высылается сгенерированный модулем одноразовый код для аутентификации.
3. Пользователь на своем мобильном устройстве в чате со специализированным ботом получает сообщение с кодом подтверждения.
4. Пользователь вводит полученный код в окне приложения на платформе 1С для подтверждения.
После успешного прохождения двухфакторной аутентификации пользователь получает возможность работать с приложением.
Встраивание модуля в конфигурацию 1С
Встраивание модуля производится обычным объединением с рабочей конфигурацией.
1. Включите возможность изменения конфигурации.
2. Откройте конфигурацию в конфигураторе. Выберите пункт меню «Конфигурация» - «Сравнить, объединить с конфигурацией из файла». Выберите файл конфигурации с двухфакторной аутентификацией (смотри рисунок 6).
3. В открывшемся окне снимите флажок с корня конфигурации, как на рисунке ниже. Далее нажмите кнопку «Действия» и выберите пункт «Отметить по подсистемам файла».
4. Установите галочку напротив «ДвухфакторнаяАутентификацияТелеграм» и нажмите кнопку «Установить».
5. Нажмите кнопку «Выполнить».
6. Откройте модуль управляемого приложения. Найдите процедуру «ПередНачаломРаботыСистемы» или создайте при ее отсутствии. Вставьте следующий вызов:
7. Настройте права. Для пользователя с административными правами добавьте роль «АдминистрированиеДвухфакторнойАутентификацииТелеграм». Для остальных пользователей добавьте роль «ДвухфакторнаяАутентификацияТелеграм».
Настройка модуля
Создание бота и получение токена.
Для создания бота необходимо в клиенте Telegram найти бота @BotFather и с помощью команды /newbot создать своего бота, задав его имя и получив в результате токен для управления и работы с ботом через API. Пример ниже на рисунке.
Настройка параметров модуля
Для настройки модуля необходимо включить его использование и указать ряд настроек:
- Имя бота (используется для отображения пользователю при первом входе);
- Токен бота;
- Вариант использования двухфакторной аутентификации по пользователям – «Использовать для»:
- «Всех пользователей (+исключения)»;
- «Отмеченных пользователей».
- Вариант указания режимов запуска – «Использовать для вариантов запуска»:
- «Всех» – режимы запуска настраиваются в целом для всех пользователей;
- «Задается для пользователя» – режимы запуска настраиваются индивидуально для каждого пользователя.
- Для каждого пользователя, для которого включена двухфакторная аутентификация, должно быть указано «Имя (Телеграм)» (поле «Username» в персональных настройках мессенджера).
Технические аспекты реализации модуля
Рассмотрев Telegram Bot API, мы остановились на использовании двух методов, это getUpdates и sendMessage.
Для отправки сообщения пользователю с помощью метода sendMessage нам необходимо знать его идентификатор. В силу того, что пользователь не знает своего идентификатора, но знает свой «UserName» (задается в клиенте Telegram), мы задействовали второй метод getUpdates, для его определения. Для этого в настройках модуля необходимо задать имена пользователей в Telegram.
При первом входе в программу с использованием двухфакторной аутентификации, мы просим отправить пользователя любое сообщение боту и подтвердить его в программе. С использованием метода «getUpdates», который возвращает список сообщений, отправленных пользователями нашему боту, мы находим данное сообщение, извлекаем идентификатор пользователя, и сохраняем его в настройках модуля. В дальнейшем данный идентификатор используется для отправки кодов подтверждений пользователю.
Данный модуль следует использовать с версией платформы 8.3.6.1977 и выше, т.к. применяются платформенные методы работы с JSON.
Изменена версия модуля на v1.1. Внесены изменения при работе с веб клиентами.
Заключение
Ждем ваших отзывов, критики и пожеланий под катом.