Indeed AM Express Provider
Indeed AM Express Provider предназначен для аутентификации пользователей через push-уведомления в мессенджере eXpress. Процесс аутентификации выглядит следующим образом: бот отправляет запрос на подтверждение входа в приложение-мессенджер, где пользователь может подтвердить или отклонить попытку входа.
Для установки и настройки Express Provider необходимы следующие компоненты:
- Express Service — веб-сервер, выполняющий роль прокси между Access Manager и Express Bot
- Express Bot — веб-сервер для взаимодействия с Express Service и мессенджером eXpress (CTS)
{EC5B9E55-CF50-43D8-BAC8-19ECDC2B2BE7}
Установка и настройка провайдера
В инфраструктуре с несколькими серверами Core Server установите провайдер на каждом из них.
Для корректной работы провайдера Express убедитесь, что установлен только один экземпляр Express Service, даже если в инфраструктуре используется несколько серверов Core Server.
Предварительные требования
Перед установкой и настройкой Indeed AM Express Provider убедитесь, что:
- Настроена интеграция с Corporate Transport Server (CTS) и создан бот в CTS
- У пользователя указан email в каталоге пользователей — поиск пользователя для регистрации производится по email
Настройка переменных окружения
Внесите изменения в переменных окружения в зависимости от того, где вы планируете установить Express Service.
- На одном хосте с Core Server
- На отдельном хосте
- Откройте файл am/.env.
- В переменной
COMPOSE_PROFILESдобавьте значенияexpress,express-service,express-bot. - В переменной
COMPOSE_FILEдобавьте значенияexpress-bot.docker-compose.ymlиexpress-service.docker-compose.yml. - Сохраните изменения.
На хосте с Core Server:
- Откройте файл am/.env.
- В переменной
COMPOSE_PROFILESдобавьте значениеexpress. - Сохраните изменения.
На хосте с Express Service:
- Откройте файл am/.env.
- В переменной
COMPOSE_PROFILESдобавьте значенияexpress-service,express-bot. - В переменной
COMPOSE_FILEдобавьте значенияexpress-bot.docker-compose.ymlиexpress-service.docker-compose.yml. - Сохраните изменения.
Настройка Core Server
На хосте с Core Server откройте файл core-server.docker-compose.yml.
В секции
depends_onраскомментируйте строки:# auth-express:
# condition: service_completed_successfullyВ секции
volumesраскомментируйте следующие строки:# - auth-express:/opt/Indeed-Id/Providers/.net/Express:ro,Z# - ./ssl/client/express-client.pfx:/tmp/am_user/.dotnet/corefx/cryptography/x509stores/my/express-client.pfx:ro,Z
Раскомментируйте всю секцию:
# auth-express:
# container_name: auth-express
# image: nexus.indeed-id.hq:5050/am/core-server/auth/express:${TAG}
# profiles:
# - express
# extends:
# file: common-services.docker-compose.yml
# service: auth-provider-base
# volumes:
# - auth-express:/opt/Indeed-Id/Providers/.net/Express:roВ следующей далее секции
volumesраскомментируйте строку:# auth-express:Сохраните изменения.
Загрузка Docker-образов
Загрузите Docker-образы Express из дистрибутива:
cd am_images
for f in express*.tar.gz; do docker load -i "$f"; done
Генерация служебных сертификатов
Создайте служебные сертификаты для защиты коммуникации между компонентами.
При установке компонентов на разных хостах убедитесь, что необходимые сертификаты размещены на каждом хосте согласно инструкции.
Чтобы сгенерировать сертификат Express Service, запустите следующий скрипт на хосте с Express Service:
bash ./generateExpressCert.shРезультат:
- Создается сертификат am/ssl/client/express-client.pfx. Отпечаток сертификата автоматически подставляется в конфигурационный файл Express Service app-settings.json.
- Генерируется приватный ключ
express.keyи отображается отпечаток сертификата. Сохраните отпечаток — он понадобится при настройке провайдера в Management Console.
После генерации:
- Добавьте express-client.pfx на хост с Core Server в каталог am/ssl/client
- Добавьте express-client.pfx на хост с Express Bot в каталог am/ssl/client.
На хосте, где планируется установка Express Bot, запустите следующий скрипт:
bash ./generateExpressBotCert.shРезультат:
В каталоге /am/ssl/client создаются сертификаты express-bot-client-key.pem, express-bot-client.pem, express-bot-client.pfx.
Сертификаты express-bot-client-key.pem и express-bot-client.pem понадобятся при настройке бота в CTS.
Генерируется приватный ключ
express-bot.keyи отображается отпечаток сертификата.
После генерации:
- Укажите отпечаток сертификата в конфигурационном файле Express Service app-settings.json в секции
Bot:Connection:ClientCertificateThumbprint. - Добавьте сертификат express-bot-client.pfx на хост с Express Service в каталог am/ssl/client.
На хосте с Core Server запустите следующий скрипт:
bash ./generateCoreCert.shРезультат: генерируется клиентский сертификат, который автоматически добавляется в конфигурационный файл Core Server.
После генерации:
- Укажите отпечаток сертификата в конфигурационном файле Express Service app-settings.json в секции
AuthenticationServer:ClientCertificate. - Добавьте клиентский сертификат на хост с Express Service в каталог am/ssl/client.
- Укажите отпечаток сертификата в конфигурационном файле Express Service app-settings.json в секции
На хостах с Express Service и Express Bot сгенерируйте HTTPS-сертификаты контейнеров для использования внутри сети Docker:
bash ./generateHttpsCerts.shРезультат: в конфигурационных файлах Express Service и Express Bot автоматически заполняется поле
Server:Certificates.После генерации: в параметре
Bot:Connection:ServerCertificateThumbprintукажите отпечаток сертификатаreverse_proxy_server.pem.На хостах с Core Server, Express Service и Express Bot сгенерируйте сертификаты, которым будут доверять контейнеры:
sudo bash ./prepareCaFile.shРезультат: создаются сертификаты am/ssl/ca/trusted_ca.crt, которые содержат список всех добавленных в am/ssl/ca сертификатов открытого ключа. Сертификат trusted_ca.crt, полученный на хосте с Express Bot, потребуется для настройки бота в CTS.
ПримечаниеПри изменении состава каталога am/ssl/ca перезапустите скрипт prepareCaFile.sh.
Настройка бота в CTS
- Создайте бота в CTS.
- Добавьте сертификаты:
trusted_ca— персональный SSL CA-сертификат BotXexpress-bot-client-key.pem— клиентский SSL приватный ключ BotXexpress-bot-client.pem— клиентский SSL сертификат BotX
- Сохраните ID бота и Секретный ключ — они понадобятся для настройки Express Bot.
Настройка HAProxy
На хосте с Express Service:
Откройте файл haproxy.cfg.
- Раскомментируйте:
- строку
# acl path-express-service path_beg -i /am/services/express - строку
# use_backend Express_Service_Backend if path-express-service - секцию
# Express_Service_Backend
- строку
- В блоке
FrontendHTTPsв строке сhttp-request reject unlessдобавьте:|| path-express-service.
- Раскомментируйте:
Откройте файл haproxy.docker-compose.yml и раскоментируйте:
# - express-service # Uncomment if you need an Express Service.Сохраните изменения.
На хосте с Express Bot:
Откройте файл haproxy.cfg.
- Раскомментируйте:
- строку
# aacl path-express-bot path_beg -i /am/bots/express - строку
# use_backend Express_Bot_Backend if path-express-bot - секцию
# Express_Bot_Backend
- строку
- В блоке
FrontendHTTPsв строке сhttp-request reject unlessдобавьте:|| path-express-bot.
- Раскомментируйте:
Откройте файл haproxy.docker-compose.yml и раскоментируйте:
# - express-bot # Uncomment if you need an Express Bot.Сохраните изменения.
Настройка Express Service
- Откройте файл express-service/app-settings.json.
- В секции
ExpressServiceукажите:TrustedId— произвольный уникальный идентификатор
- В секции
AuthenticationServer:ServiceAccountName— имя сервисного пользователя (в формате PrincipalName) с правами глобального администратора Access Manager, от имени которого будут регистрироваться аутентификаторыServiceAccountPassword— пароль сервисного пользователяTrustedId— произвольный уникальный идентификатор
- В секции
Botукажите:URL— URL-адрес Express Bot (например,https://express-bot.com/am/bots/express)TrustedId— произвольный уникальный идентификатор
- Сохраните изменения.
Настройка Docker Compose для Express Service:
- Откройте файл express-service.docker-compose.yml.
- Раскомментируйте строки:
# ./ssl/client/core-client.pfx:/tmp/am_user/.dotnet/corefx/cryptography/x509stores/my/core-client.pfx:ro,Z
# ./ssl/client/express-bot-client.pfx:/tmp/am_user/.dotnet/corefx/cryptography/x509stores/my/express-bot-client.pfx:ro,Z - Сохраните изменения.
Настройка Express Bot
Убедитесь, что системное время на хостах с Express Bot и CTS синхронизировано.
- Откройте файл express-bot/app-settings.json.
- В секции
ExpressBotукажите:TrustedId— тот же идентификатор, что указан в конфигурации Express Service в параметреBot:TrustedId
- В секции
ExpressService:URL— URL-адрес Express Service (например,https://express-service.com/am/services/express)TrustedId— тот же идентификатор, что указан в конфигурации Express Service в параметреExpressService:TrustedId
- В секции
Botsукажите:BotId— идентификатор бота из CTSCtsUrl— URL-адрес CTSSecretKey— секретный ключ бота из CTS
- Сохраните изменения.
Настройка Docker Compose для Express Bot:
- Откройте файл express-bot.docker-compose.yml.
- Раскомментируйте строку:
# ./ssl/client/express-client.pfx:/ssl/express-client.pfx:ro,Z - Сохраните изменения.
Настройка в Management Console
Для настройки Express Provider в Management Console перейдите в раздел Конфигурация → Аутентификаторы и выберите аутентификатор Express.
Основные настройки
В секции Основные настройки укажите следующие параметры:
- Доверенный ID Access Manager — укажите доверенный идентификатор из конфигурационного файла Express Service, параметр
AuthenticationServer:TrustedId. - Отпечаток клиентского сертификата — укажите отпечаток сертификата, полученный при выполнении скрипта
generateExpressCert.sh. - URL-адрес Express Service — укажите URL-адрес Express Service (например,
https://express-service.com/am/services/express). - Доверенный ID — укажите доверенный идентификатор из конфигурационного файла Express Service, параметр
ExpressService:TrustedId. - Отпечаток серверного сертификата — укажите отпечаток серверного сертификата, если требуется дополнительная проверка.
Права доступа
Чтобы выдать или отозвать права на использование аутентификатора:
- В секции Основные настройки:
- В настройке Запретить использовать укажите, может ли пользователь использовать или регистрировать выбранный аутентификатор.
- В секции Доступные пользователю действия:
- В настройке Регистрация новых аутентификаторов укажите, может ли пользователь регистрировать новые аутентификаторы.
- В настройке Редактирование имеющихся аутентификаторов укажите, может ли пользователь изменять зарегистрированные аутентификаторы.
- В настройке Удаление имеющихся аутентификаторов укажите, может ли пользователь удалять зарегистрированные аутентификаторы.
Блокировка аутентификатора
Чтобы настроить блокировку аутентификатора, в секции Настройки блокировки аутентификатора:
- Разрешите или заблокируйте использование Express в случае серии неудачных попыток аутентификации.
- В поле Количество попыток аутентификации до блокировки укажите, сколько раз пользователь может совершить неудачную аутентификацию до блокировки способа аутентификации.
- В поле Сброс счетчика блокировки укажите, сколько минут должно пройти после неудачной попытки аутентификации перед сбросом счетчика.
- В поле Таймаут до разблокировки способа входа укажите, через сколько минут заблокированный способ аутентификации станет снова доступным.
Регистрация аутентификатора в боте
Для использования Express пользователь должен зарегистрировать аутентификатор в боте:
- Откройте мессенджер и найдите бота по имени, которое вы указывали при создании в CTS.
- Нажмите кнопку Начать или отправьте команду
/register. - Поиск пользователя производится по email из каталога пользователей.
- Следуйте инструкциям бота для завершения регистрации.
После регистрации пользователь сможет подтверждать попытки входа через push-уведомления в мессенджере.
Проверка состояния сервера
Для проверки рабочего состояния сервера в контейнере Docker используйте метод Healthcheck:
/am/services/express/healthcheck/isHealthy
/am/bots/express/healthcheck/isHealthy