Начиная с Avanpost FAM Service версии 1.13.1 механизм Reverse Proxy реализуется при помощи отдельного MVP-модуля Avanpost Reverse Proxy Service. В статье рассмотрен вопрос установки и настройки данного компонента.
К моменту осуществления настройки должны быть выполнены следующие требования:
- В сети существуeт экземпляр Avanpost FAM Server;
- В сети или на одной машине с сервисами Avanpost FAM запущен NATS-сервер, к которому FAM и Reverse Proxy Service могут подключиться;
В ОС семейства Debian Linux должны быть установлены следующие программы:
- openssl
(программа управления сертификатами);- psql
(CLI-клиент из состава PostgreSQL);- nginx
(веб-сервер/прокси-сервер);- sudo
(программа выполнения команд от имени суперпользователя).
Установка и настройка FAM ReverseProxy
Установка компонента необходимо осуществлять следующим образом:
- Скачать и архив с актуальной версией Avanpost FAM Reverse Proxy Service из репозитория.
- Создать пользователя idp, используя следующую команду:
sudo useradd idp
- Создать отлельную папку сервиса, используя следующую команду:
sudo mkdir /opt/avanpost_reverseproxy
- Распаковать архив, используя следующую команду:
sudo tar -C /opt/avanpost_reverseproxy -xvzf /path_to_tar_file/avanpost_reverseproxy-1.0-4.linux.tar.gz
- Перейти в папку avanpost_reverseproxy, используя команду:
cd /opt/avanpost_reverseproxy/
- Скопировать стандартный конфигурационный файл FAM ReverseProxy, используя команду:
cp config.sample.toml config.toml
- Предоставить пользователю idp полные права на осуществление действий с созданной папкой при помощи команды:
sudo chown -R idp:idp /opt/avanpost_reverseproxy
- Создать файл сервиса для дальнейшего автоматического запуска, используя команду:
sudo nano /etc/systemd/system/reverseproxy.service
[Unit] Description=ReverseProxy [Service] WorkingDirectory=/opt/avanpost_reverseproxy ExecStart=/opt/avanpost_reverseproxy/reverseproxy_linux_amd64 Restart=always RestartSec=10 SyslogIdentifier=reverseproxy User=idp Environment="SSO_CFG=/opt/avanpost_reverseproxy/config.toml" [Install] WantedBy=multi-user.target
- Перезагрузить конфигурацию, используя команду:
sudo systemctl daemon-reload
По необходимости отредактировать конфигурационный файл
config.toml
приложениями (более подробно о настройке параметров описано в приложении Б).- Сконфигурировать веб-сервер nginx (более подробно процесс описан в разделе Настройка Reverse Proxy).
- Создать ReverseProxy-приложение в административной консоли Avanpost FAM Server (более подробно описано в разделе Управление Reverse Proxy-приложениями):
- Зайти во вкладку создания приложения, нажав кнопку "Добавить приложение" в сервисе "Приложения" административной консоли.
- На этапе "Основные настройки" ввести наименование и выбрать тип Reverse Proxy.
- На этапе "Настройки аутентификации" выбрать факторы аутентификации приложения, установив переключатели напротив тех или иных факторов.
- На этапе завершения настройки установить флажок "Сделать приложение активным" и сохранить.
- Добавить в конфигурационный файл Avanpost FAM Server следующие настройки (если в разделе
[reverseproxyServer]
настроены параметрыhost
иport
, заменить их параметромrunNatsServer
):[reverseproxyServer] runNatsServer=true [reverseproxyServer.nats] embedded = false connection = 'nats://localhost:4222' #serverCfgFile = '' #useTls = false #caCertPath = 'develop-cert-ca.pem' #certPath = '' #keyPath = '' #clientCertPath = 'develop-cert-client.pem' #clientKeyPath = 'develop-key-client.pem'
- Перезагрузить Avanpost FAM Server для применения настроек.
- Запустить FAM Reverse Proxy Service, используя команду:
sudo systemctl start reverseproxy
- Проверить, что ReverseProxy-сервер запущен и успешно подключается к Avanpost FAM Server. Для этого требуется просмотрев его лог (локация лог-файла определяется в конфигурационном файле согласно приложению А), в котором должна содержаться следующая запись:В случае если данной записи в логах нет, следует ознакомиться с ошибками в логах и вернуться на предыдущие шаги настройки.
{"level":"info","time":"2024-11-08T13:45:07+05:00","message":"Run reverse proxy server"}
Обновление FAM ReverseProxy
Обновление компонента Avanpost FAM ReverseProxy следует проводить следующим образом:
- Скачать и распаковать на рабочую машину обновленную версию Avanpost FAM ReverseProxy из репозитория.
- Остановить сервисы FAM ReverseProxy, используя команду:
sudo systemctl stop reverseproxy.service
- Удалить папку /public, используя команду:
sudo rm -r /opt/avanpost_reverseproxy/public/
- Используя скачанный файл, обновить компонент FAM Reverse Proxy Service при помощи команды:
tar -C /opt/avanpost_reverseproxy -xvzf /path_to_tar_file/avanpost_reverseproxy-*.linux.tar.gz
- Запустить FAM Reverse Proxy Service, используя команду:
sudo systemctl start reverseproxy.service
Приложение А. Параметры конфигурационного файла FAM Reverse Proxy config.sample.json
Параметр | Описание |
---|---|
[reverseproxyServer] | |
host | IP, на котором размещен сервер (0.0.0.0 для публичного доступа, localhost для локального) |
port | Порт, по которому доступен сервис |
lang | Язык шаблонов |
natsTimeoutSeconds | Таймаут запроса к FAM серверу |
syncTimeoutMinutes | Период синхронизации (в минутах) неключевой информации между FAM Server и FAM Reverse Proxy Service |
startupTimeoutSeconds | Время ожидания (в секундах) первого ответа от FAM Server перед отключением |
[nats] | |
connection | Параметр, по которому можно указать адрес хоста NATS-сервера, для которого выпущен сертификат. |
embedded | Параметр, позволяющий задать тип NATS-сервера:
По умолчанию в конфигурационном файле: |
serverCfgFile | Путь к конфигурационному файлу NATS-сервера. |
useTls | Параметр, позволяющий использовать защищенное TLS-соединение:
|
caCertPath | Путь к корневому сертификату удостоверяющего центра (УЦ). |
certPath | Путь к открытой части сертификата NATS-сервера, выпущенного через УЦ. |
keyPath | Путь к закрытой части (ключу) сертификата NATS-сервера, выпущенного через УЦ. |
clientCertPath | Путь к открытой части сертификата клиента, выпущенного через УЦ. |
clientKeyPath | Путь к закрытой части (ключу) сертификата клиента, выпущенного через УЦ. |
username | Логин клиента, подключающегося к NATS-серверу. |
password | Пароль клиента, подключающегося к NATS-серверу. |
token | Токен клиента, подключающегося к NATS-серверу (токен используется как замена логина и пароля). |
[logging] | |
level | Уровень логгирования |
log_file | Путь для записи лог-файла |
Приложение Б. Пример конфигурационного файла
[nats] connection = 'nats://localhost:4222' [reverseproxyServer] host = 'localhost' port = 4010 lang = "ru" natsTimeoutSeconds = 30 lkBaseUrl = "http://localhost:4200" syncTimeoutMinutes = 60 startupTimeoutSeconds = 30 # authorityBaseURL = "http://localhost:4008" # не обязательно для работы с одним FAM сервером [cookie] secure = false http_only = true [logging] level = 'debug' log_file='\tmp\logs' # embedded example with TLS # [nats] # embedded = true # connection = 'tls://localhost:4222' # serverCfgFile = '' # useTls = true # caCertPath = 'develop-cert-ca.pem' # certPath = 'develop-cert.pem' # keyPath = 'develop-key.pem' # clientCertPath = 'develop-cert-client.pem' # clientKeyPath = 'develop-key-client.pem' # External connection without TLS # [nats] # connection = 'nats://localhost:4222'