Avanpost FAM/MFA+ : 4.3.3. Установка FAM Mobile Services в ОС Linux из tar.gz-архива


Общие сведения

Данная инструкция применима к любой ОС 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.

Шаги для установки:

  1. Получить архив Avanpost.Mobile.Push.Service.*.tar.gz версии, соответствующей версии компонента Avanpost FAM Server.
  2. Распаковать файлы архива 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, до адресов:

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

Настройку FAM Push Service выполнять следующим образом:

  1. Используя любой текстовый редактор, отредактировать файл с настройками (допускается использовать любой текстовый редактор, доступный в системе; в данном примере работа ведется на основе использования редактора vi).
    sudo vi /etc/systemd/system/pushgwsrv.service
  2. Указать актуальные значения параметров:
    ПараметрЗначение
    [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
  3. Убедиться, что необходимые порты открыты в межсетевом экране firewalld (в противном случае сервис окажется недоступен извне).
  4. Перезапустить службы:
    sudo systemctl daemon-reload
    sudo systemctl restart pushgwsrv
  5. По результатам выполненной настройки компонента 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 выполнять следующим образом:

  1. Используя любой текстовый редактор, отредактировать файл с настройками (при желании можно использовать любой текстовый редактор, доступный в системе; в данном примере работа ведется на основе использования редактора vi).
    sudo vi /etc/systemd/system/authproxy.service
  2. Указать актуальные значения параметров:
    ПараметрЗначение
    [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
  3. Убедиться, что необходимые порты открыты в межсетевом экране firewalld (в противном случае сервис окажется недоступен извне).
  4. Перезапустить службы:
    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):

  1. В административной консоли в режиме "Сервис" перейти в раздел "Настройки методов аутентификации".
  2. Нажать кнопку "Добавить метод аутентификации".
  3. Настроить параметры согласно таблице и нажать "Далее". 
    ПараметрЗначение
    НазваниеУказать произвольное название (например, «Avanpost Authenticator»).
    Фактор аутентификацииВыбрать «Avanpost Authenticator».
    Метод активенУстановить флаг.
  4. На следующем шаге указать параметры работы метода аутентификации согласно таблице (дополнительной информации о параметрах представлена в статье Настройка метода Avanpost Authenticator):
    ПараметрЗначение
    Ключ-тэгУказать любой уникальный удобный идентификатор, состоящий из букв латинского алфавита и цифр (значение будет фигурировать в журналах).
    Метод активенУстановить флаг.
    Мобильные сервисы включены и доступны для пользователейУстановить флаг.
    Адрес push-сервисаВвести значение: baddr:bport Push Service.
    Email службы технической поддержки

    Ввести контактную информацию и сообщение для пользователей.

    Во избежание возникновения ошибки данные поля должны быть заполнены.


    Телефон службы технической поддержки
    Сообщение для пользователей

    DNS-имя (хост), используемое в качестве внешнего URL-адреса для подключения мобильного приложения Avanpost Authenticator, не должно содержать символа подчёркивания (_). Согласно стандарту DNS (RFC 1035), имена хостов должны соответствовать правилам LDH (только латинские буквы, цифры и дефис).

  5. Нажать кнопку "Сохранить".
  6. В разделе "Настройки методов аутентификации" перейти в профиль настроенного метода и задать следующие параметры. 
    ПараметрЗначение
    Внешний URL-aдрес

    Ввести один из следующих вариантов:

    • Если компонент API Service развёрнут без последующего проксирования через внешний сетевой интерфейс, то установить значение параметра faddr:fport API Service; 
    • Если компонент не развёрнут, то установить значение параметра base_url из основного конфигурационного файла компонента Avanpost FAM Server config.toml.
    Токен для подключения к API-сервисуЗначение, указанное ранее для параметра token для запуска компонента API Service.
  7. Дождаться автоматического перезапуска обработчиков: после завершения настройки и включения метода аутентификации (процесс может занять от нескольких секунд до 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"
    }
},
...


Обсуждение