Состав веб-интерфейсов
При работе Сервера функционирует следующий набор веб-интерфейсов:
- веб-интерфейс аутентификации, включающий в себя:
- набор методов аутентификации по протоколу OAuth 2.0/OpenID Connect;
- набор методов аутентификации по протоколу SAML 2.0.
- веб-интерфейс административной консоли;
- веб-интерфейс личного кабинета.
Каждый веб-интерфейс слушает свой отдельный порт, который настраивается в конфигурационном файле.
Для публикации веб-интерфейсов и повышения управляемости сетевой конфигурацией интерфейсов рекомендуется использование промежуточного прокси-сервера, в качестве которого может выступать:
- Nginx;
- Nginx Plus;
- Apache Httpd;
- Microsoft IIS;
- и т.д.
Варианты размещения
Веб-интерфейсы могут быть размещены в одном из следующих вариантов:
Размещение на общем хосте
Все URL запросов к веб-интерфейсов направлены на один общий хост, далее Nginx маршрутизирует все запросы на общий сетевой интерфейс Сервера. Выбор интерфейса, который будет показан пользователю (административная консоль, личный кабинет или интерфейс аутентификации) осуществляет Сервер.
В примере указаны следующие параметры:
Параметр | Назначение |
---|---|
external-idp.host | Хост, на который отправляет запросы клиент (пользователь) |
Nginx_IP external-idp.host | DNS-запись, указывающая на сервер с Nginx для хоста external-idp.host |
Nginx_IP | IP-адрес сервера Nginx |
| IP-адрес Сервера Avanpost |
Вариант размещения веб-интерфейсов приведён на схеме:
Указать базовый адрес (параметр
base_url
) в конфигурационном файлеconfig.json (для версии FAM v1.8.7.346 нужно использовать config.toml)
, на который ожидается поступление запросов (соответствуетexternal-idp.host
на схеме)."base_url": "external-idp.host",
В секции
server
конфигурационного файла указатьhost
иport
, на которые ожидается поступление запросов."server": { "host": "localhost", "port": 4008 },
В секции adminconsole конфигурационного файла указать значение runAsService = true
"adminsoncole": { ... runAsService = true, ... },
Примечание
Параметр
runAsService
отвечает за публикацию административного интерфейса на отдельном сетевом интерфейсе (в случае сtrue
– секция не читается, и публикация происходит по умолчанию на4008
порту, при этом значении не требуется заполнение параметровbase_url
иport)
.При значении
true
– необходимо заполнить параметр в конфигурационном файлеbase url
, указав DNS имя публикуемого интерфейса, а также указать порт –4012
.Пример секции для публикации на том же адресе, на котором размещён интерфейс аутентификации FAM:
[adminconsole] baseUrl = 'http://idp.avanpost.local dir = './public/spa/admin' path = '/' runAsService = true host = 'localhost' port = 4012 canCreateRadiusApp = true canCreateDesktopApp = true #dleTimeoutInMinutes = 50
Пример секции для публикации административной консоли на отдельном адресе:
[adminconsole] baseUrl = 'http://idp.avanpost.local dir = './public/spa/admin' path = '/' runAsService = false host = 'localhost' port = 4008 canCreateRadiusApp = true canCreateDesktopApp = true #dleTimeoutInMinutes = 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; } }
- Перезапустить службу Сервера.
При корректной настройке будет функционировать следующая конфигурация веб-интерфейсов на общем хосте 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; } }
Информация
В случае возникновения ошибки вида config: base URL is empty or has an incorrect format, попробуйте в /opt/idp/config.toml заменить base_url на baseUrl.
Размещение на отдельном хосте
Все 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, на котором опубликован личный кабинет |
| IP-адрес Сервера Avanpost |
Вариант размещения
Указать базовый адрес (параметр
base_url
) в конфигурационном файлеconfig.json (config.toml)
, на который ожидается поступление запросов (соответствуетauth-idp.host
на схеме):"base_url": "auth-idp.host",
Для размещения интерфейса аутентификации в секции
server
конфигурационного файла config.toml указать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.toml указатьbase_url = localhost
,host = localhost
, а вport
указать значение порта (по умолчанию4014
), на котором ожидать поступления запросов к административной консоли от прокси-сервера Nginx1.В случае настройки HTTPS также нужно настроить секцию cookies, также в config.toml в baseUrl везде должно быть прописано https:/. Пример настройки файла в разделе cookies:[adminconsole] baseUrl = 'http://idp.avanpost.local dir = './public/spa/admin' path = '/' runAsService = true host = 'localhost' port = 4012 canCreateRadiusApp = true canCreateDesktopApp = true #dleTimeoutInMinutes = 50
path = '/' secure = true http_only = false same_site = 'None' max_age = 2592000
В конфигурации виртуального хоста, размещённого на сервере 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. Перезапустить службу Сервера.
При корректной настройке будет функционировать следующая конфигурация веб-интерфейсов:
- http://admin-idp.host/ – веб-интерфейс административной консоли;
- http://auth-idp.host/ – веб-интерфейс аутентификации;
- http://auth-idp.host/lk – веб-интерфейс личного кабинета.
Настройка HTTPS должна быть выполнена средствами Nginx по аналогии с настроенной конфигурацией в соответствии с документацией Nginx.