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

29.10.15

Интеграция - Мессенджеры и боты

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Конфигурация для объединения с двухфакторной аутентификацией v1.1
.cf 60,16Kb ver:1.1
99
99 Скачать (1 SM) Купить за 1 850 руб.

Введение

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

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

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

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

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

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

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

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

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

 

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

 

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

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

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


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


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


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


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


Рисунок 4. Код подтверждения пользователя в мессенджере Telegram.


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. Внесены изменения при работе с веб клиентами.

 

Заключение

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

Telegram

См. также

Мессенджеры и боты Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Интеграция мессенджера WhatsApp и 1С: УНФ, УТ, КА, ERP - отправка и получение сообщений, картинок, файлов и видео прямо в 1С. Расширение работает с сервисом GreenApi.

15600 руб.

23.06.2023    10131    62    13    

39

Мобильная разработка Мессенджеры и боты Платформа 1С v8.3 1С:Конвертация данных Платные (руб)

Теперь создать telegram-бота - элементарно. Достаточно просто нарисовать блок-схему телеграм-бота, и он сразу заработает. Это возможно при использовании Графического конструктора телеграм-ботов. Это единственный конструктор ботов для telegram, чье качество и функционал подтверждены фирмой 1С, есть сертификат 1С:Совместимо. Расширение в интерактивном режиме, с помощью блок-схем, позволяет с минимальными трудозатратами создать телеграм-ботов в любой конфигурации, работающей на платформе «1С:Предприятие 8.3».

13200 руб.

27.12.2021    38913    109    163    

203

SALE! 25%

Мессенджеры и боты Системный администратор Программист Бизнес-аналитик Пользователь Руководитель проекта Платформа 1С v8.3 Платные (руб)

Развитие популярного решения для интеграции мессенджера Telegram с нашей любимой 1С - конструктор чат-ботов в Телеграм.

15000 11250 руб.

18.06.2021    66271    314    272    

372

Документооборот и делопроизводство (СЭД) Мессенджеры и боты Учет документов Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 Платные (руб)

Расширение для согласования справочников и документов в основных типовых конфигурациях. Ролевая адресация, условная маршрутизация, чат-бот telegram, интеграция с n8n, последовательное и параллельное согласование, уведомление о новых задачах на почту, блокировка объектов в зависимости от статуса, запрет проведения в зависимости от статуса, автозапуск процессов согласования, отчеты по исполнительской дисциплине. Не требуется снятие конфигурации с поддержки. Настройка без программирования. Версия для 1cfresh.com. Сертификат 1С-Совместимо.

14900 руб.

15.11.2018    30578    35    49    

71

Телефония, SIP Мессенджеры и боты Платформа 1С v8.3 Конфигурации 1cv8 Россия Управленческий учет Платные (руб)

Интеграция 1С с телефонией и чатами WhatsApp и Telegram автоматизирует работу оператора со звонками и чатами и добавит вашей 1С элементы CRM системы. Храните всю историю взаимоотношений в 1С, не теряйте звонки, скачивайте, прослушивайте в любое время из карточки клиента или журнала звонков, держите руку на пульсе, используя блок отчетов по звонкам. Интегрируйте вашу 1С и чатами WhatsApp и Telegram, общайтесь с клиентами с единого номера и в одном окне. Теперь чаты с клиентами хранятся в карточке партнера в 1С, а не в личных мобильных ваших менеджеров.

4100 руб.

28.04.2022    16221    15    10    

41

Мессенджеры и боты Платформа 1С v8.3 Конфигурации 1cv8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Платные (руб)

Универсальное расширение для отправки (напрямую и через прокси) печатных форм, отчетов, присоединённых файлов, табличных документов и произвольных вложений в чат Telegram прямо из 1С. Ручная и автоматическая фоновая загрузка по расписанию идентификаторов получателей Telegram. Хранение истории отправок сообщений с ограничением по времени хранения и с автоматической очисткой по мере истечения срока хранения.

4800 руб.

26.12.2023    3538    4    2    

12
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. I_G_O_R 69 29.10.15 21:36 Сейчас в теме
так 1С уже запущена, толку от телеграм-аутентификации нет, потому что клиента можно легко поломать, особенно браузер.
2. soltik 20 29.10.15 22:25 Сейчас в теме
(1) I_G_O_R, сломать можно теоретически все, вопрос в количестве ресурсов которых необходимо потратить на доступ к злонамеренному действию. Применение двухфакторной аутентификации усложняет несанкционированный доступ однозначно.
4. I_G_O_R 69 30.10.15 13:27 Сейчас в теме
(2)(3) можно написать бота, который с помощью http (GET/POST) запросов обойдет телеграм-аутентификацию.Чтобы защита реально была, права нужно ограничивать на сервере, а не на клиенте.
5. id-mt 55 03.11.15 12:44 Сейчас в теме
(4) I_G_O_R,
Код авторизации проверяется на сервере, информация о прекращении работы передается на клиент, потенциально можно подменить страницу указав, что она не должна закрываться, но тогда будет рассинхронизация данных между клиентом и сервером и при первом серверном вызове вы получите ошибку.
Если вы знаете алгоритм как обойти данную авторизацию поделитесь, пожалуйста, им, чтобы мы могли его учесть. Спасибо.
8. I_G_O_R 69 04.11.15 19:00 Сейчас в теме
(5) суть в том, что когда открывается окно аутентификации телеграм, пользователь фактически уже залогинен и может практически пользоваться программой, ему мешает только это самое окно, его лишь нужно закрыть без последствий, например можно каким-то образом очистить свойство формы ОписаниеОповещенияОЗакрытии. Я конечно этим никогда не занимался, но кажется, что с помощью javascript в браузере это будет не так сложно сделать. В тонкий клиент кажется тоже можно внедриться, с учетом существования всяких плагинов типа снегопат, это задача кажется вполне решаемой.
Aleksey.Bochkov; +1 Ответить
3. gostmair 29.10.15 23:26 Сейчас в теме
(1) I_G_O_R,
Если я правильно понял вопрос относился к надежности самих клиентов для работы с приложениями 1С. Если речь идет о тонком клиенте, то можно настроить работу между кластером серверов и клиентом с уровнем безопасности "Постоянно", если речь о веб-клиенте, то и там можно работать по защищенному каналу. В случае двухфакторной аутентификации это просто вариант дополнительной защиты не от взлома клиентов для работы с 1С, а защита от различных атак вида "Фишинг" и т.д., с использованием социальной инженерии.
DmMVS; soltik; eval; +3 Ответить
6. Dmitryiv 161 04.11.15 10:04 Сейчас в теме
Боты — обычные аккаунты Telegram, управляемые программой и не требующие привязки к телефонному номеру.


Вот в этой детали дьявол и кроется. Если я, как злоумышленник, завладел паролем для входя в ситстему и узнал имя бота - я вошёл в ситему.
7. gostmair 04.11.15 10:10 Сейчас в теме
(6) Dmitryiv,
Это вряд ли, одного имени бота не достаточно, нужен его токен. И даже если вы знаете токен, то этого тоже не достаточно, код авторизации генерируется на сервере 1С, а бот выступает лишь средством доставки (к примеру, вместо смс).
9. sdwggg 16.02.16 09:40 Сейчас в теме
тоже интегрировал 1С и Telegram (для запроса разных данных из базы и получения их на мобильное устройство).
основной момент, который не нравится в работе с ботом Telegram - это то, что всегда должен быть запущен чат с этим ботом. Если случайно не просто очистить чат, а еще и остановить, то сообщения от бота перестанут приходить. И вот тут можно сидеть и думать, то ли 1Ска стала недоступна, то ли еще что случилось.
и еще хотелось бы создавать секретные чаты с ботом с возможностью самоудаления. Это ведь одна из главных фишек Telegram.
10. METAL 299 08.11.16 10:59 Сейчас в теме
Добрый день!
Скажите, а не приходилось ли Вам делать интеграцию с Facebook API https://developers.facebook.com/ ?
Иными словами, можно ли то же самое прикрутить не к Телеграм, а к Фейсбуку?
Просто в нашей компании никто Телеграм не использует, а интеграцию с каким-нибудь популярным мессенджером хотят, и несмотря на мои уговоры, даже пробовать телеграм не хотят, аргумент такой - вот есть Фейсбук, приложение у всех стоит, АПИ есть, пусть корпоративный бот работает на этой платформе...
Но мне пока не удалось найти ни одного примера реализации бота.. Это потому что на порядок сложней, чем с телеграмом, или просто руки не дошли ни у кого?..

Например, сложно было бы реализовать 2хфакторную идентификацию через мессенджер фейсбука? Сложней, чем через телеграм?

Чего хочу - понять что разработка приложения для АПИ фейсбук на порядок сложнее и аргументировать в компании, чтоб всё таки ставили телеграм.. Либо если не сложнее - тогда понять как же это сделать... :)

Спасибо!
11. Ukubaeva 08.06.17 12:07 Сейчас в теме
Бот перестает отправлять код аутентификации, если регулярно с периодичностью раз в сутки не напоминать ему о себе каким нибудь сообщением. Это не позволяет использовать механизм, потому что пользователю приходится перед тем как в очередной раз аутентифицироваться предварительно что то отправить боту. Это очень неудобно
14. cleaner_it 209 22.05.23 04:35 Сейчас в теме
(11) С чем это может быть связано? Решили этот вопрос, нашли обходной путь, или не стали использовать?
15. cleaner_it 209 22.05.23 04:36 Сейчас в теме
12. vbuots 20 06.02.18 15:10 Сейчас в теме
Необходимо добавить проверку в Общий модуль "ДвухфакторнаяАутентификацияТелеграм.ПроверитьКодРегистрации":

+++ Если Сообщение.message.from.Свойство("username") Тогда
                Если Сообщение.message.from.username = ИмяПользователяТелеграма И Сообщение.message.text = КодРегистрации Тогда
                    Идентификатор 					= Сообщение.message.from.id;
                    ПараметрыВозврата.Статус 		= "OK";
                    ПараметрыВозврата.Идентификатор	= Формат(Идентификатор,"ЧГ=0");
                    УстановитьИдентификаторПользователяТелеграмма(ПараметрыВозврата.Идентификатор);
                    Возврат ПараметрыВозврата;
                КонецЕсли;	
+++            КонецЕсли; 
Показать

без этой проверки почему-то выдавал ошибки (
cleaner_it; AlexandrSmith; +2 Ответить
13. markbraer 88 19.03.22 18:56 Сейчас в теме
На данный момент разработка актуальна?
Оставьте свое сообщение