Indeed Phone Management Server
Indeed Phone Management Server (Phone Management Server ) — это веб-приложение, которое предоставляет облегченное API для регистрации, изменения и удаления номеров в базе данных SQL.
Для регистрации, изменения и удаления номеров в базе данных SQL требуется установка Indeed AM Storage SMS OTP Provider.
Установка Phone Management Server
Скачайте архив phone-management-<номер_версии>.tar.gz, загрузите его на целевой хост в необходимый каталог.
Перейдите в каталог с архивом и распакуйте его с помощью команды:
sudo tar -xf <имя архива>.tar.gz
Перейдите в каталог phone-management, куда распаковался архив, и импортируйте образ Docker с помощью команды:
sudo docker load -i <имя архива>.tar
Настройка сертификатов
В каталоге phone-management создайте каталог ssl/.
Добавьте в него следующие сертификаты:
- <серверный сертификат>.pfx — серверный сертификат, выписанный на DNS-имя машины.
- <публичный сертификат>.cer — публичный сертификат домена в формате Base64. Если публичный сертификат выдан не доменным удостоверяющим центром (УЦ), добавьте публичный сертификат стороннего УЦ.
Редактирование файла .env
Откройте файл phone-management/.env.
Задайте значения для следующих переменных:
- Для переменной
AM_UID
укажите идентификатор пользователя, под которым будет работать Access Manager в Docker. - Для переменной
AM_GID
укажите идентификатор группы, под которой будет работать Access Manager в Docker. - Для переменной
PHONE_SERVER_HTTPS_PORT
укажите номер порта для обращения к Phone Management Server. Значение по умолчанию — 5443, при необходимости его можно изменить. - Для переменной
PHONE_SERVER_CERTIFICATE
укажите имя серверного сертификата, который был размещен ранее в каталоге phone-management/ssl/. - Для переменной
PHONE_SERVER_CA
укажите имя публичного сертификата домена, который был размещен ранее в каталоге phone-management/ssl/.
- Для переменной
Редактирование конфигурационного файла
Для настройки Phone Management Server измените конфигурационный файл /phone-management/configs/app-settings.json.
Измените только параметры со значениями вида !!! описание !!!.
В разделе
PhoneManagement
задайте значения следующих параметров:В параметре
Username
укажите имя пользователя в формате UPN, созданного для работы с Phone Management Server. От имени этого пользователя будут выполняться запросы к API.В параметре
Password
укажите пароль пользователя, созданного для работы с Phone Management Server.В параметре
ReplaceUpdateWithCreate
задайте значениеfalse
илиtrue
. Если значениеtrue
, то вместо метода API Изменение для изменения номера телефона будут последовательно использоваться методы Удаление и Регистрация.
В разделе
AmServer
в параметреUrl
задайте адрес Core Server в формате https://полное_dns_имя_сервера/am/core.В разделе
LogServer
в параметреUrl
укажите адрес Log Server в формате https://полное_dns_имя_сервера/ls/api.В разделе
Documentation
в параметреEnabled
задайте значениеtrue
, чтобы включить доступ к UI API (Swagger).В разделе
Server
в параметреPassword
укажите пароль серверного сертификата.Пример
"Server": {
"Certificates": {
"Default": {
"Path": "/ssl/server.pfx",
// highlight-gray-next-line
"Password": "Password123"
}
}
},
Настройка прав
Перед запуском приложения выдайте права пользователю, под которым планируете запускать Phone Management Server в Docker. Для этого:
Создайте каталоги EventCache (хранение кеша), Logs (логи) и DataProtectionKeys (ключи шифрования), запустив из каталога /opt/phone-management следующую команду:
sudo mkdir \
EventCache/ Logs/ DataProtectionKeys/Сделайте владельцем пользователя, данные которого вы указали в файле .env в переменных
AM_UID
иAM_GID
, через следующую команду:sudo chown -R <идентификатор пользователя>:<идентификатор группы> ./*
Настройка политики
Политику необходимо настроить, чтобы предоставить сервисному пользователю необходимые права для работы с модулем.
- В Management Console перейдите на страницу основной политики, которая распространяется на целевых пользователей системы.
- Перейдите на вкладку Администраторы и добавьте сервисного пользователя для компонента Phone Management Server с ролью Администратор или Оператор.
Шифрование/расшифровка конфигурационного файла
- Шифрование
- Расшифровка
В терминале перейдите в каталог с утилитой для шифрования, расположенную в дистрибутиве Phone Management Server.
cd /phone-management/protection
Выдайте права для запуска скрипта
protector.sh
.sudo chmod 440 protector.sh
Чтобы зашифровать конфигурационный файл, запустите скрипт
protector.sh
с параметромprotect
.sudo bash ./protector.sh protect
Вернитесь в каталог /phone-management.
Измените права доступа на файлы с ключами.
sudo chmod 400 ./DataProtectionKeys/*
Сделайте владельцем ключей шифрования пользователя, под которым запускается Phone Management в Docker, указав данные из переменных
AM_UID
иAM_GID
.sudo chown -R <идентификатор пользователя>:<идентификатор группы> ./*
В терминале перейдите в каталог с утилитой для шифрования, расположенную в дистрибутиве Phone Management Server.
cd /phone-management/protection
Чтобы расшифровать конфигурационный файл, запустите скрипт
protector.sh
с параметромunprotect
.sudo bash ./protector.sh unprotect
Вернитесь в каталог /phone-management.
Измените права доступа на файлы с ключами.
sudo chmod 400 ./DataProtectionKeys/*
Сделайте владельцем ключей шифрования пользователя, под которым запускается Phone Management в Docker, указав данные из переменных
AM_UID
иAM_GID
.sudo chown -R <идентификатор пользователя>:<идентификатор группы> ./*
Запуск, удаление и обновление Phone Management Server
- Запуск
- Удаление
- Обновление
Чтобы запустить контейнер с приложением, выполните следующую команду:
sudo docker-compose up -d
Чтобы остановить приложение и удалить контейнер:
Выполните команду:
sudo docker-compose down -v
Удалите каталог с конфигурационными файлами любым удобным способом, например командой:
sudo rm -r phone-management
Чтобы обновить Phone Management Server:
Скачайте архив с новой версией.
Перейдите в каталог с архивом и распакуйте его с помощью команды:
sudo tar -xf <имя архива>.tar.gz
Перейдите в каталог, куда распаковался архив, и импортируйте образ Docker с помощью команды:
sudo docker load -i <имя архива>.tar
Отредактируйте файл .env.
Выполните команды остановки и запуска приложения:
Остановка приложения и удаление контейнераsudo docker-compose down -v
Запуск контейнера с приложениемsudo docker-compose up -d
Доступ к UI API
Чтобы получить доступ к UI Phone Management Server:
- Перейдите по адресу: http(s)://<полное DNS-имя сервера с компонентом Phone Management Server>/EAPhoneServer/swagger.
- Выполните авторизацию под пользователем, под которыми будет работать Access Manager в Docker. Укажите имя пользователя в формате UPN.
Методы API Phone Management Server
Входные данные передаются в формате JSON. Для вызова метода API используется URL в формате:
http/https://<полное DNS-имя сервера с компонентом Phone Management Server>/EAPhoneServer/<метод API>
Регистрация
Скрипт для работы с данным методом API доступен в этой статье базы знаний.
Для регистрации номера телефона используется POST-запрос к методу API:
/api/IID/CreatePhone
Входные данные:
- Username — имя пользователя в формате UPN, для которого нужно зарегистрировать номер телефона;
- Phone — номер телефона пользователя, который нужно зарегистрировать в системе;
Выходные данные: HTTP-ответ с кодом состояния HTTP;
Пример запроса:
- URL — http://AmIndeed.demo.local/EAPhoneServer/api/IID/CreatePhone
- Данные — ‘{ "Username": "User@demo.local", "Phone": "123456"}’
Успешная регистрация
В качестве примера используется формат имени PrincipalName, Sid.
При успешной регистрации провайдера генерируется событие с уникальным идентификатором 1088.
Тело события содержит:
- Описание — телефонный номер успешно зарегистрирован.
- Пользователь — в данном параметре указывается пользователь, для которого была выполнена регистрация. Формат имени пользователя задается в конфигурационном файле в параметре
LogNames
. - Инициатор — в данном параметре указывается пользователь, который указан в качестве администратора компонента Phone Management Server в конфигурационном файле. Формат имени пользователя задается в конфигурационном файле в параметре
LogNames
. - Пользователь API — в данном параметре указывается пользователь, который был аутентифицирован по обычной проверке подлинности (Basic Authentication) перед использованием метода API. Имя отображается в формате, который был указан при вводе в форму аутентификации.
- Телефон — в данном параметре отображается номер телефона пользователя, который будет зарегистрирован.
Ошибка при регистрации
В качестве примера используется формат имени PrincipalName, Sid.
При возникновении ошибки во время регистрации провайдера генерируется событие с уникальным идентификатором 2073.
Тело события содержит:
Описание — ошибка регистрации телефонного номера.
Пользователь — в данном параметре указывается пользователь, для которого была выполнена регистрация. Формат имени пользователя задается в конфигурационном файле в параметре
LogNames
.Инициатор — в данном параметре указывается пользователь, который указан в качестве администратора компонента Phone Management Server в конфигурационном файле. Формат имени пользователя задается в конфигурационном файле в параметре
LogNames
.Пользователь API — в данном параметре указывается пользователь, который был аутентифицирован по обычной проверке подлинности (Basic Authentication) перед использованием метода API. Имя отображается в формате, который был указан при вводе в форму аутентификации.
Описание ошибки — в данном параметре указывается более подробное описание возникшей ошибки.
Инициатор ошибки — в данном параметре указывается пользователь, по причине которого возникла ошибка.
Телефон — в данном параметре отображается номер телефона пользователя, который будет зарегистрирован.
ПримечаниеВ случае возникновения ошибки при входе в систему или возникновения ошибки доступа (403) в параметре Телефон будут отображаться данные сервисного пользователя.
Изменение
Если в конфигурационном файле Phone Management Server для параметра ReplaceUpdateWithCreate
задано значение true
, вместо этого метода будут последовательно использоваться методы удаления и регистрации номера телефона.
Скрипт по работе с данным методом API доступен в этой статье базы знаний.
Для изменения номера телефона используется POST-запрос к методу API:
/api/IID/UpdatePhone
Входные данные :
- Phone — номер телефона пользователя, который нужно зарегистрировать в системе;
- Username — имя пользователя в формате UPN, для которого нужно изменить номер телефона;
Выходные данные: HTTP-ответ с кодом состояния HTTP;
Пример запроса:
- URL — http://AmIndeed.demo.local/EAPhoneServer/api/IID/UpdatePhone
- Данные — ‘{ "Username": "User@demo.local", "Phone": "654321"}’
Успешное изменение
В качестве примера используется формат имени: Id, Name, PrincipalName.
При успешном изменении провайдера генерируется событие с уникальным идентификатором 1089.
Тело события содержит:
- Описание — телефонный номер успешно изменен.
- Пользователь — в данном параметре указывается пользователь, для которого была выполнена регистрация. Формат имени пользователя задается в конфигурационном файле в параметре
LogNames
. - Инициатор — в данном параметре указывается пользователь, который указан в качестве администратора компонента Phone Management Server в конфигурационном файле. Формат имени пользователя задается в конфигурационном файле в параметре
LogNames
. - Пользователь API — в данном параметре указывается пользователь, который был аутентифицирован по обычной проверке подлинности (Basic Authentication) перед использованием метода API. Имя отображается в формате, который был указан при вводе в форму аутентификации.
- Телефон — в данном параметре отображается измененный номер телефона пользователя.
Ошибка при изменении
При возникновении ошибки во время изменения провайдера генерируется событие с уникальным идентификатором 2074.
Тело события содержит:
Описание — ошибка изменения телефонного номера.
Пользователь — в данном параметре указывается пользователь, для которого была выполнена регистрация. Формат имени пользователя задается в конфигурационном файле в параметре
LogNames
.Инициатор — в данном параметре указывается пользователь, который указан в качестве администратора компонента Phone Management Server в конфигурационном файле. Формат имени пользователя задается в конфигурационном файле в параметре
LogNames
.Пользователь API — в данном параметре указывается пользователь, который был аутентифицирован по обычной проверке подлинности (Basic Authentication) перед использованием метода API. Имя отображается в формате, который был указан при вводе в форму аутентификации.
Описание ошибки — в данном параметре указывается подробное описание возникшей ошибки.
Инициатор ошибки — в данном параметре указывается пользователь, по причине которого возникла ошибка.
Телефон — в данном параметре отображается измененный номер телефона пользователя.
ПримечаниеВ случае возникновения ошибки при входе в систему или возникновения ошибки доступа (403) в параметре Телефон будут отображаться данные сервисного пользователя.
Удаление
Скрипт по работе с данным методом API доступен в этой статье базы знаний.
Для удаления номера телефона используется POST-запрос к методу API:
/api/IID/DeletePhone
Входные данные:
- Username — имя пользователя в формате UPN, для которого нужно удалить номер телефона;
Выходные данные: HTTP-ответ с кодом состояния HTTP;
Пример запроса:
- URL — http://AmIndeed.demo.local/EAPhoneServer/api/IID/DeletePhone
- Данные — ‘{ "Username": "User@demo.local"}’
Успешное удаление
В качестве примера используется формат имени: DistinguishedName, SamCompatibleName.
При успешном удалении провайдера генерируется событие с уникальным идентификатором 1090.
Тело события содержит:
- Описание — телефонный номер успешно удален.
- Пользователь — в данном параметре указывается пользователь, для которого был удален номер телефона. Формат имени пользователя задается в конфигурационном файле в параметре
LogNames
. - Инициатор — в данном параметре указывается пользователь, который указан в качестве администратора компонента Phone Management Server в конфигурационном файле. Формат имени пользователя задается в конфигурационном файле в параметре
LogNames
. - Пользователь API — в данном параметре указывается пользователь, который был аутентифицирован по обычной проверке подлинности (Basic Authentication) перед использованием метода API. Имя отображается в формате, который был указан при вводе в форму аутентификации.
Ошибка при удалении
При возникновении ошибки во время удаления провайдера генерируется событие с уникальным идентификатором 2075.
Тело события содержит:
Описание — ошибка удаления телефонного номера.
Пользователь — в данном параметре указывается пользователь, для которого был удален номер телефона. Формат имени пользователя задается в конфигурационном файле в параметре
LogNames
.Инициатор — в данном параметре указывается пользователь, который указан в качестве администратора компонента Phone Management Server в конфигурационном файле. Формат имени пользователя задается в конфигурационном файле в параметре
LogNames
.Пользователь API — в данном параметре указывается пользователь, который был аутентифицирован по обычной проверке подлинности (Basic Authentication) перед использованием метода API. Имя отображается в формате, который был указан при вводе в форму аутентификации.
Описание ошибки — в данном параметре указывается подробное описание возникшей ошибки.
Инициатор ошибки — в данном параметре указывается пользователь, по причине которого возникла ошибка.
ПримечаниеВ случае возникновения ошибки при входе в систему или возникновения ошибки доступа (403) в данном параметре будут отображаться данные сервисного пользователя.
Сбор логов
Информация по включению логирования и сбору логов компонента Phone Management Server находится в разделе Сбор логов серверных компонентов.