Общие сведения
Данная инструкция применима к любой ОС Linux, обладающей следующими характеристиками:
- Имеется systemd.
- Отсутствует файрволл либо корректно настроены его компоненты (SElinux и т.д.).
- Имеется возможность использования прокси-сервера (к примеру – Nginx) для обеспечения HTTPS/TLS.
Под компонентами Avanpost FAM Mobile Services понимаются два компонента:
- API Service, предоставляющий API для мобильных приложений Avanpost Authenticator (E-passport Mobile для iOS) сотрудников;
- Push Service, выполняющий роль брокера сообщений для доставки push-сообщений в приложения сотрудников Avanpost Authenticator (E-passport Mobile для iOS).
Типовая схема размещения компонентов Avanpost FAM Mobile Services с применением DMZ выглядит следующим образом:
Другие варианты развёртывания описаны в описании архитектуры компонента Avanpost FAM Mobile Services.
Установка и настройка
Установка файлов компонентов Avanpost FAM Mobile Services
Работы по установке компонентов Avanpost FAM Mobile Services выполняются на подготовленном сервере с ОС Linux.
Шаги для установки:
- Получить архив Avanpost.Mobile.Push.Service.*.tar.gz версии, соответствующей версии компонента Avanpost FAM Server.
- Распаковать файлы архива Avanpost.Mobile.Push.Service.*.tar.gz на предназначенном для этого сервере в DMZ в каталог /opt/push_gateway_service.
Настройка компонента Avanpost FAM Server
В конфигурационном файле на узле, на котором развёрнут Avanpost FAM Server, требуется проверить наличие параметра backgroundTasks в значении true в конфигурационном файле config.toml (начиная с версии FAM v1.8.7.346 меняется конфигурационный файл с config.json на config.toml).
Настройка компонента Push Service
Работы по настройке компонента Push Service выполняются на подготовленном сервере в DMZ, предназначенном для размещения компонентов Avanpost FAM Mobile Services.
В случае отсутствия DMZ возможно размещение компонента на сервере, на котором размещён компонент Avanpost FAM Server. В этом случае потребуется открыть с сервера с Avanpost FAM Server сетевой доступ через интернет до Google API-адресов, перечисленных ниже.
Для корректной работы Push Service и механизма push-уведомлений требуется сетевой доступ через интернет с сервера, на котором будет размещён компонент Push Service, до адресов:
https://fcm.googleapis.comhttps://firestore.googleapis.comhttps://oauth2.googleapis.comhttps://www.googleapis.comhttps://oauth-login.cloud.huawei.comhttps://push-api.cloud.huawei.com
Поэтому перед выполнением настройки необходимо убедиться, что эти сетевые адреса доступны через интернет с сервера, на котором размещается Push Service.
Настройку FAM Push Service выполнять следующим образом:
- Используя любой текстовый редактор, отредактировать файл с настройками (допускается использовать любой текстовый редактор, доступный в системе; в данном примере работа ведется на основе использования редактора vi).
sudo vi /etc/systemd/system/pushgwsrv.service
- Указать актуальные значения параметров:
Параметр Значение [Unit]
DescriptionОписание (наименование) сервиса. [Service]
WorkingDirectoryРабочая директория, в которой запускается процесс. ExecStartКоманда для запуска сервиса с указанием полного пути к исполняемому файлу и параметрами командной строки. Содержит следующие параметры:
- --addr – IP-адрес или хост, на котором требуется открытие сетевого порта для получения сетевых запросов от сервера Avanpost FAM; например – 0.0.1;
- --port – порт, к которому будет подключаться Avanpost FAM Server; по умолчанию – 4222
RestartПараметр настройки автоматического перезапуска сервиса (значение alwaysозначает, что сервис будет автоматически перезапускаться при любой причине остановки).RestartSecВремя ожидания (в секундах) перед перезапуском сервиса после его остановки. SyslogIdentifierИмя, под которым логи сервиса записываются в системный журнал (syslog). UserИдентификатор пользователя, от имени которого запускается процесс. Рекомендуется использовать специально созданного пользователя idp. [Install]
WantedByПараметр, указывающий, когда должен быть запущен сервис (по умолчанию multi-user.targetсервис будет запускаться автоматически при загрузке системы).[Unit] Description=Avanpost FAM Mobile Services Push [Service] WorkingDirectory=/opt/push_gateway_server ExecStart=/opt/push_gateway_server/push_gateway_server -addr 10.10.181.96 -port 4222 Restart=always RestartSec=10 SyslogIdentifier=pushgwsrv User=idp [Install] WantedBy=multi-user.target
- Убедиться, что необходимые порты открыты в межсетевом экране firewalld (в противном случае сервис окажется недоступен извне).
- Перезапустить службы:
sudo systemctl daemon-reload sudo systemctl restart pushgwsrv
- По результатам выполненной настройки компонента API Service следует зафиксировать параметры, которые потребуются на следующем шаге:
- addr:port Push Service.
Установка и настройка компонента API Service
Работы по установке компонента API Service выполняются на подготовленном сервере, предназначенном для размещения компонентов Avanpost FAM Mobile Services.
В случае отсутствия DMZ возможно отказаться от использования компонента API Service и использовать стандартный API-интерфейс, предоставляемый Avanpost FAM Server. Следует учитывать, что в этом случае могут возникнуть риски, связанные с прямой публикацией в интернет HTTP/HTTPS-интерфейсов Avanpost FAM Server.
Настройку FAM API Service выполнять следующим образом:
- Используя любой текстовый редактор, отредактировать файл с настройками (при желании можно использовать любой текстовый редактор, доступный в системе; в данном примере работа ведется на основе использования редактора vi).
sudo vi /etc/systemd/system/authproxy.service
- Указать актуальные значения параметров:
Параметр Значение [Unit]
DescriptionОписание (наименование) сервиса. [Service]
WorkingDirectoryРабочая директория, в которой запускается процесс. ExecStartКоманда для запуска сервиса с указанием полного пути к исполняемому файлу и параметрами командной строки. Содержит следующие параметры
- --baddr – Адрес интерфейса для входящих запросов от мобильного приложения. IP-адрес (в примере ниже указан как 127.0.0.1): по умолчанию не определён и должен быть заменён на актуальное значение.
- --bport – Порт внутреннего сетевого интерфейса, к которому будет обращаться компонент Avanpost FAM Server (или экземпляры компонента Avanpost FAM Server в случае использования кластеризованной схемы развёртывания). Порт по умолчанию – 9999.
- --faddr – Адрес внешнего сетевого интерфейса, к которому обращаются мобильные приложения Avanpost Authenticator (E-passport Mobile). IP-адрес по умолчанию не определён и должен быть заменён на актуальное значение.
- --fport – Порт внешнего сетевого интерфейса, к которому обращаются мобильные приложения Avanpost Authenticator (E-passport Mobile). Порт по умолчанию – 8888.
- --token – Cекретный токен, заданный на стороне компонента Avanpost FAM Server при настройке API Service.
Важно
В токене не должно содержаться кириллических символов, а также спецсимволов (~ . .. / # ? * [ ] ; & < > | ! $). Сам токен следует обрамлять одинарными кавычками в качестве дополнительной защиты (экранирование символов от использования их в качестве параметров командной строки).
- --skip-not-initial – Обязательный флаг для режима работы с несколькими FAM-узлами в отказоустойчивом исполнении. Обеспечивает агрегацию push-уведомлений и маршрутизацию запросов.
RestartПараметр настройки автоматического перезапуска сервиса (значение alwaysозначает, что сервис будет автоматически перезапускаться при любой причине остановки).RestartSecВремя ожидания (в секундах) перед перезапуском сервиса после его остановки. SyslogIdentifierИмя, под которым логи сервиса записываются в системный журнал (syslog). UserИдентификатор пользователя, от имени которого запускается процесс. Рекомендуется использовать специально созданного пользователя idp. [Install]
WantedByПараметр, указывающий, когда должен быть запущен сервис (по умолчанию multi-user.targetсервис будет запускаться автоматически при загрузке системы).[Unit] Description=Avanpost FAM Mobile Services API [Service] WorkingDirectory=/opt/authenticator_proxy ExecStart=/opt/authenticator_proxy/authenticator_proxy --baddr 127.0.0.1 --bport 9999 --faddr 127.0.0.1 --fport 8888 --token 111111111 Restart=always RestartSec=10 SyslogIdentifier=authproxy User=idp [Install] WantedBy=multi-user.target
- Убедиться, что необходимые порты открыты в межсетевом экране firewalld (в противном случае сервис окажется недоступен извне).
- Перезапустить службы:
systemctl daemon-reload systemctl enable authproxy systemctl start authproxy
Если требуется выполнить публикацию внутреннего сетевого интерфейса компонента API Service (определяемого параметрами addr:port компонента API Service) и внешнего сетевого интерфейса компонента API Service (определяемого параметрами faddr:fport компонента API Service) с применением TLS/HTTPS, то необходимо использовать любой веб-сервер с поддержкой требуемого уровня TLS, например, Nginx.
Avanpost FAM Server для взаимодействия с API Service использует механизм HTTP Long Polling с таймаутом в 30 секунд. Поэтому при использовании прокси-серверов, веб-серверов или межсетевых экранов между Avanpost FAM Server и API Service следует разрешить использование таймаутов для HTTP-запросов не менее 30 секунд.
По результатам выполненной настройки компонента API Service следует зафиксировать значения параметров, которые потребуются на следующем шаге:
- baddr:bport API Service;
- faddr:fport API Service;
- token API Service.
Настройка на стороне Avanpost FAM Server
Перед выполнением настройки следует убедиться, что с сервера Avanpost FAM доступен порт:
- addr:port Push Service;
- baddr:bport API Service.
Настройку компонента на стороне FAM Server необходимо выполнять следующим образом (для получения более подробной информации следует обратиться к статьям Управление аутентификацией и Настройка метода Avanpost Authenticator):
- В административной консоли в режиме "Сервис" перейти в раздел "Настройки методов аутентификации".
- Нажать кнопку "Добавить метод аутентификации".
- Настроить параметры согласно таблице и нажать "Далее".
Параметр Значение Название Указать произвольное название (например, «Avanpost Authenticator»). Фактор аутентификации Выбрать «Avanpost Authenticator». Метод активен Установить флаг. - На следующем шаге указать параметры работы метода аутентификации согласно таблице (дополнительной информации о параметрах представлена в статье Настройка метода Avanpost Authenticator):
Параметр Значение Ключ-тэг Указать любой уникальный удобный идентификатор, состоящий из букв латинского алфавита и цифр (значение будет фигурировать в журналах). Метод активен Установить флаг. Мобильные сервисы включены и доступны для пользователей Установить флаг. Адрес push-сервиса Ввести значение: baddr:bport Push Service.Email службы технической поддержки Ввести контактную информацию и сообщение для пользователей.
Во избежание возникновения ошибки данные поля должны быть заполнены.
Телефон службы технической поддержки Сообщение для пользователей DNS-имя (хост), используемое в качестве внешнего URL-адреса для подключения мобильного приложения Avanpost Authenticator, не должно содержать символа подчёркивания (_). Согласно стандарту DNS (RFC 1035), имена хостов должны соответствовать правилам LDH (только латинские буквы, цифры и дефис).
- Нажать кнопку "Сохранить".
- В разделе "Настройки методов аутентификации" перейти в профиль настроенного метода и задать следующие параметры.
Параметр Значение Внешний URL-aдрес Ввести один из следующих вариантов:
- Если компонент API Service развёрнут без последующего проксирования через внешний сетевой интерфейс, то установить значение параметра faddr:fport API Service;
- Если компонент не развёрнут, то установить значение параметра base_url из основного конфигурационного файла компонента Avanpost FAM Server config.toml.
Токен для подключения к API-сервису Значение, указанное ранее для параметра token для запуска компонента API Service. - Дождаться автоматического перезапуска обработчиков: после завершения настройки и включения метода аутентификации (процесс может занять от нескольких секунд до 1 минуты). Сервер Avanpost FAM самостоятельно считает новые параметры и выполнит переподключение, после чего механизм push-уведомлений будет доступен и начнет функционировать.
Проверка установки и настройки
На сервере с Avanpost FAM Server выполнить проверку подключения компонента Avanpost FAM Server к Push Service и API Service:
journalctl -ru fam
В журнале должны содержаться сообщения "External (firebase) store for tempcodes checked successful" и "Start long-polling avanpost authenticator proxy":
{"level":"debug","time":"2022-06-16T13:11:14+03:00","message":"Run reverse proxy server"}
{"level":"debug","time":"2022-06-16T13:11:14+03:00","message":"SSO server start..."}
<16> 1 2022-06-16T13:11:14+03:00 192.168.0.83 - SERVCTL [command="/opt/idp/fam" user_os="idp"] Service IDP started
{"level":"debug","factor":"avanpost authenticator","time":"2022-06-16T13:11:14+03:00","message":"External (firebase) store for tempcodes checked successful..."}
{"level":"debug","time":"2022-06-16T13:11:14+03:00","message":"Start long-polling avanpost authenticator proxy..."}
На стороне пользовательского сценария включить для любого из приложений метод аутентификации Avanpost Authenticator.
Приложение А. Примеры настроенных конфигураций Avanpost Mobile Services через административную консоль
Пример конфигурации №1. Установлены и настроены компоненты Push Service и API Service
Пример конфигурации №2. Установлен и подключен Push Service без API Service
Приложение Б. Настройка параметров через конфигурационный файл и примеры настроенных конфигураций
Для версий Avanpost FAM ранее 1.4 был доступен метод настройки параметров через конфигурационный файл без настройки через административную консоль.
Данный вариант настройки оставлен для обратной совместимости с ранними версиями Avanpost FAM и компонентов Avanpost FAM Mobile Services. При наличии возможности настройки параметров через административную консоль рекомендуется выполнить ручной перенос параметров Avanpost Authenticator в административную консоль, а секцию mobilePushConfig из конфигурационного файла config.toml удалить.
В этом случае на стороне основного серверного компонента Avanpost FAM Server открыть основной конфигурационный файл config.toml и на основе выполнить настройку секции mobilePushConfig:
- pushServiceEnable – установлено значение true;
- radiuWaitApproveInSeconds – установлено значение 15;
- brokerAddresss – установлено значение параметра addr:port Push Service;
- proxyService.enable – если компонент API Service развёрнут и планируется к применению, то установить значение true;
- proxyService.backendProxyURL – установлено значение параметра baddr:port API Service;
- proxyService.frontendProxyURL – если компонент API Service развёрнут без последующего проксирования через внешний сетевой интерфейс, то установить значение параметра faddr:fport API Service; если компонент не развёрнут, то установить значение параметра base_url из основного конфигурационного файла компонента Avanpost FAM Server config.toml;
- proxyService.token – установлено значение параметра token API Service.
Пример конфигурации
Пример настроенной секции mobilePushConfig в файле config.toml компонента Avanpost FAM Server при обращении приложения Avanpost Authenticator к API по IP-адресу:
...
"mobilePushConfig": {
"pushServiceEnable": true,
"radiusWaitApproveInSeconds": 15,
"brokerAddress": "localhost:4222",
"proxyService": {
"enable": true,
"backendProxyURL": "http://10.10.17.45:9999",
"frontendProxyURL": "http://95.31.144.35:8888",
"token": "tokenvalue12345678"
}
},
...


