Indeed AM Telegram Provider
Indeed AM Telegram Provider предназначен для аутентификации пользователей с помощью следующих технологий:
- одноразовые пароли;
- push-уведомления с запросом подтвердить или отклонить вход.
Одноразовые пароли и push-уведомления пользователи получают через бота в мессенджере Telegram.
Telegram Provider может быть использован для аутентификации в следующих модулях:
- Identity Provider,
- ADFS Extension,
- FreeRADIUS Extension (только в режиме отправки одноразовых паролей),
- LDAP Proxy.
Для работы компонента требуется доступ к серверам Telegram для сервисной службы и для провайдера.
{CA4645CC-5896-485E-A6CA-011FCC20DF1D}
Порядок установки
Чтобы настроить Telegram Provider:
- Установите сервисную службу и провайдер.
- Настройте атрибут с номером телефона.
- Создайте бот в приложении Telegram.
- Настройте сервисную службу.
- Задайте настройки в Management Console.
- Зарегистрируйте аутентификатор.
Установка сервисной службы и провайдера Telegram
Если в инфраструктуре используется несколько серверов Core Server, то установку провайдера необходимо выполнить на всех серверах инфраструктуры.
- На сервере с Linux
- На клиентских машинах с Windows
Чтобы установить Telegram на сервере с операционной системой Linux:
Откройте файл am/.env.
Для установки сервисной службы Telegram Service:
- В переменной
COMPOSE_PROFILES
добавьте значениеtelegram-service
, если оно отсутствует. - В переменной
COMPOSE_FILES
добавьте значениеtelegram-service.docker-compose.yml
, если оно отсутствует.
ВажноДля корректной работы провайдера Telegram убедитесь, что установлен только один экземпляр Telegram Service, даже если в инфраструктуре используется несколько серверов Core Server.
- В переменной
Для установки провайдера Telegram в переменной
COMPOSE_PROFILES
добавьте значенияtelegram-otp
, если оно отсутствует.Сохраните файл.
Чтобы установить провайдер на клиентских машинах с операционной системой Windows:
- Запустите файл для установки, расположенный по пути Indeed AM <Номер версии>\Indeed AM Providers\Indeed AM Telegram OTP Provider\<Номер версии>.
Если в инфраструктуре используется несколько Core Server, установите провайдер на всех серверах инфраструктуры.
- Если программа установки предлагает выполнить перезагрузку, подтвердите данное действие. После завершения установки может потребоваться перезагрузка системы.
Удаление/Восстановление продукта осуществляется стандартным для поддерживаемых ОС способом, через меню Панель управления.
Файлы шаблонов политик расположены в папке Indeed AM <номер версии>\Misc\ADMX Templates.
Настроить атрибут с номером телефона
Чтобы использовать провайдер, задайте номер телефона в атрибуте пользователя службы каталогов. По умолчанию это атрибут telephoneNumber
. Также можно настроить любой другой атрибут. Если номер не задан, использовать провайдер будет невозможно.
Создать бот
Откройте приложение Telegram, найдите специального бота @botfather и откройте диалог с ботом.
Нажмите Start и отправьте команду
/newbot
.Укажите имя создаваемого бота. Данное название будет отображаться в окне диалога с ботом. Введите любое имя, например IndeedOTP.
Укажите имя пользователя для аккаунта с ботом с bot в конце, например IndeedOTP_bot. Данное имя пользователя используется для ссылок на бота.
При успешной регистрации отобразится токен для доступа к API. Данный токен потребуется для настройки службы AM Telegram Service и бота в Management Console.
Настроить сервисную службу
Для настройки службы нужен сервисный пользователь c правами глобального администратора Indeed AM. От имени этого пользователя будут регистрироваться аутентификаторы. В целях безопасности рекомендуется создать в каталоге пользователей отдельного пользователя для регистрации Telegram Provider.
Чтобы настроить службу Telegram Service:
Откройте для редактирования файл am/telegram-service/app-settings.json.
ПримечаниеДля редактирования файла am/telegram-service/app-settings.json рекомендуется использовать текстовые редакторы Nano или Visual Studio Code.
Задайте значения для следующих параметров:
Token
— токен, полученный при создании бота в Telegram.Username
— имя сервисного пользователя с правами глобального администратора Indeed AM, от имени которого будет осуществляться регистрация аутентификаторов.Password
— пароль сервисного пользователя.TrustedId
— произвольный уникальный идентификатор. Значение идентификатора должно совпадать с тем, что указано в настройке Доверенный ID Telegram Service в Management Console.- (Опционально)
UseProxy
,ProxyAddress
— заполните при использовании прокси сервера.
Пример app-settings.json
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"Localization": {
"DefaultCulture": "ru-RU"
},
"Bot": {
"Token": "8042256635:AAF-AIINR5CzlfP2PFZr3cr5__jA7zubHIw",
"UseProxy": false,
"ProxyAddress": ""
},
"AuthenticationServer": {
"Username": "telegrambot@test.local",
"Password": "Q1w2e3r4",
"Lognames": "Name",
"TrustedId": "11111"
},
"Audit": {
"LogServer": {
"Buffer": {
"Location": "./EventCache",
"FlushInterval": "00:10:00"
}
}
}
}
Сохраните изменения и запустите контейнер с приложением с помощью команды
sudo docker-compose up -d
. Для применения изменений без перезапуска контейнера можно выполнить дополнительную настройку.ПримечаниеЕсли вы используете несколько Core Server, одновременно можно запустить службу только на одном из серверов.
Чтобы применить изменения am/telegram-service/app-settings.json без перезапуска контейнера:
Откройте для редактирования файл am/telegram-service.docker-compose.yml.
ПримечаниеДля редактирования файла рекомендуется использовать текстовые редакторы Nano или Visual Studio Code.
В разделе
environment
добавьте параметрDOTNET_USE_POLLING_FILE_WATCHER
со значением1
илиtrue
.Пример
environment:
AMTELEGRAM_AuthenticationServer__Url: "https://${ENDPOINT_NAME_CORE}/am/core"
AMTELEGRAM_Audit__LogServer__Url: "https://${ENDPOINT_NAME_LS}/ls/api"
DOTNET_USE_POLLING_FILE_WATCHER: "true"
Включить/Отключить шифрование конфигурационного файла
В терминале перейдите в каталог с утилитой для шифрования am/protection.
cd /am/protection
Выдайте права для запуска скрипта
protector.sh
.sudo chmod 500 protector.sh
Чтобы зашифровать конфигурационный файл, запустите скрипт
protector.sh
с параметромprotect
.sudo bash ./protector.sh protect
Чтобы расшифровать конфигурационный файл, запустите скрипт
protector.sh
с параметромunprotect
.sudo bash ./protector.sh unprotect
Задать настройки в Management Console
Для корректной работы провайдера задайте остальные настройки в Management Console. Для этого:
На боковой панели Management Console откройте раздел Конфигурация.
Перейдите на вкладку Аутентификаторы.
Выберите аутентификатор Telegram.
При необходимости задайте общие настройки.
В секции Настройки Telegram Service укажите произвольный уникальный идентификатор. Значение идентификатора должно совпадать с тем, что указано в конфигурационном файле службы am/telegram-service/app-settings.json.
В секции Режим работы выберите режим работы провайдера — Push или OTP.
В секции Настройки бота:
- В поле Идентификатор бота укажите токен, полученный при создании бота в Telegram.
- В поле Шаблон для сообщения настройте вид сообщения. Сообщение может содержать одноразовый код для входа в приложение, название приложения, имя пользователя, дату и время входа, IP-адрес компьютера, с которого выполняется вход.
Если вы планируете использовать Telegram Provider в режиме отправки одноразовых паролей, в секции Настройки генерации одноразового пароля:
- В поле Длина одноразового пароля укажите, сколько символов будет содержать одноразовый пароль.
- В настройке Цифры укажите, будет ли одноразовый пароль содержать цифры.
- В настройке Строчные латинские буквы укажите, будет ли одноразовый пароль содержать строчные латинские буквы;
- В настройке Прописные латинские буквы укажите, будет ли одноразовый пароль содержать прописные латинские буквы;
- В настройке Специальные символы укажите, будет ли одноразовый пароль содержать специальные символы.
При необходимости выполните следующие настройки:
Настройте работу Telegram Provider через прокси
В секции Настройки бота:
- В настройке Использовать прокси выберите Да. По умолчанию выбрано Нет.
- В поле Адрес прокси укажите адрес прокси-сервера.
Настройте защиту от спама
Механизм защиты от спама основан на расчете процента успешных аутентификаций относительно всех отправленных сообщений за указанный интервал времени. При этом расчет запускается, только если количество отправленных сообщений превышает количество, заданное вами в настройке Окно оценки.
При обнаружении спам-атаки дальнейшая отправка сообщений блокируется на заданный период времени, а при попытке входа возникает ошибка Potential spam attack detected.
Отправка сообщений возобновляется либо по истечении заданного периода, либо по достижении определенного количества (в процентном отношении) успешных аутентификаций.
Чтобы настроить защиту от спама, выполните следующее:
- В Management Console в разделе Конфигурация→Аутентификаторы выберите аутентификатор.
- В секции Настройки защиты от спама выполните следующие настройки:
- включите или отключите защиту от спама;
- в поле Окно оценки попыток аутентификации укажите, в течение какого времени будет выполняться расчет процента успешных попыток входа;
- в поле Пороговое окно попыток аутентификации укажите, сколько попыток входа должно производиться за время, указанное в окне оценки попыток аутентификации;
- в поле Процент успешных попыток аутентификации укажите минимальный процент успешных входов относительно всех отправленных сообщений.
Пример
Настройка включена со следующими значениями:- Окно оценки попыток аутентификации — 600
- Пороговое окно попыток аутентификации — 20
- Процент успешных попыток аутентификации — 85
Защита от спама включится, если произойдет 21 попытка входа (отправлено 21 сообщение). Произойдет блокировка аутентификатора на 600 секунд.
Аутентификатор разблокируется в одном из случаев:
- процент успешных входов (пользователь успешно ввел одноразовый пароль из сообщения) достигнет значения 85;
- прошло 600 секунд с момента блокировки.
ИнформацияСобытия лог-сервера:
2090: Обнаружена потенциальная спам-атака. Отправка сообщений приостановлена.
1118: Отправка сообщений пользователям возобновлена.
Зарегистрировать аутентификатор
При регистрации провайдера пользователь получит запрос номера телефона из аккаунта Telegram. Необходимо, чтобы номер телефона пользователя в каталоге пользователей полностью совпадал и был одного формата. Поддерживаемые форматы: +7xxxxxxxxxx или 8xxxxxxxxxx.
- Откройте чат с созданным ботом. Для этого введите в поисковой строке мессенджера имя вашего бота либо перейдите по ссылке из сообщения BotFather.
- Нажмите Start.
- Введите команду
/register
. - Введите номер телефона аккаунта Telegram.
- При успешной регистрации аутентификатора отобразится сообщение Вы были успешно зарегистрированы.