Indeed AM Telegram Provider
Indeed AM Telegram Provider предназначен для аутентификации пользователей с помощью следующих технологий:
- одноразовые пароли;
- push-уведомления с запросом подтвердить или отклонить вход.
Одноразовые пароли и push-уведомления пользователи получают через бота в мессенджере Telegram.
Telegram Provider может быть использован для аутентификации в следующих модулях:
- Identity Provider,
- ADFS Extension,
- NPS Radius Extension (только в режиме отправки одноразовых паролей),
- IIS Extension
- Windows Logon (только в режиме отправки одноразовых паролей).
Для работы компонента требуется доступ к серверам Telegram для сервисной службы и для провайдера.
{CA4645CC-5896-485E-A6CA-011FCC20DF1D}
Предварительная настройка
Чтобы настроить Telegram Provider:
- Установите провайдер.
- Установите сервисную службу.
- Настройте атрибут с номером телефона.
- Создайте бот в приложении Telegram.
- Настройте сервисную службу.
- Задайте настройки в Management Console.
- Зарегистрируйте аутентификатор.
Установить провайдер
- Запустите файл для установки, расположенный по пути Indeed AM <номер версии>/Indeed AM Providers/Indeed AM Telegram OTP Provider/<номер версии>.
Если в инфраструктуре используется несколько Core Server, установите провайдер на всех серверах инфраструктуры.
- После завершения установки компонента нужно перезагрузить систему. В окне мастера установки нажмите Да, чтобы выполнить перезагрузку сразу, или Нет, чтобы сделать это позднее вручную.
Установить сервисную службу
Запустите файл IndeedId.Telegram.Service-<номер версии>.x86.ru-ru.msi, расположенный по пути Indeed AM <номер версии>/Indeed AM Providers/Indeed AM Telegram OTP Provider/.
После завершения установки компонента нужно перезагрузить систему. В окне мастера установки нажмите Да, чтобы выполнить перезагрузку сразу, или Нет, чтобы сделать это позднее вручную.
Настроить атрибут с номером телефона
Чтобы использовать провайдер, задайте номер телефона в атрибуте пользователя Active Directory. По умолчанию это атрибут telephoneNumber
. Также можно настроить любой другой атрибут. Если номер не задан, использовать провайдер будет невозможно.
Прежде чем приступить к настройке атрибута, обязательно расшифруйте и создайте резервную копию конфигурационного файла Core Server inetpub/wwwroot/am/core/Web.config.
Чтобы настроить атрибут с номером телефона:
- Через мастер конфигурации
- Через конфигурационный файл
- Запустите мастер конфигурации на компьютере с установленным Core Server: Пуск → Indeed Identity → Мастер конфигурации Indeed AM.
- Перейдите на вкладку Каталоги пользователей.
- Выберите каталог.
- Нажмите Изменить.
- Появится предупреждение, что если уменьшить область действия каталога или изменить домен, данные пользователей станут недоступны. Если вы уже расшифровали и сделали резервную копию файла inetpub/wwwroot/am/core/Web.config, нажмите ОК.
- В мастере конфигурации нажмите Настроить соответствие атрибутов.
- В поле Phone введите название атрибута пользователя в Active Directory, в котором указан номер телефона, например атрибут mobile.
- Дважды нажмите Сохранить.
- Перейдите на вкладку Подтверждение и нажмите Применить.
- После завершения настройки конфигурационного файла и проверки работоспособности закройте мастер.
Откройте конфигурационный файл Core Server inetpub/wwwroot/am/core/Web.config.
В раздел
adUserCatalogProvider
добавьте:<userMapRules>
<adObjectMapRule attribute="Phone" adAttribute="название_атрибута_в_Active_Directory"/>
<objectTypeSettings>
<objectSetting category="person" class="user"></objectSetting>
</objectTypeSettings>
</userMapRules>где:
attribute="Phone"
— название атрибута в Access Manager;adAttribute="название_атрибута_в_Active_Directory"
— название соответствующего атрибута в Active Directory, откуда будет браться значение номера телефона.
<adUserCatalogProvider id="userId" serverName="ind.loc" containerPath="DC=ind,DC=loc" userName="userAdmin" password="Q1q2E3e4">
<userMapRules>
<adObjectMapRule attribute="Phone" adAttribute="mobile"/>
<objectTypeSettings>
<objectSetting category="person" class="user"></objectSetting>
</objectTypeSettings>
</userMapRules>
</adUserCatalogProvider>
Создать бот
Откройте приложение Telegram, найдите специального бота @botfather и откройте диалог с ботом.
Нажмите Start и отправьте команду
/newbot
.Укажите имя создаваемого бота. Данное название будет отображаться в окне диалога с ботом. Введите любое имя, например IndeedOTP.
Укажите имя пользователя для аккаунта с ботом с bot в конце, например IndeedOTP_bot. Данное имя пользователя используется для ссылок на бота.
При успешной регистрации отобразится токен для доступа к API. Данный токен потребуется для настройки службы AM Telegram Service и бота в Management Console.
Настроить сервисную службу
Для настройки службы нужен сервисный пользователь c правами глобального администратора Indeed AM. От имени этого пользователя будут регистрироваться аутентификаторы. В целях безопасности рекомендуется создать в Active Directory отдельного пользователя для регистрации Telegram Provider.
Чтобы настроить службу Telegram Service:
Откройте конфигурационный файл службы AM.Telegram.Service.exe.config, расположенный по пути C:\Program Files(x86)\Indeed-Id\Indeed-Id Telegram Service.
Чтобы сохранить изменения в конфигурационном файле, запустите редактор с правами администратора.
В разделе
appSettings
задайте значения в параметрахvalue
для соответствующих параметровkey
:
culture | Язык локализации, поддерживается русский и английский. Значение по умолчанию — ru-RU. |
EAWebAPIURL | URL-адрес Core Server |
username | Имя сервисного пользователя с правами глобального администратора, от имени которого будут регистрироваться аутентификаторы. |
password | Пароль сервисного пользователя. |
lognames | Формат логирования имен пользователей. Значение по умолчанию — Name.Поддерживаемые форматы
add key="lognames" value="PrincipalName,Sid" |
botId | Токен, полученный при создании бота в Telegram. |
trustedId | Произвольный уникальный идентификатор. Значение идентификатора должно совпадать с тем, что указано в настройке Доверенный ID Telegram Service в Management Console. |
Пример отредактированного раздела appSettings
<appSettings>
<add key="culture" value="ru-RU" />
<add key="EAWebAPIURL" value="https://server.indeed.local/am/core/" />
<add key="username" value="telegram@indeed.local" />
<add key="password" value="Q1q2E3e4" />
<add key="lognames" value="Name" />
<add key="botId" value="1156320278:AAG24_EODMotm_feYYQOfbPddK_2Z_JDiKQ" />
<add key="trustedId" value="уникальный идентификатор, заданный при конфигурировании Telegram Service" />
</appSettings>
В разделе
logServer
укажите значения следующих параметров:в параметре
URL
укажите URL для подключения к Log Server в формате http(s)://полноеdnsимя_сервера/ls/api;если закрытый ключ в реестре, а сертификат в хранилище компьютера, укажите отпечаток сертификата в параметре
CertificateThumbprint
;если ключевая пара в pfx, укажите путь в параметре
CertificateFilePath
и пароль от pfx в параметреCertificateFilePassword
.Пример<logServer Url="https://logserver.indeed.local/ls/api/" CertificateThumbprint="ВАШ_ОТПЕЧАТОК_СЕРТИФИКАТА" CertificateFilePath="ПУТЬ_К_PFX" CertificateFilePassword="ПАРОЛЬ_ОТ_PFX" />
Сохраните изменения.
Запустите службу AM Telegram Service.
Как запустить службу
- Запустите диспетчер задач.
- В открывшемся окне нажмите Подробнее и перейдите на вкладку Службы.
- Найдите в списке AM Telegram Service, нажмите правой кнопкой мыши и выберите Запустить.
ПримечаниеЕсли вы используете несколько Core Server, одновременно можно запустить службу только на одном из серверов.
Задать настройки в Management Console
Для корректной работы провайдера задайте остальные настройки в Management Console. Для этого:
На боковой панели Management Console откройте раздел Конфигурация
Перейдите на вкладку Аутентификаторы.
Выберите аутентификатор Telegram.
При необходимости задайте общие настройки.
В секции Настройки Telegram Service укажите произвольный уникальный идентификатор. Значение идентификатора должно совпадать с тем, что указано в конфигурационном файле службы AM.Telegram.Service.exe.config.
В секции Режим работы выберите режим работы провайдера — 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. Необходимо, чтобы номер телефона пользователя в Active Directory полностью совпадал и был одного формата. Поддерживаемые форматы: +7xxxxxxxxxx или 8xxxxxxxxxx.
- Откройте чат с созданным ботом. Для этого введите в поисковой строке мессенджера имя вашего бота либо перейдите по ссылке из сообщения BotFather.
- Нажмите Start.
- Введите команду
/register
. - Введите номер телефона аккаунта Telegram.
- При успешной регистрации аутентификатора отобразится сообщение Вы были успешно зарегистрированы.