Настройка Reverse Proxy Avanpost FAM/MFA+


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

Механизм Reverse Proxy используется для подключения веб-приложений к Avanpost FAM с целью обеспечения 2FA/MFA/SSO/SLO. Данный механизм предназначен для использования в ситуациях, когда требуется подключить к системе единой аутентификации унаследованное веб-приложение без поддержки стандартных IdP-протоколов.

Механизм аутентификации по технологии Reverse Proxy, реализуемый Avanpost FAM, ожидает поступления запросов пользователей по отдельному порту. Для корректной работы механизма порт FAM, предназначенный для обработки входящих HTTP/HTTPS-запросов, должен быть опубликован на общедоступном веб-сервере посредством веб-сервера или прокси-сервера. При этом порт Системы, обслуживающий Reverse Proxy-запросы, может обслуживать одновременно несколько веб-приложений, подключенных для аутентификации посредством этого механизма.

Для получения дополнительной информации о настройке Reverse Proxy-механизмов рекомендуется обратиться к статье Установка Avanpost FAM Reverse Proxy Service в ОС Linux.


Рисунок – Общая схема решения

Настройка параметров интерфейса в конфигурационном файле

Для настройки параметров публикации порта Reverse Proxy-сервера требуется указать параметры секции [reverseproxyServer] в конфигурационном файле config.toml основного серверного компонента Avanpost Access Server.

ПараметрНазначение параметраДопустимые значения
hostIPv4-адрес и порт сетевого интерфейса, на котором ожидаются входящие подключения.IPv4-адрес или localhost
portНомер порта, на котором должен быть открыт интерфейс.Целое число в диапазоне от 0 до 65535

Пример корректно настроенной секции reverseproxy.server:

[reverseproxyServer]
host = 'localhost'
port = 4010

После внесения изменений в параметры config.toml требуется перезапустить службу idp основного серверного компонента при помощи команды:

sudo systemctl restart idp

Настройка публикации интерфейса Reverse Proxy на веб-сервере

Представленные ниже настройки будут корректны в случае необходимости настройки проксирования запросов по HTTP на HTTP целевого приложения, или c HTTPS на HTTPS целевого приложения. Схема с изменением HTTPS на HTTP или HTTP на HTTPS требует дополнительных настроек на стороне Nginx, выполнение которых выходит за рамки текущего руководства

1. Создать новый файл в каталоге /etc/nginx/sites-available с расширением *.conf (например ssoreverse.conf) или отредактировать уже существующий файл idp.conf.

server {
    listen 80;
    listen 443 ssl;
    server_name mail.avanpost.demo;
    ssl_certificate /opt/idp/cert/cert.pem;
    ssl_certificate_key /opt/idp/cert/key.pem;
    location / {
        proxy_pass http://127.0.0.1:4010;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

ПараметрЗначение
server_nameАдрес Access Server (FAM Server), по которому выполняется обращение через браузер.
ssl_certificateПуть до SSL-сертификата. Допускается использовать тот же сертификат, что был сгенерирован на стороне Access Server (указан в конфигурационном файле config.toml в параметре cert).

ssl_certificate_key

Ключ SSL-сертификата. Допускается использовать тот же ключ, что был сгенерированы на стороне Access Server (указан в конфигурационном файле config.toml в параметре private_key).
proxy_passДиректива, указывающая IP-адрес и порт, куда Nginx должен перенаправлять входящие запросы (по умолчанию используется порт 4010, но может быть настроен произвольный).

2. В конце конфигурационного файла на стороне Nginx добавить секцию:

server {
    listen      80;
    listen      443;
    server_name "";
    return      444;
}

Пример корректно настроенного конфигурационного файла для публикации нескольких веб-приложений посредством механизма Reverse Proxy:

server {
    listen 80;
    listen 443 ssl;
    server_name mail.avanpost.demo;
    ssl_certificate /opt/idp/cert/cert.pem;
    ssl_certificate_key /opt/idp/cert/key.pem;
    location / {
        proxy_pass http://127.0.0.1:4010;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

server {
    listen 80;
    listen 443 ssl;
    server_name portal.avanpost.demo;
    ssl_certificate /opt/idp/cert/cert.pem;
    ssl_certificate_key /opt/idp/cert/key.pem;
    location / {
        proxy_pass http://127.0.0.1:4010;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

server {
    listen 80;
    listen 443 ssl;
    server_name tracker.avanpost.demo;
    ssl_certificate /opt/idp/cert/cert.pem;
    ssl_certificate_key /opt/idp/cert/key.pem;
    location / {
        proxy_pass http://127.0.0.1:4010;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

server {
    listen      80;
    listen      443;
    server_name "";
    return      444;
}

Настройка приложения на стороне административной консоли Access Server

Для последующей настройки и публикации веб-приложения посредством Reverse Proxy задайте два параметра:

  • Базовый URL - тот URL, который был на предыдущем шаге указан в параметре server_name;
  • URL приложения - целевой адрес (хост или IP-адрес), на котором размещено и доступно со стороны Сервера Системы целевое веб-приложение.


Обсуждение