Состав веб-интерфейсов

При работе Сервера функционирует следующий набор веб-интерфейсов:

  • веб-интерфейс аутентификации, включающий в себя:
    • набор методов аутентификации по протоколу OAuth 2.0/OpenID Connect;
    • набор методов аутентификации по протоколу SAML 2.0.
  • веб-интерфейс административной консоли;
  • веб-интерфейс личного кабинета.

Каждый веб-интерфейс слушает свой отдельный порт, который настраивается в конфигурационном файле.

Для публикации веб-интерфейсов и повышения управляемости сетевой конфигурацией интерфейсов рекомендуется использование промежуточного прокси-сервера, в качестве которого может выступать:

  • Nginx;
  • Nginx Plus;
  • Apache Httpd;
  • Microsoft IIS;
  • и т.д.

В инструкциях описывается использование сьта

Варианты размещения

Веб-интерфейсы могут быть размещены в одном из следующих вариантов:

  1. Размещение на общем хосте .
  2. Размещение на отдельных хостах .

Размещение на общем хосте

Все URL запросов к веб-интерфейсов направлены на один общий хост, далее Nginx маршрутизирует все запросы на общий сетевой интерфейс Сервера. Выбор интерфейса, который будет показан пользователю (административная консоль, личный кабинет или интерфейс аутентификации) осуществляет Сервер.

В примере указаны следующие параметры:

Параметр Назначение
external-idp.host Хост, на который отправляет запросы клиент (пользователь)
Nginx_IP external-idp.host DNS-запись, указывающая на сервер с Nginx для хоста external-idp.host
Nginx_IP IP-адрес сервера Nginx

Server_IP

IP-адрес Сервера Avanpost

Вариант размещения веб-интерфейсов приведён на схеме:




  1. Указать базовый адрес (параметр base_url ) в конфигурационном файле config.json , на который ожидается поступление запросов (соответствует external-idp.host на схеме):

    "base_url": "external-idp.host",
  2. В секции server конфигурационного файла config.json указать host и port , на которые ожидается поступление запросов

    "server": {
        "host": "localhost",
        "port": 4008
    },
  3. В секции adminconsole конфигурационного файла config.json указать значение singlehost = false (остальные параметры могут быть оставлены или удалены при необходимости):

    "adminsoncole": {
        ...
        "singlehost": false,
        ...
    },

    Примечание

    Параметр singlehost отвечает за публикацию административного интерфейса на отдельном сетевом интерфейсе (в случае с false –секция не читается, и публикация происходит по умолчанию – на 4008 порту. При этом значении не требуется заполнение параметров base_url и port .

    При значении true – необходимо заполнить параметр в конфигурационном файле base url , указав DNS имя публикуемого интерфейса, указать порт – 4012 .

    Пример секции для публикации на том же адресе, на котором размещён интерфейс аутентификации FAM:

    "adminconsole": {
        "base_url": http://external-idp.host,
        "singlehost": false,
        "host": "localhost",
        "port": 4008,
        "idleTimeoutInMinutes": 50
      }

    Пример с секции для публикации административной консоли на отдельном адресе:

    "adminconsole": {
        "base_url": http://external-adminidp.host,
        "singlehost": true,
        "host": "localhost",
        "port": 4012,
        "idleTimeoutInMinutes": 50
      }

    На стороне nginx необходимо настроить проксирование на 4008 порт, указав server_name из корневого параметра base_url ( idp.fam.local ), и проксирование на 4012 порт, указав server_name ( base_url из секции adminconsole ) admin.fam.local

    Внимание

    После изменения конфигурационного файла необходимо выполнить команду -init ( ./fam_linux_amd64 -init) для инициализации ЛК и административного интерфейса с новыми параметрами из конфигурационного файла


    В конфигурации виртуального хоста, размещённого на сервере Nginx, /etc/nginx/sites-available/idp .conf должно быть настроено проксирование всех запросов на хост к одному порту - localhost:4008 :

    server {
        listen        80;
        server_name   external-idp.host;
        location / {
            proxy_pass         http://Server_IP:4008;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
  4. Перезапустить службу Сервера.

При корректной настройке будет функционировать следующая конфигурация веб-интерфейсов на общем хосте external-idp.host :

  • http://external-idp.host/ – веб-интерфейс административной консоли;

    Примечание

    В случае singlehost true административная консоль будет доступна по адресу http://external-adminidp.host

  • http://external-idp.host/lk – веб-интерфейс личного кабинета;
  • http://external-idp.host/oauth2/ – веб-интерфейс аутентификации (Сервер автоматически маршрутизирует пользователя на данный интерфейс, если он не аутентифицирован).

    Примечание

    Настройка HTTPS должна быть выполнена средствами Nginx по аналогии с настроенной конфигурацией в соответствии с документацией Nginx.

    Пример:

    server {
        listen 443 ssl;
        server_name external-idp.host;
        ssl_certificate /opt/idp/cert/cert.pem;
        ssl_certificate_key /opt/idp/cert/key.pem;
        location / {
            proxy_pass http://localhost:4008;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }

Размещение на отдельном хосте

Все URL запросов к веб-интерфейсов размещаются на различных хостах, далее Nginx (который может быть размещён как на отдельных машинах, так и в виде отдельных секций server на одной из машин) маршрутизирует все запросы на общий сетевой интерфейс Сервера. Выбор интерфейса, который будет показан пользователю (административная консоль или интерфейс аутентификации и личный кабинет) осуществляет Сервер.

В примере указаны следующие параметры:

Параметр Назначение
admin-idp.host Хост, на котором опубликована административная консоль
auth-idp.host Хост, на котором опубликован интерфейс аутентификации
Nginx1_IP admin-idp.host DNS-запись, указывающая на сервер с Nginx1 для хоста admin-idp.host
Nginx2_IP auth-idp.host DNS-запись, указывающая на сервер с Nginx2 для хоста auth-idp.host
Nginx1_IP IP-адрес сервера Nginx №1, на котором опубликована административная консоль
Nginx2_IP IP-адрес сервера Nginx №2, на котором опубликован личный кабинет

Server_IP

IP-адрес Сервера Avanpost



Вариант размещения



  1. Указать базовый адрес (параметр base_url ) в конфигурационном файле config.json , на который ожидается поступление запросов (соответствует auth-idp.host на схеме):

    "base_url": "auth-idp.host",
  2. Для размещения интерфейса аутентификации в секции server конфигурационного файла config.json указать host = localhost, значение port (по умолчанию 4008 , но может быть изменён на произвольный свободный порт) , на которые ожидается поступление запросов к интерфейсу аутентификации от прокси-сервера Nginx3:

    "server": {
        "host": "localhost",
        "port": 4008
    },


    В конфигурации виртуального хоста, размещённого на сервере Nginx3, /etc/nginx/sites-available/idp .conf должно быть настроено проксирование всех запросов на хост к одному порту - localhost:4008:

    server {
        listen        80;
        server_name   auth-idp.host;
        location / {
            proxy_pass       http://Server_IP:4008;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }

    3. В секции adminconsole конфигурационного файла config.json указать base_url = localhost , host = localhost , в port указать значение порта (по умолчанию 4014 ), на котором ожидать поступления запросов к административной консоли от прокси-сервера Nginx1:

    "adminconsole": {
        "base_url": "http://localhost:4014",
        "singlehost": false,
        "host": "localhost",
        "port": 4012,
        "idleTimeoutInMinutes": 50
    },

    В конфигурации виртуального хоста, размещённого на сервере Nginx2, /etc/nginx/sites-available/idp .conf должно быть настроено проксирование всех запросов на хост к одному порту - localhost:4012 :

    server {
        listen        80;
        server_name   lk-idp.host;
        location / {
            proxy_pass       http://Server_IP:4012;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }


    4. Перезапустить службу Сервера.

При корректной настройке будет функционировать следующая конфигурация веб-интерфейсов:

Настройка HTTPS должна быть выполнена средствами Nginx по аналогии с настроенной конфигурацией в соответствии с документацией Nginx