Avanpost FAM/MFA+ : 5.4.6. Настройка метода Telegram

Общие сведения

Приложение "Telegram" может использоваться в качестве фактора аутентификации посредством доставки push-уведомлений пользователю.

Доставка осуществляется посредством защищённого Telegram Bot API с использованием отдельного аккаунта Telegram-бота. 

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

Настройка фактора Telegram

Создание аккаунта для Telegram-бота

Для создания аккаунта требуется иметь зарегистрированную УЗ в Telegram.

В приложении Telegram:

  1. Через поиск найти официальный аккаунт Telegram BotFather (имеет логин @BotFather).
  2. В рамках взаимодействия с ботом выполнить операцию создания нового бота. В результате должно быть получено сообщение следующего вида:
    «Done! Congratulations on your new bot. You will find it at t.me/yourbot. You can now add a description, about section and profile picture for your bot, see /help for a list of commands. By the way, when you've finished creating your cool bot, ping our Bot Support if you want a better username for it. Just make sure the bot is fully operational before you do this.
    
    Use this token to access the HTTP API:
    12345678919:h209548jm9tu323ав83ut34t34t32vv2
    Keep your token secure and store it safely, it can be used by anyone to control your bot.
    
    For a description of the Bot API, see this page: https://core.telegram.org/bots/api»
  3. Сохранить в безопасном месте строку с токеном, следующую за сообщением «Use this token to access the HTTP API:» (в примере выше «12345678919:h209548jm9tu323ав83ut34t34t32vv2»). Токен будет использоваться в качестве секрета для отправки сообщений через данного бота и используется для настройки подключения.

    Внимание

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

Настройка параметров Telegram для нескольких экземпляров Avanpost FAM

Чтобы избежать конфликта при работе нескольких экземпляров Avanpost FAM с одним Telegram-ботом, в версиях FAM 1.12 и выше реализован механизм поддержания стабильности работы с Telegram-сервисами. 

В версиях FAM ниже 1.12 при наличии двух и более FAM Server с одинаковым токеном (телеграм-ботом) стабильно работает тот, которого включили позже.

При этом у администратора есть возможность указывать несколько Telegram-сервисов в форме настройки метода аутентификации посредством Telegram. Развернутые экземпляры Avanpost FAM Server поддерживают соединение с Telegram-сервисами. В случае, если с одним из сервисов утрачивается контакт, другой Telegram-сервис устанавливает контроль на Telegram-ботом (токеном). Дальнейшее обновление FAM Server осуществляется через данный Telegram-сервис.

Каждый экземпляр Avanpost FAM обладает собственным идентификатором idp_id (расположен по пути: /opt/idp/idp_id). Данный идентификатор используется для установки контакта Telegram-сервиса экземпляра с Telegram-ботом в случаях, когда развернуто несколько экземпляров FAM Server. Также идентификатор idp_id используется для случаев кластеризации FAM Server при настройке репликации баз данных.

Для настройки метода Telegram требуется задать дополнительные параметры конфигурационного файла в соответствии с Таблицей 3

Настройка параметров аутентификации методом Telegram (для FAM версии 1.12 и выше)

Настройка метода аутентификации SMS осуществляется в административной консоли Avanpost FAM Server следующим образом:

  1. Войти в раздел "Настройки методов аутентификации" режима "Сервис".
  2. Нажать кнопку "Добавить метод аутентификации". 
  3. Заполнить общую информацию о методе согласно таблице (более подробно параметры описаны в Настройка методов аутентификации) и нажать кнопку "Далее".
    ПараметрОписание
    НазваниеВвести название.
    Фактор аутентификацииВыбрать "SMS".
    Метод активен

    Заполнить чекбокс:

    • при включенном чекбоксе метод можно использовать сразу после его создания и настройки;
    • при выключенном чекбоксе метод невозможно использовать сразу после создания: для требуется активация в его профиле.
  4. Заполнить форму, содержащую основные параметры метода аутентификации через Telegram в соответствии с таблицей.
    ПараметрОписание

    Настройки привязки фактора

    Разрешить Inline-привязку с помощью других факторов

    Чекбокс "Разрешить Inline-привязку с помощью других факторов":

    • при установленном флажке разрешена интерактивная Inline-привязка разрешена; 
    • при установленном флажке запрещена Inline-привязка фактора.

    Настройки Telegram

    Название метода отображаемое пользователям

    Ввести название метода для отображения пользователям.

    Ключ-тэг

    Уникальный тэг (используется для ориентации в логах).

    Токен Телеграм

    Значение токена (получается от бота).

    Требуется ввести сохраненную при создании бота строку, следующую за сообщением «Use this token to access the HTTP API:».

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

    Заполнить чекбокс:

    • при установленном флажке данный экземпляр Avanpost FAM будет использовать отдельный Telegram-сервис;
    • при выключенном флажке один Telegram-сервис может использоваться совместно с другими экземплярами Avanpost FAM.
  5. Нажать "Сохранить" для сохранения настроенного метода (для возврата на предыдущий шаг нажать "Назад", для отказа от создания нового метода нажать "Отмена").

Чтобы отредактировать параметры настроенного метода требуется войти в его профиль (нажать на его название в реестре методов: режим "Сервис" - вкладка "Настройки методов аутентификации") и нажать . Для удаления метода в профиле следует нажать и подтвердить выбор.

Настройка параметров аутентификации методом Telegram (для FAM до версии 1.12)

До версии 1.12 FAM требуется настроить параметры секции telegram в конфигурационном файле config.json (для Avanpost FAM 1.7 и ранее) или config.toml (для Avanpost FAM 1.8+)

  1. Открыть файл /opt/idp/config.toml (или config.json для версий Avanpost FAM 1.7 и более ранних) на редактирование, использовав любой доступный в ОС текстовый редактор (в примере использован редактор vi).
vi /opt/idp/config.toml

2. В секции telegram задать необходимые настройки. Полный перечень параметров с их описанием доступен в Таблице 2. Пример настроенной секции:

[telegram] 
accessToken = 'TELEGRAM_TOKEN'        
authLifeTimeSeconds = 60
inlineBindingEnable = true 
listenerGetUpdatesTimeout = 60
senderTimeoutMilliSeconds = 1
verificationLifeTimeInSeconds = 60

Таблица 2. Описание параметров настройки метода аутентификации через Telegram для конфигурационного файла

ПараметрОписание

accessToken

Значение токена, указывается в кавычках

authLifeTimeSeconds

Время жизни авторизации в секундах 

inlineBindingEnable

Флаг, указывающий, разрешено ли использование inline-привязки в Telegram для процесса аутентификации 

listenerGetUpdatesTimeout

Время ожидания (в секундах) для получения Системой обновлений от Telegram-бота

senderTimeoutMilliSeconds

Время ожидания (в миллисекундах) для отправки сообщений

verificationLifeTimeInSeconds

Время жизни верификации в секундах, которое определяет, сколько времени есть у пользователя на подтверждение операции

Настройка параметров аутентификации методом Telegram (для FAM версии 1.12 и выше)

Для настройки аутентификации через Telegram в случаях, когда с телеграм-ботом взаимодействует несколько сервисов Avanpost FAM Server, требуется настройка дополнительных параметров в конфигурационном файле.

Таблица 3. Параметры настройки метода аутентификации через Telegram с несколькими сервисами FAM Server для конфигурационного файла

ПараметрОписание

accessToken

Значение токена (бота), указывается в кавычках.

botTimeout

Время таймаута (в секундах) при неактивности телеграм-бота (например, при значении botTimeout = 30 время составит 30 секунд).

electionServices

Перечень сервисов Avanpost FAM Server, взаимодействующих с данным токеном.

electionTimeout

Время (в секундах), которое должно пройти до того момента, когда сервис Avanpost FAM Server начнет обращаться к другим сервисам Avanpost FAM Server (указаны в параметре electionServices), чтобы получить информацию о том, какой из сервисов занял токен.

backAddress

Адрес телеграм-сервиса.

После развертывания Avanpost FAM Server в папке cmd/tg_service содержится файл config.example.toml, который рекомендуется использовать в качестве примера для конфигурационного файла config.toml


Обсуждение