Перейти к основному содержимому

Аутентификация через ALD Pro

Аутентификация через службы Astra Linux Directory Professional (ALD Pro) позволяет выполнять вход в веб-клиент ФинГрад без ввода логина и пароля.

При открытии веб-приложения ФинГрад выполняется автоматический вход под пользователем, к которому привязана текущая доменная учётная запись ALD Pro.

Подготовительные действия

Перед настройкой аутентификации в ФинГрад необходимо подготовить доменную инфраструктуру ALD Pro и компьютеры, участвующие в аутентификации.

Должны быть выполнены следующие условия:

  • ALD Pro установлен и настроен, целевой домен создан и доступен;
  • сервер, на котором запущен Docker-контейнер веб-приложения ФинГрад, включён в целевой домен;
  • на сервере с Docker-контейнером веб-компонента ФинГрад и на клиентских компьютерах настроена синхронизация времени с контроллером домена (chrony);
  • клиентские компьютеры пользователей включены в целевой домен;
  • доменные учётные записи пользователей созданы и разблокированы;
  • пользователи выполняют вход на клиентские компьютеры под своими доменными учётными записями.

Инструкция по развёртыванию ALD Pro приведена в Руководстве администратора ALD Pro, раздел "Развертывание контроллеров домена и подсистем".

Настройка DNS в ALD Pro

Для корректной работы Kerberos-аутентификации веб-приложение ФинГрад должно быть доступно по полному доменному имени (FQDN), а не по IP-адресу.

Например:

fingrad.ald.company.lan

На DNS-сервере ALD Pro необходимо убедиться, что для сервера, на котором запущен Docker-контейнер веб-компонента ФинГрад, настроены прямое и обратное разрешение имени.

Если необходимые DNS-записи были созданы автоматически при включении сервера в домен, повторно создавать их не требуется.

Для проверки или добавления DNS-записей в панели управления ALD Pro перейдите в раздел:

Роли и службы сайта -> Служба разрешения имен -> Зоны DNS

Создание A-записи

В прямой DNS-зоне домена должна присутствовать A-запись, связывающая имя сервера ФинГрад с его IPv4-адресом.

Если запись отсутствует, создайте её со следующими параметрами:

  • Имя записи – имя сервера;
  • Тип записиA;
  • IP-адрес – IPv4-адрес сервера.

Пример для домена ald.company.lan:

Имя записи: fingrad
Тип записи: A
IP-адрес: 10.0.1.51

В результате полное доменное имя сервера будет иметь вид:

fingrad.ald.company.lan

Создание PTR-записи

В обратной DNS-зоне должна присутствовать PTR-запись, обеспечивающая обратное разрешение IP-адреса сервера в его полное доменное имя.

Если запись отсутствует, создайте её со следующими параметрами:

  • Имя записи – последний октет IP-адреса сервера;
  • Тип записиPTR;
  • Имя узла – полное доменное имя (FQDN) сервера.

Формат имени записи приведён для обратной зоны /24. Для зон с другой маской имя записи содержит соответствующее число октетов в обратном порядке.

Пример:

Имя записи: 51
Тип записи: PTR
Имя узла: fingrad.ald.company.lan.

Дополнительная информация по настройке DNS приведена в Руководстве администратора ALD Pro, раздел "Дополнительные настройки DNS".

Настройка Kerberos для ФинГрад

Регистрация HTTP-службы и создание keytab-файла

Для работы Kerberos-аутентификации необходимо зарегистрировать HTTP-службу ФинГрад в ALD Pro и создать для неё keytab-файл.

В качестве имени службы используется FQDN веб-приложения ФинГрад, настроенный на предыдущем этапе.

Например:

fingrad.ald.company.lan

Если узел с указанным FQDN ещё не зарегистрирован в домене, добавьте его. Затем зарегистрируйте HTTP-службу и создайте keytab-файл:

примечание

Команды выполняются на контроллере домена ALD Pro или на любом компьютере, введённом в домен, под учётной записью администратора домена.

kinit admin
ipa host-add <FQDN_узла>
ipa service-add HTTP/<FQDN_узла>
sudo ipa-getkeytab -s <FQDN_контроллера_домена> -p HTTP/<FQDN_узла> -k <имя_файла>.keytab

Если сервер ФинГрад уже введён в домен и соответствующий узел существует, команду ipa host-add выполнять повторно не требуется.

Пример для домена ald.company.lan:

kinit admin
ipa host-add fingrad.ald.company.lan
ipa service-add HTTP/fingrad.ald.company.lan
sudo ipa-getkeytab -s dc-1.ald.company.lan -p HTTP/fingrad.ald.company.lan -k fingrad.keytab

Где:

  • <FQDN_узла> – полное доменное имя веб-приложения ФинГрад, например fingrad.ald.company.lan;
  • <FQDN_контроллера_домена> – полное доменное имя контроллера ALD Pro, например dc-1.ald.company.lan;
  • <имя_файла> – имя создаваемого keytab-файла, например fingrad.

Подготовка конфигурации Kerberos

На контроллере домена ALD Pro сделайте копию файла конфигурации Kerberos:

/etc/krb5.conf

В скопированном файле удалите строки, начинающиеся с includedir. В контейнере веб-компонента ФинГрад отсутствуют подключаемые каталоги конфигурации Kerberos, и их наличие в файле приводит к ошибке чтения конфигурации.

Оригинальный файл /etc/krb5.conf изменять не требуется.

Перенесите на сервер ФинГрад подготовленные файлы:

  • krb5.conf;
  • fingrad.keytab.

Разместите файлы в рабочем каталоге конфигурации ФинГрад:

<рабочий_каталог>/config/krb5.conf
<рабочий_каталог>/config/fingrad.keytab

Где:

Keytab-файл содержит Kerberos-ключи службы, поэтому доступ к нему должен быть ограничен. При этом файл должен быть доступен на чтение пользователю, от имени которого работает процесс в контейнере веб-компонента ФинГрад.

Назначьте владельца и права доступа:

sudo chown 1654:1654 <рабочий_каталог>/config/fingrad.keytab
sudo chmod 600 <рабочий_каталог>/config/fingrad.keytab
примечание

Идентификатор 1654 соответствует пользователю app, от имени которого работает веб-компонент ФинГрад в контейнере.

Подключение Kerberos к веб-компоненту ФинГрад

Для подключения Kerberos-аутентификации необходимо добавить в конфигурацию Docker-контейнера веб-компонента ФинГрад файл конфигурации Kerberos и созданный keytab-файл.

Перед изменением конфигурации убедитесь, что на сервере веб-компонента ФинГрад размещены подготовленные ранее файлы:

<рабочий_каталог>/config/krb5.conf
<рабочий_каталог>/config/fingrad.keytab

Способ изменения конфигурации зависит от того, каким образом был создан Docker-контейнер веб-компонента ФинГрад.

Если контейнер создан через Docker Compose

Если Docker-контейнер веб-компонента ФинГрад ранее был создан с использованием файла docker-compose.yml, необходимо изменить существующий Compose-файл.

В конфигурацию сервиса веб-компонента ФинГрад добавьте параметры, необходимые для работы Kerberos:

warning

Приведённые ниже параметры добавляются в уже существующие блоки environment и volumes сервиса. Создавать вторые блоки с теми же именами нельзя.

environment:
KRB5_CONFIG: /etc/krb5.conf
KRB5_KTNAME: /etc/fingrad.keytab

volumes:
- <рабочий_каталог>/config/krb5.conf:/etc/krb5.conf
- <рабочий_каталог>/config/fingrad.keytab:/etc/fingrad.keytab

Остальные существующие параметры сервиса, включая подключённые каталоги, порты, образ, политику перезапуска и другие настройки, изменять не требуется.

После изменения Compose-файла примените конфигурацию:

docker compose up -d <имя_сервиса>

Где:

  • <имя_сервиса> – имя сервиса веб-компонента ФинГрад, указанное в секции services файла docker-compose.yml.

Docker Compose пересоздаст контейнер веб-компонента ФинГрад с учётом изменённой конфигурации.

Если контейнер создан командой docker run

Если Docker Compose не используется и контейнер веб-компонента ФинГрад был создан командой docker run, его необходимо остановить и удалить:

docker stop <имя_контейнера>
docker rm <имя_контейнера>

Где:

  • <имя_контейнера> – имя Docker-контейнера веб-компонента ФинГрад.

Удаление контейнера не удаляет данные, расположенные в подключённых рабочих каталогах на сервере.

Создайте контейнер повторно командой из раздела Запуск веб-приложения, добавив к ней параметры Kerberos:

--env 'KRB5_CONFIG=/etc/krb5.conf' \
--env 'KRB5_KTNAME=/etc/fingrad.keytab' \
-v <рабочий_каталог>/config/krb5.conf:/etc/krb5.conf \
-v <рабочий_каталог>/config/fingrad.keytab:/etc/fingrad.keytab

Остальные параметры команды, включая подключённые каталоги, порты, образ и политику перезапуска, должны совпадать с теми, которые использовались при первоначальном создании контейнера.

Настройка домена в ФинГрад

примечание

Названия пункта меню и части полей унаследованы от интеграции с MS Active Directory и применяются также к доменам ALD Pro.

Запустите десктопное приложение ФинГрад и перейдите в раздел:

Настройки -> Пользователи и группы -> Общие настройки -> Настройки Active Directory

Откроется окно Настройки доменов. Для каждого используемого домена необходимо добавить отдельную конфигурацию подключения.

Для добавления домена:

  1. Нажмите кнопку Добавить.
  2. Заполните параметры подключения к домену.
  3. В поле Тип службы каталогов выберите AldPro.
  4. Нажмите Проверить настройки и убедитесь, что проверка выполнена успешно.
  5. Нажмите ОК для сохранения настроек.

Параметры подключения:

  • Имя домена – имя домена, используемое в конфигурации ФинГрад. Например: ALD.
  • Полное имя домена – полное DNS-имя домена ALD Pro. Например: ald.company.lan.
  • Базовый путь для поиска – LDAP-путь к каталогу, в котором выполняется поиск пользователей. Для стандартной структуры ALD Pro, например: cn=users,cn=accounts,dc=ald,dc=company,dc=lan.
  • Использовать защищенное соединение – определяет использование защищённого соединения с сервером каталогов. Параметр необходимо устанавливать в соответствии с настройками LDAP/LDAPS в целевом домене.
  • Адрес Domain Controller – DNS-имя контроллера домена ALD Pro. Например: dc-1.ald.company.lan.
  • Имя технической учётной записи – логин технической учётной записи, используемой ФинГрад для подключения к службе каталогов. Например: svc_fingrad.
  • Тип службы каталогов – для интеграции с ALD Pro необходимо выбрать значение AldPro.
  • Пароль технической учётной записи – пароль указанной технической учётной записи.
  • DN группы Active Directory – LDAP DN группы пользователей, если необходимо ограничить поиск пользователей определённой группой. Например: cn=fingrad-users,cn=groups,cn=accounts,dc=ald,dc=company,dc=lan. Если ограничение по группе не требуется, поле можно оставить пустым.

Пример конфигурации для домена ald.company.lan:

  • Имя домена: ALD
  • Полное имя домена: ald.company.lan
  • Базовый путь для поиска: cn=users,cn=accounts,dc=ald,dc=company,dc=lan
  • Адрес Domain Controller: dc-1.ald.company.lan
  • Имя технической учётной записи: <логин_технической_учётной_записи>
  • Тип службы каталогов: AldPro
  • Пароль технической учётной записи: <пароль_технической_учётной_записи>
  • DN группы Active Directory: не указывается, если фильтрация по группе не требуется

Настройка домена ALD Pro в ФинГрад

Значения приведены в качестве примера. При настройке необходимо использовать параметры целевого домена ALD Pro.

Привязка учётной записи ALD Pro к пользователю ФинГрад

Откройте настройки пользователя в настольном клиенте ФинГрад.

В поле Пользователь Windows выберите учётную запись пользователя ALD Pro и сохраните изменения.

Привязка учётной записи ALD Pro к пользователю ФинГрад

Настройка браузеров

Автоматический вход выполняется по протоколу Kerberos (механизм Negotiate). Браузер передаёт Kerberos-билет только тем узлам, которые входят в список доверенных. Если адрес веб-приложения ФинГрад не входит в доверенную зону, автоматический вход через ALD Pro будет недоступен.

Настройка выполняется файлами политик браузеров. В приведённых примерах используется доменная зона ald.company.lan, при настройке необходимо указать зону целевого домена.

Браузеры на базе Chromium

Настройка применима к Chromium и Яндекс.Браузеру.

Файл политик располагается по следующим путям:

  • Chromium: /etc/chromium/policies/managed/policies.json
  • Яндекс.Браузер: /etc/opt/yandex/browser/policies/managed/policies.json

Если каталог отсутствует, создайте его. Например, для Chromium:

sudo mkdir -p /etc/chromium/policies/managed/

Создайте файл политик или дополните существующий:

{
"AuthServerAllowlist": "*.ald.company.lan",
"AuthNegotiateDelegateAllowlist": "*.ald.company.lan"
}

Где:

  • AuthServerAllowlist – узлы, для которых разрешена аутентификация по протоколу Kerberos;
  • AuthNegotiateDelegateAllowlist – узлы, которым разрешено делегирование прав по протоколу Kerberos.

Несколько значений указываются через запятую в одной строке.

Перезапустите браузер. Применённые политики отображаются по адресу chrome://policy для Chromium и browser://policy для Яндекс.Браузера.

Firefox

Файл политик располагается по пути:

/etc/firefox/policies/policies.json

Если каталог отсутствует, создайте его:

sudo mkdir -p /etc/firefox/policies/

Создайте файл политик или дополните существующий:

{
"policies": {
"Authentication": {
"SPNEGO": ["ald.company.lan"],
"Delegated": ["ald.company.lan"]
}
}
}

Где:

  • SPNEGO – узлы, для которых разрешена аутентификация по протоколу Kerberos;
  • Delegated – узлы, которым разрешено делегирование прав по протоколу Kerberos.

Значение задаётся именем домена или доменной зоны, несколько значений перечисляются элементами массива.

Перезапустите браузер. Применённые политики отображаются по адресу about:policies.

Централизованная настройка

В доменной среде параметры браузеров рекомендуется распространять групповыми политиками ALD Pro, а не задавать вручную на каждом компьютере. Подробнее см. Руководство администратора ALD Pro, раздел "Управление доменом".

Вход через ALD Pro

Для входа через ALD Pro веб-приложение ФинГрад необходимо открывать по доменному имени, настроенному для Kerberos-аутентификации, а не по IP-адресу.

Пример:

https://fingrad.ald.company.lan

Для автоматического входа (SSO) добавьте к адресу параметр ?sso=1:

https://fingrad.ald.company.lan/?sso=1

Также SSO-вход может быть инициирован при попытке авторизации с пустыми полями имени пользователя и пароля.

При ручном входе с использованием доменной учётной записи можно использовать один из следующих форматов имени пользователя:

домен\имя_пользователя

или:

имя_пользователя@домен