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

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

Механизм аутентификации по технологии Reverse Proxy, реализуемый Системой, ожидает поступления запросов пользователей по отдельному порту.

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


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

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

Для настройки параметров публикации порта Reverse Proxy-сервера настройте параметры секции reverseproxy.server в конфигурационном файле config.json Системы.

Параметры секции radiusServer:

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

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

"reverseproxy.server": {
    "host": "localhost",
    "port": 4010
},

После внесения изменений в параметры config.json требуется перезапустить службу Сервера Системы

Настройка публикации интерфейса 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 - имя, по которому будет происходить обращение через браузер;
  • ssl_certificate и ssl_certificate_key - путь до сертификата и ключа. Могут быть использованы тот же ключ и сертификат, что были сгенерированы на стороне самого Сервера Системы и указаны в конфигурационном файле config.json в параметрах cert и private_key.
  • proxy_pass - по умолчанию 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;
}

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

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

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


Обсуждение