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

29.10.15

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

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

Скачать файлы

Наименование Файл Версия Размер
Конфигурация для объединения с двухфакторной аутентификацией v1.1
.cf 60,16Kb
96
.cf 1.1 60,16Kb 96 Скачать

Введение

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

Финансовые потери от раскрытия конфиденциальных данных, между тем, могут быть весьма ощутимы и, если "внутри" корпоративной сети вы можете применить множество специализированных решений и/или просто правильно организовать процессы и инфраструктуру, то из сети интернет, и используя личные мобильные устройства (стихийный 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

См. также

SALE! 25%

Конструктор ботов Телеграм, редакция 2

Мессенджеры и боты Платформа 1С v8.3 Платные (руб)

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

15000 11250 руб.

18.06.2021    58689    291    255    

345

SALE! 25%

Что нам стоит бота построить? Нарисуем - будет жить! Графический конструктор телеграм-ботов/Telegram

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

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

13200 9900 руб.

27.12.2021    33280    80    157    

174

Легкий документооборот (+чат-бот для Telegram)

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

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

14900 руб.

15.11.2018    27794    25    48    

57

Email, SMS, Telegram рассылки из 1С - Директ Маркетинг

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

Полный набор инструментов для качественных транзакционных и маркетинговых Email, SMS, Telegram рассылок из 1С. Даже простые уведомления об оплате счетов способны существенно упростить сбор дебиторской задолженности. Применение всех возможностей прямого маркетинга выводит коммуникацию с клиентами, уровень сервиса и лояльность на новый уровень.

7788 руб.

07.04.2014    83622    40    191    

127

Интеграция 1С с телефонией и чатами WhatsApp и Telegram

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

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

4100 руб.

28.04.2022    13857    11    6    

36

Отправка в Telegram отчетов, печатных форм, присоединённых файлов и произвольных вложений. Загрузка получателей. Хранение истории отправок.

Мессенджеры и боты Платформа 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    2206    1    0    

5
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. I_G_O_R 69 29.10.15 21:36 Сейчас в теме
так 1С уже запущена, толку от телеграм-аутентификации нет, потому что клиента можно легко поломать, особенно браузер.
2. soltik 19 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 289 08.11.16 10:59 Сейчас в теме
Добрый день!
Скажите, а не приходилось ли Вам делать интеграцию с Facebook API https://developers.facebook.com/ ?
Иными словами, можно ли то же самое прикрутить не к Телеграм, а к Фейсбуку?
Просто в нашей компании никто Телеграм не использует, а интеграцию с каким-нибудь популярным мессенджером хотят, и несмотря на мои уговоры, даже пробовать телеграм не хотят, аргумент такой - вот есть Фейсбук, приложение у всех стоит, АПИ есть, пусть корпоративный бот работает на этой платформе...
Но мне пока не удалось найти ни одного примера реализации бота.. Это потому что на порядок сложней, чем с телеграмом, или просто руки не дошли ни у кого?..

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

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

Спасибо!
11. Ukubaeva 08.06.17 12:07 Сейчас в теме
Бот перестает отправлять код аутентификации, если регулярно с периодичностью раз в сутки не напоминать ему о себе каким нибудь сообщением. Это не позволяет использовать механизм, потому что пользователю приходится перед тем как в очередной раз аутентифицироваться предварительно что то отправить боту. Это очень неудобно
14. cleaner_it 220 22.05.23 04:35 Сейчас в теме
(11) С чем это может быть связано? Решили этот вопрос, нашли обходной путь, или не стали использовать?
15. cleaner_it 220 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 32 19.03.22 18:56 Сейчас в теме
На данный момент разработка актуальна?
Оставьте свое сообщение