Перейти к основному содержимому
Версия: Indeed Access Manager 9.3

Indeed AM Telegram Provider

Indeed AM Telegram Provider предназначен для аутентификации пользователей с помощью следующих технологий:

  • одноразовые пароли;
  • push-уведомления с запросом подтвердить или отклонить вход.

Одноразовые пароли и push-уведомления пользователи получают через бота в мессенджере Telegram.

Telegram Provider может быть использован для аутентификации в следующих модулях:

Примечание

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

Идентификатор провайдера
{CA4645CC-5896-485E-A6CA-011FCC20DF1D}

Порядок установки

Чтобы настроить Telegram Provider:

  1. Установите сервисную службу и провайдер.
  2. Настройте атрибут с номером телефона.
  3. Создайте бот в приложении Telegram.
  4. Настройте сервисную службу.
  5. Задайте настройки в Management Console.
  6. Зарегистрируйте аутентификатор.

Установка сервисной службы и провайдера Telegram

Важно

Если в инфраструктуре используется несколько серверов Core Server, то установку провайдера необходимо выполнить на всех серверах инфраструктуры.

Чтобы установить Telegram на сервере с операционной системой Linux:

  1. Откройте файл am/.env.

  2. Для установки сервисной службы Telegram Service:

    1. В переменной COMPOSE_PROFILES добавьте значение telegram-service, если оно отсутствует.
    2. В переменной COMPOSE_FILES добавьте значение telegram-service.docker-compose.yml, если оно отсутствует.
    Важно

    Для корректной работы провайдера Telegram убедитесь, что установлен только один экземпляр Telegram Service, даже если в инфраструктуре используется несколько серверов Core Server.

  3. Для установки провайдера Telegram в переменной COMPOSE_PROFILES добавьте значения telegram-otp, если оно отсутствует.

  4. Сохраните файл.

Настроить атрибут с номером телефона

Чтобы использовать провайдер, задайте номер телефона в атрибуте пользователя службы каталогов. По умолчанию это атрибут telephoneNumber. Также можно настроить любой другой атрибут. Если номер не задан, использовать провайдер будет невозможно.

Создать бот

  1. Откройте приложение Telegram, найдите специального бота @botfather и откройте диалог с ботом.

  2. Нажмите Start и отправьте команду /newbot.

  3. Укажите имя создаваемого бота. Данное название будет отображаться в окне диалога с ботом. Введите любое имя, например IndeedOTP.

  4. Укажите имя пользователя для аккаунта с ботом с bot в конце, например IndeedOTP_bot. Данное имя пользователя используется для ссылок на бота.

  5. При успешной регистрации отобразится токен для доступа к API. Данный токен потребуется для настройки службы AM Telegram Service и бота в Management Console.

Настроить сервисную службу

Для настройки службы нужен сервисный пользователь c правами глобального администратора Indeed AM. От имени этого пользователя будут регистрироваться аутентификаторы. В целях безопасности рекомендуется создать в каталоге пользователей отдельного пользователя для регистрации Telegram Provider.

Чтобы настроить службу Telegram Service:

  1. Откройте для редактирования файл am/telegram-service/app-settings.json.

    Примечание

    Для редактирования файла am/telegram-service/app-settings.json рекомендуется использовать текстовые редакторы Nano или Visual Studio Code.

  2. Задайте значения для следующих параметров:

    • 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"
}
}
}
}
  1. Сохраните изменения и запустите контейнер с приложением с помощью команды sudo docker-compose up -d. Для применения изменений без перезапуска контейнера можно выполнить дополнительную настройку.

    Примечание

    Если вы используете несколько Core Server, одновременно можно запустить службу только на одном из серверов.

Чтобы применить изменения am/telegram-service/app-settings.json без перезапуска контейнера:

  1. Откройте для редактирования файл am/telegram-service.docker-compose.yml.

    Примечание

    Для редактирования файла рекомендуется использовать текстовые редакторы Nano или Visual Studio Code.

  2. В разделе 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"

Включить/Отключить шифрование конфигурационного файла

  1. В терминале перейдите в каталог с утилитой для шифрования am/protection.

    cd /am/protection
  2. Выдайте права для запуска скрипта protector.sh.

    sudo chmod 500 protector.sh
  3. Чтобы зашифровать конфигурационный файл, запустите скрипт protector.sh с параметром protect.

    sudo bash ./protector.sh protect
  4. Чтобы расшифровать конфигурационный файл, запустите скрипт protector.sh с параметром unprotect.

    sudo bash ./protector.sh unprotect

Задать настройки в Management Console

Для корректной работы провайдера задайте остальные настройки в Management Console. Для этого:

  1. На боковой панели Management Console откройте раздел Конфигурация.

  2. Перейдите на вкладку Аутентификаторы.

  3. Выберите аутентификатор Telegram.

  4. При необходимости задайте общие настройки.

  5. В секции Настройки Telegram Service укажите произвольный уникальный идентификатор. Значение идентификатора должно совпадать с тем, что указано в конфигурационном файле службы am/telegram-service/app-settings.json.

  6. В секции Режим работы выберите режим работы провайдера — Push или OTP.

  7. В секции Настройки бота:

    • В поле Идентификатор бота укажите токен, полученный при создании бота в Telegram.
    • В поле Шаблон для сообщения настройте вид сообщения. Сообщение может содержать одноразовый код для входа в приложение, название приложения, имя пользователя, дату и время входа, IP-адрес компьютера, с которого выполняется вход.
  8. Если вы планируете использовать Telegram Provider в режиме отправки одноразовых паролей, в секции Настройки генерации одноразового пароля:

    • В поле Длина одноразового пароля укажите, сколько символов будет содержать одноразовый пароль.
    • В настройке Цифры укажите, будет ли одноразовый пароль содержать цифры.
    • В настройке Строчные латинские буквы укажите, будет ли одноразовый пароль содержать строчные латинские буквы;
    • В настройке Прописные латинские буквы укажите, будет ли одноразовый пароль содержать прописные латинские буквы;
    • В настройке Специальные символы укажите, будет ли одноразовый пароль содержать специальные символы.
  9. При необходимости выполните следующие настройки:

    Настройте работу Telegram Provider через прокси

    В секции Настройки бота:

    • В настройке Использовать прокси выберите Да. По умолчанию выбрано Нет.
    • В поле Адрес прокси укажите адрес прокси-сервера.
    Настройте защиту от спама

    Механизм защиты от спама основан на расчете процента успешных аутентификаций относительно всех отправленных сообщений за указанный интервал времени. При этом расчет запускается, только если количество отправленных сообщений превышает количество, заданное вами в настройке Окно оценки.

    При обнаружении спам-атаки дальнейшая отправка сообщений блокируется на заданный период времени, а при попытке входа возникает ошибка Potential spam attack detected.

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

    Чтобы настроить защиту от спама, выполните следующее:

    1. В Management Console в разделе Конфигурация→Аутентификаторы выберите аутентификатор.
    2. В секции Настройки защиты от спама выполните следующие настройки:
      • включите или отключите защиту от спама;
      • в поле Окно оценки попыток аутентификации укажите, в течение какого времени будет выполняться расчет процента успешных попыток входа;
      • в поле Пороговое окно попыток аутентификации укажите, сколько попыток входа должно производиться за время, указанное в окне оценки попыток аутентификации;
      • в поле Процент успешных попыток аутентификации укажите минимальный процент успешных входов относительно всех отправленных сообщений.
    Пример
    Настройка включена со следующими значениями:
    • Окно оценки попыток аутентификации — 600
    • Пороговое окно попыток аутентификации — 20
    • Процент успешных попыток аутентификации — 85

    Защита от спама включится, если произойдет 21 попытка входа (отправлено 21 сообщение). Произойдет блокировка аутентификатора на 600 секунд.

    Аутентификатор разблокируется в одном из случаев:

    • процент успешных входов (пользователь успешно ввел одноразовый пароль из сообщения) достигнет значения 85;
    • прошло 600 секунд с момента блокировки.
    Информация

    События лог-сервера:

    • 2090: Обнаружена потенциальная спам-атака. Отправка сообщений приостановлена.

    • 1118: Отправка сообщений пользователям возобновлена.

Зарегистрировать аутентификатор

Примечание

При регистрации провайдера пользователь получит запрос номера телефона из аккаунта Telegram. Необходимо, чтобы номер телефона пользователя в каталоге пользователей полностью совпадал и был одного формата. Поддерживаемые форматы: +7xxxxxxxxxx или 8xxxxxxxxxx.

  1. Откройте чат с созданным ботом. Для этого введите в поисковой строке мессенджера имя вашего бота либо перейдите по ссылке из сообщения BotFather.
  2. Нажмите Start.
  3. Введите команду /register.
  4. Введите номер телефона аккаунта Telegram.
  5. При успешной регистрации аутентификатора отобразится сообщение Вы были успешно зарегистрированы.