Введение
Удобство использования корпоративных информационных систем из любой точки земли по сети интернет неоспоримо и, зачастую, необходимость самого доступа с использованием мобильных устройств, требуемая руководством, сводит на «нет» и без того робкие попытки внутренних ИТ-служб компаний обеспечить сохранность корпоративных секретов в условиях ограниченных бюджетов.
Финансовые потери от раскрытия конфиденциальных данных, между тем, могут быть весьма ощутимы и, если «внутри» корпоративной сети вы можете применить множество специализированных решений и/или просто правильно организовать процессы и инфраструктуру, то из сети интернет, и используя личные мобильные устройства (стихийный 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. Внесены изменения при работе с веб клиентами.
Заключение
Ждем ваших отзывов, критики и пожеланий под катом.
так 1С уже запущена, толку от телеграм-аутентификации нет, потому что клиента можно легко поломать, особенно браузер.
(1) I_G_O_R, сломать можно теоретически все, вопрос в количестве ресурсов которых необходимо потратить на доступ к злонамеренному действию. Применение двухфакторной аутентификации усложняет несанкционированный доступ однозначно.
(1) I_G_O_R,
Если я правильно понял вопрос относился к надежности самих клиентов для работы с приложениями 1С. Если речь идет о тонком клиенте, то можно настроить работу между кластером серверов и клиентом с уровнем безопасности «Постоянно», если речь о веб-клиенте, то и там можно работать по защищенному каналу. В случае двухфакторной аутентификации это просто вариант дополнительной защиты не от взлома клиентов для работы с 1С, а защита от различных атак вида «Фишинг» и т.д., с использованием социальной инженерии.
(2)(3) можно написать бота, который с помощью http (GET/POST) запросов обойдет телеграм-аутентификацию.Чтобы защита реально была, права нужно ограничивать на сервере, а не на клиенте.
(4) I_G_O_R,
Код авторизации проверяется на сервере, информация о прекращении работы передается на клиент, потенциально можно подменить страницу указав, что она не должна закрываться, но тогда будет рассинхронизация данных между клиентом и сервером и при первом серверном вызове вы получите ошибку.
Если вы знаете алгоритм как обойти данную авторизацию поделитесь, пожалуйста, им, чтобы мы могли его учесть. Спасибо.
Вот в этой детали дьявол и кроется. Если я, как злоумышленник, завладел паролем для входя в ситстему и узнал имя бота — я вошёл в ситему.
(6) Dmitryiv,
Это вряд ли, одного имени бота не достаточно, нужен его токен. И даже если вы знаете токен, то этого тоже не достаточно, код авторизации генерируется на сервере 1С, а бот выступает лишь средством доставки (к примеру, вместо смс).
(5) суть в том, что когда открывается окно аутентификации телеграм, пользователь фактически уже залогинен и может практически пользоваться программой, ему мешает только это самое окно, его лишь нужно закрыть без последствий, например можно каким-то образом очистить свойство формы ОписаниеОповещенияОЗакрытии. Я конечно этим никогда не занимался, но кажется, что с помощью javascript в браузере это будет не так сложно сделать. В тонкий клиент кажется тоже можно внедриться, с учетом существования всяких плагинов типа снегопат, это задача кажется вполне решаемой.
тоже интегрировал 1С и Telegram (для запроса разных данных из базы и получения их на мобильное устройство).
основной момент, который не нравится в работе с ботом Telegram — это то, что всегда должен быть запущен чат с этим ботом. Если случайно не просто очистить чат, а еще и остановить, то сообщения от бота перестанут приходить. И вот тут можно сидеть и думать, то ли 1Ска стала недоступна, то ли еще что случилось.
и еще хотелось бы создавать секретные чаты с ботом с возможностью самоудаления. Это ведь одна из главных фишек Telegram.
Добрый день!
https://developers.facebook.com/ ?
Скажите, а не приходилось ли Вам делать интеграцию с Facebook API
Иными словами, можно ли то же самое прикрутить не к Телеграм, а к Фейсбуку?
Просто в нашей компании никто Телеграм не использует, а интеграцию с каким-нибудь популярным мессенджером хотят, и несмотря на мои уговоры, даже пробовать телеграм не хотят, аргумент такой — вот есть Фейсбук, приложение у всех стоит, АПИ есть, пусть корпоративный бот работает на этой платформе…
Но мне пока не удалось найти ни одного примера реализации бота.. Это потому что на порядок сложней, чем с телеграмом, или просто руки не дошли ни у кого?..
Например, сложно было бы реализовать 2хфакторную идентификацию через мессенджер фейсбука? Сложней, чем через телеграм?
Чего хочу — понять что разработка приложения для АПИ фейсбук на порядок сложнее и аргументировать в компании, чтоб всё таки ставили телеграм.. Либо если не сложнее — тогда понять как же это сделать… 🙂
Спасибо!
Бот перестает отправлять код аутентификации, если регулярно с периодичностью раз в сутки не напоминать ему о себе каким нибудь сообщением. Это не позволяет использовать механизм, потому что пользователю приходится перед тем как в очередной раз аутентифицироваться предварительно что то отправить боту. Это очень неудобно
Необходимо добавить проверку в Общий модуль «ДвухфакторнаяАутентификацияТелеграм.ПроверитьКодРегистрации»:
Показать
без этой проверки почему-то выдавал ошибки (