При наличии нескольких экземпляров Avanpost FAM возможно реализовать общий личный кабинет на основе опроса этих экземпляров. В данной статье рассмотрен вопрос настройки данного механизма посредством использования компонента SelfService.
К моменту осуществления настройки должны быть выполнены следующие требования:
- В сети существуют несколько экземпляров Avanpost FAM для настройки, далее именуемые соответственно FAM1, FAM2 и т.д.
Выполнена синхронизация времени в ОС с сервером синхронизации времени
В ОС семейства Debian Linux должны быть установлены следующие программы:
- openssl
(программа управления сертификатами);- psql
(CLI-клиент из состава PostgreSQL);- nginx
(веб-сервер/прокси-сервер);- sudo
(программа выполнения команд от имени суперпользователя).
Установка и настройка FAM SelfService
Установка компонента SelfSevice осуществляется в следующей последовательности:
- Скачать и распаковать на рабочую машину актуальную версию Avanpost FAM SelfService из репозитория.
- Создать пользователя idp, используя следующую команду
sudo useradd idp
- Создать папку сервиса, используя следующую команду
sudo mkdir /opt/avanpost_selfservice
- Распаковать архив, используя следующую команду
sudo tar -C /opt/avanpost_selfservice -xvzf /path_to_tar_file/avanpost_selfservice-1.0-4.linux.tar.gz
- Перейти в папку avanpost_selfservice, используя команду
cd /opt/avanpost_selfservice/
- Скопировать стандартный конфигурационный файл FAM SelfService, используя команду
cp config.selfservice.sample.toml config.selfservice.toml
- Скопировать конфигурационный файл NATS-сервера, используя команду
cp config.selfservice.nats.sample.json config.selfservice.nats.json
- Предоставить пользователю idp полные права на осуществление действий с данными файлами, используя команду
sudo chown -R idp:idp /opt/avanpost_selfservice
- Создать файл сервиса для дальнейшего автоматического запуска используя команду
sudo nano /etc/systemd/system/selfservice.service
[Unit] Description=SelfService [Service] WorkingDirectory=/opt/avanpost_selfservice ExecStart=/opt/avanpost_selfservice/selfservice_linux_amd64 Restart=always RestartSec=10 SyslogIdentifier=selfservice User=idp Environment="SSO_CFG=/opt/avanpost_selfservice/config.selfservice.toml" [Install] WantedBy=multi-user.target
- Перезагрузить конфигурацию, используя команду
sudo systemctl daemon-reload
- При необходимости исправить параметры конфигурационного файла NATS-сервере config.selfservice.nats.json (подробнее о параметрах описано в приложении А), используя команду
sudo nano /opt/avanpost_selfservice/config.selfservice.nats.json
- Скопировать закрытую часть сертификата (самоподписанный сертификат, создаваемый на стороне Avanpost FAM Server) для дальнейшего указания в параметре
cert
конфигурационного файлаconfig.selfservice.toml
. Отредактировать конфигурационный файл SelfService
config.selfservice.toml
в соответствии с таблицей (более подробно о настройке параметров описано в приложении Б).Параметр Значение cert
Имя и путь файла сертификата (в данном примере cert.pem
).issuer
Скопировать параметр из конфигурационной файла FAM Server. baseUrl
Базовый URL-адрес, по которому переходит пользователь в личный кабинет (в данном примере https://self.avanpost.local/
)authority
URL-адрес, по которому осуществляется аутентификация. Рекомендуется указать адрес из параметра baseUrl.
clientId
Идентификатор OpenID-приложения из настроек Avanpost FAM Server. serverCfgFile
Имя и путь файла конфигурации NATS-сервера. - Запустить SelfService, используя команду
sudo systemctl start selfservice
- Создать файл nginx по пути
/etc/nginx/conf.d/self.conf
, указав в нем параметры проксирования аналогично Avanpost FAM Server.sudo nano /etc/nginx/conf.d/self.conf
server { listen 80; server_name self.avanpost.local; location / { proxy_pass http://127.0.0.1:4009; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
- Добавить в раздел
[lk]
конфигурационного файлаconfig.selfservice.toml
следующееrunAs = "nats" webauthnOrigin = "https://selfservice.local" #baseUrl SelfService
- Добавить в раздел
[lk.nats]
конфигурационного файлаconfig.selfservice.toml
следующееconnection = "nats://<IP Self Service>:4223" useTls = false #caCertPath = "cmd/selfservice/develop-cert-ca.pem" #clientCertPath = "cmd/selfservice/develop-cert-client.pem" #clientKeyPath = "cmd/selfservice/develop-key-client.pem" #username = "natsUser" #password = "password"
- Открыть административную консоль главного узла FAM1 и зайти во вкладку создания приложения, нажав кнопку "Добавить приложение" режима "Приложения".
- На этапе "Основные настройки" требуется ввести наименование и выбрать тип "OAuth/OpenID Connect" (более подробно процесс создания и управления приложениями описан в разделах Управление приложениями и Управление OIDC-приложениями).
- На этапе "Настройки интеграции" заполнить указанные поля в соответствии с таблицей (назначение прочих параметров описано в Шаг 2. Настройки интеграции для OIDC-приложений).
Параметр Значение ID synonym remote-lk-client
BaseUrl Должен соответствовать параметру baseUrl
из конфигурационного файла (по умолчанию,http://localhost:4009
).Redirect URls Должен соответствовать параметру callbackUrl
из конфигурационного файла (по умолчанию,http://localhost:4009/callback
).Backchannel-logout URI Должен соответствовать параметру baseUrl
из конфигурационного файла (по умолчанию,http://localhost:4009/logout
).Audience remote-lk-client
Allowed Grant Types Обязательно включить grant type " Autorization code
" (рекомендуется, но не обязательно включить "Refresh Token
").Access Token type Выбрать " JSON Web Token
". - На этапе "Настройки аутентификации" выбрать факторы аутентификации приложения, установив переключатели напротив тех или иных факторов (более подробно описано в Шаг 3. Настройки аутентификации для OIDC-приложения).
- На этапе "Завершение" следует сохранить приложение, делая его активным сразу после создания (более подробно в Шаг 4. Завершение для OIDC-приложения).
- Из консоли машины с узлом FAM1 запустить приложение FAM SelfService следующей командой:
cd /opt/newlk/ SSO_CFG=/opt/newlk/config.lk.toml ./lk_linux_amd64
- Проверить корректность настройки:
- Открыть в браузере адрес
http://
, по которому выполняется запрос к Avanpost FAM.baseUrl
- Удостовериться, что осуществляется вход в личный кабинет.
- Открыть в браузере адрес
Обновление FAM SelfService
Обновление компонента Avanpost FAM SelfService следует проводить следующим образом:
- Скачать и распаковать на рабочую машину обновленную версию Avanpost FAM SelfService из репозитория.
- Остановить сервисы FAM SelfService, используя команду
sudo systemctl stop selfservice.service
- Удалить папку /public, используя команду
sudo rm -r /opt/avanpost_selfservice/public/
- Обновить компонент, используя скаченный файл, при помощи команды
tar -C /opt/avanpost_selfservice -xvzf /path_to_tar_file/avanpost_selfservice-*.linux.tar.gz
- Запустить FAM SelfService, используя команду
sudo systemctl start selfservice.service
Приложение A. Параметры конфигурационного файла NATS-сервера config.selfservice.nats.sample.json
Параметр | Описание |
---|---|
port | Порт для установки соединения клиента с NATS-сервером. По умолчанию: 4222 |
addr | IP-адрес NATS-сервера |
В конфигурационном файле NATS-сервера допускается настройка дополнительных параметров согласно документации https://docs.nats.io/running-a-nats-service/configuration.
Приложение B. Параметры конфигурационного файла FAM Self Service config.selfservice.sample.json
Параметр | Описание |
---|---|
cert | Путь к сертификату, используемому в продукте. Токены, верифицируемые Avanpost Self Service в процессе работы компонента подписываются данным сертификатом. |
public_dir | Путь к директории public , где располагаются публичные ресурсы (статические файлы и шаблоны), необходимые для установки и настройки компонента. |
[templates] | |
templates | Путь к директории с шаблонами по умолчанию. |
localization | Путь к директории с шаблонами локализации. |
saml_response | Путь к шаблону ответа SAML. |
oauth2_form_post_template | Путь к шаблону формы ответа OAuth2 для метода POST. |
oauth2_error_template | Путь к шаблону ошибки OAuth2. |
[lk] | |
issuer | Идентификатор системы (автора токена) при выдаче токенов подтверждения личности. По умолчанию: |
baseUrl | Базовый URL компонента. По умолчанию: http://localhost:4009 |
authority | Параметр, настраивающий способ авторизации пользователя:
По умолчанию: |
port | Порт, на котором работает Avanpost FAM Self Service. По умолчанию: 4009 |
callbackUrl | URL-адрес, на который возвращается пользователь после выполнения аутентификации посредством Avanpost FAM . |
path | Путь к Avanpost FAM Self Service (если он поднят не в корневом каталоге хоста). |
idleTimeoutInMinutes | Промежуток времени бездействия (в минутах), после которого пользователь будет отключен от личного кабинета (допускается не настраивать параметр, если он настроен для Avanpost FAM Service). По умолчанию: |
dir | Путь к директории, в которой содержится файлы для SPA-приложения. |
clientId | Имя клиента, по которому происходит авторизация на FAM Server. |
natsTimeoutSec | Промежуток времени (в секундах) на ответ от NATS-сервера. |
[nats] | |
connection | Параметр, по которому можно указать адрес хоста NATS-сервера, для которого выпущен сертификат. |
embedded | Параметр, позволяющий задать тип NATS-сервера:
По умолчанию в конфигурационном файле: |
serverCfgFile | Путь к конфигурационному файлу NATS-сервера. |
useTls | Параметр, позволяющий использовать защищенное TLS-соединение:
|
caCertPath | Путь к корневому сертификату удостоверяющего центра (УЦ). |
certPath | Путь к открытой части сертификата NATS-сервера, выпущенного через УЦ. |
keyPath | Путь к закрытой части (ключу) сертификата NATS-сервера, выпущенного через УЦ. |
clientCertPath | Путь к открытой части сертификата клиента, выпущенного через УЦ. |
clientKeyPath | Путь к закрытой части (ключу) сертификата клиента, выпущенного через УЦ. |
username | Логин клиента, подключающегося к NATS-серверу. |
password | Пароль клиента, подключающегося к NATS-серверу. |
token | Токен клиента, подключающегося к NATS-серверу (токен используется как замена логина и пароля). |
[cluster] | |
enabled | Параметр, позволяющий организовать поднятые серверы с Avanpost FAM в кластер:
Если включена организация нод в кластер, требуется указать идентификаторы главного и прочих узлов FAM. По умолчанию в конфигурационном файле: |
[cluster.self] | |
id | Уникальный идентификатор главного узла FAM Server. |
[cluster.nodes] | |
id | Идентификаторы прочих нод Avanpost FAM, который будут предоставлять информацию главному узлу. |
Приложение В. Пример конфигурационного файла
cert = 'cert.pem' public_dir = 'public/' [templates] templates = 'public/templates/default' localization = 'public/templates/localization' saml_response = 'public/templates/saml-response.html' oauth2_form_post_template = 'public/templates/oauth2-formpost-response.html' oauth2_error_template = 'public/templates/oauth2-error-response.html' [lk] issuer = 'fam.avanpost.local' baseUrl = 'http://self.avanpost.local' authority = 'http://self.avanpost.local' port = 4009 host = '127.0.0.1' path = '/' idleTimeoutInMinutes = 50 dir = './public/spa' clientId = 'remote-lk-client' natsTimeoutSec = 30 [nats] # omit or empty for embedded NATS connection = 'nats://0.0.0.0:4222' embedded = true serverCfgFile = 'config.selfservice.nats.json' #useTls = false #caCertPath = '' #certPath = '' #keyPath = '' #clientCertPath = '' #clientKeyPath = '' [cluster] enabled = false [cluster.self] id = 'some.1' [[cluster.nodes]] id = 'other.2' [[cluster.nodes]] id = 'another.3'