Настройка LDAP/Active Directory и доменной SSO


НАЧАЛО >> Авторизация пользователей >> Настройка LDAP/Active Directory и доменной SSO📄 Скачать в DOCX


Модуль Authorisation поддерживает проверку пользователя через LDAP/Active Directory и может принимать уже выполненную браузерную доменную аутентификацию. В Linux такая SSO-аутентификация настраивается на уровне веб-сервера через Kerberos/SPNEGO (GSSAPI), а ИРБИС 128 использует переданное веб-сервером значение REMOTE_USER.

В обоих сценариях в PHP должен быть подключён модуль ldap.

extension=ldap

Если расширение не подключено, настройки LDAP в модуле авторизации скрываются, а вход через Active Directory недоступен.

После подключения расширения в настройках модуля Authorisation появляется раздел Использование для аутентификации Active Directory.

Рисунок 1 - Настройки аутентификации по LDAP

Настройки аутентификации по LDAP

1. Основные параметры

Для включения LDAP-аутентификации:

  1. Включите параметр AllowLDAPLogin (Разрешить использовать Active Directory).
  2. Укажите контроллеры домена в настройке ldapDomainControllers.
  3. При необходимости включите AllowLDAPBrowser, если вход должен выполняться по браузерной SSO-аутентификации через REMOTE_USER.
  4. При необходимости включите AllowLDAPCreateNew, если система должна создавать запись пользователя в RDR после успешной аутентификации в Active Directory.

В строках ldapDomainControllers задаются:

Если пользователь вводит короткий логин, а суффикс заполнен, модуль формирует полный логин вида login@example.org. После успешной проверки модуль ищет запись пользователя в базе RDR по термину RI=<полный_логин>. Если запись не найдена и AllowLDAPCreateNew включён, создаётся новая запись RDR, а затем выполняется импорт данных из LDAP.

2. Обычный вход по LDAP

При обычном входе пользователь вводит логин и пароль в форме авторизации. Модуль:

  1. выбирает настроенный контроллер домена;
  2. проверяет пароль пользователя через LDAP;
  3. повторно подключается служебной учётной записью из ldapDomainControllers;
  4. ищет пользователя в Active Directory по sAMAccountName;
  5. сопоставляет пользователя с записью RDR или создаёт её, если это разрешено настройкой;
  6. переносит данные LDAP в запись пользователя по правилам ldapImportData.

3. Браузерная SSO-аутентификация через GSSAPI

При включённом AllowLDAPBrowser модуль может использовать значение REMOTE_USER, переданное веб-сервером. Это позволяет выполнять автоматический вход пользователя при работе в домене без ввода пароля в форме ИРБИС 128.

В Linux ИРБИС 128 не настраивает Kerberos самостоятельно и не получает Kerberos-ticket от браузера напрямую. Цепочка должна быть такой:

  1. браузер пользователя получает доменный Kerberos-ticket;
  2. веб-сервер проверяет его через SPNEGO/GSSAPI;
  3. веб-сервер передаёт PHP корректный REMOTE_USER;
  4. модуль Authorisation принимает REMOTE_USER, а затем использует LDAP-настройки для поиска пользователя и импорта данных из Active Directory.

Для такого сценария должны быть корректно настроены:

REMOTE_USER должен приходить в формате, который можно сопоставить с sAMAccountName и суффиксом из ldapDomainControllers: обычно это короткий логин или login@example.org. Если веб-сервер передаёт DOMAIN\login, настройте нормализацию на стороне веб-сервера до передачи значения в ИРБИС 128.

Служебная учётная запись в ldapDomainControllers всё равно нужна: после успешной SSO-аутентификации модуль читает данные пользователя из Active Directory и переносит их в RDR.

4. Импорт данных в запись пользователя

Модуль может создавать или обновлять запись пользователя в базе RDR при входе через LDAP. Соответствие LDAP-атрибутов полям записи задаётся настройкой ldapImportData.

Используйте эту настройку, если из каталога Active Directory нужно переносить фамилию, имя, отчество, подразделение или другие атрибуты в запись пользователя.

Дополнительная обработка записи задаётся параметрами usrFuncLdapImportModule и usrFuncLdapImportFunc. Указанная функция вызывается после стандартного импорта и может выполнить проектное заполнение или проверку записи.

5. Диагностика

Если настройки Active Directory не видны в модуле, проверьте подключение PHP-расширения ldap.

Если вход по логину и паролю работает, а браузерная SSO-аутентификация нет, сначала проверьте, что веб-сервер действительно передаёт REMOTE_USER в PHP и что формат значения совпадает с ожидаемым логином пользователя.

Если аутентификация проходит, но запись пользователя не находится, проверьте наличие термина RI=<полный_логин> в базе RDR или включите AllowLDAPCreateNew для автоматического создания записи. После создания записи проверьте правила ldapImportData, если нужно заполнить пользовательские поля из Active Directory.

Для production-сценария используйте HTTPS, ограничьте доступ к keytab только процессом веб-сервера и не принимайте REMOTE_USER от недоверенного прокси без явной проверки на уровне веб-сервера.