Как подключить Active Directory или OpenLDAP: поля с примерами для AD, фильтр поиска, проверка пользователя, роль по умолчанию, Kerberos и частые ошибки.
Обновлено 23.10.2026
Подключение к корпоративному каталогу позволяет сотрудникам входить в volrix.pm доменным логином и паролем - отдельные пароли в системе им не нужны. При первом входе учетная запись создается автоматически, данные профиля берутся из каталога. Поддерживаются Active Directory, OpenLDAP и FreeIPA. Поверх LDAP можно включить Kerberos - вход из доменной сессии Windows без ввода пароля.
Где находится: «Администрирование» → «Доступ» → «Вход в систему», вкладка «LDAP / AD». Нужно право «LDAP / AD - Настройки LDAP / AD» (по умолчанию только у администратора системы). Вход через внешнего провайдера по OpenID Connect настраивается отдельно - OIDC.
«Фильтр поиска» - LDAP-фильтр, в который вместо {username} подставляется то, что человек ввел в поле входа. Кнопки «Шаблоны» под полем подставляют готовые фильтры для Active Directory, OpenLDAP и FreeIPA:
Active Directory: (&(objectClass=user)(sAMAccountName={username})) OpenLDAP: (&(objectClass=inetOrgPerson)(uid={username})) FreeIPA: (&(objectClass=person)(uid={username}))
Фильтр должен находить ровно одну запись: если найдено несколько, вход отклоняется с ошибкой «Найдено несколько пользователей по фильтру».
Поле на странице входа называется «Email или логин LDAP». С шаблоном для AD человек вводит короткий логин (ivanov). Чтобы подходили и логин, и адрес почты, расширьте фильтр:
(&(objectClass=user)(|(sAMAccountName={username})(userPrincipalName={username})(mail={username})))
Без email учетная запись не создается: адрес - основной идентификатор человека в volrix.pm. Если ФИО в каталоге пустое, в профиль попадает email. При каждом входе отдел, должность и телефон перезаписываются из каталога, email и ФИО - если изменились. Необязательные поля можно оставить пустыми.
В версии 0.111.0 переключатель «Пускать только членов группы» и поле «DN группы доступа» не сохраняются: после «Сохранить» и обновления страницы переключатель снова выключен, и проверка группы не выполняется. Пока это не исправлено, ограничивайте круг пользователей фильтром поиска - добавьте в него условие членства в группе.
Только прямые члены группы: (&(objectClass=user)(sAMAccountName={username})(memberOf=CN=Volrix Users,OU=Groups,DC=corp,DC=local)) С учетом вложенных групп (только Active Directory): (&(objectClass=user)(sAMAccountName={username})(memberOf:1.2.840.113556.1.4.1941:=CN=Volrix Users,OU=Groups,DC=corp,DC=local))
Человек вне группы при таком фильтре не находится: проверка пользователя отвечает «Пользователь не найден в LDAP», страница входа - «Неверный email или пароль».
Kerberos (SPNEGO) дает сотруднику в доменной сессии Windows кнопку «Войти через AD» на странице входа: он входит без ввода пароля. Kerberos не заменяет LDAP: LDAP отвечает за вход по логину и паролю, Kerberos - за вход без пароля. Настройки находятся на той же вкладке, в блоке «Kerberos / SPNEGO SSO».
New-ADUser -Name "VOLRIX_SERVICE" -AccountPassword (Read-Host -AsSecureString) -Enabled $true -PasswordNeverExpires $true setspn -A HTTP/pm.corp.local VOLRIX_SERVICE setspn -L VOLRIX_SERVICE ktpass -princ HTTP/pm.corp.local@CORP.LOCAL -mapuser VOLRIX_SERVICE@CORP.LOCAL -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL -pass <пароль VOLRIX_SERVICE> -out volrix.keytab
# на сервере volrix.pm, в каталоге установки cp /путь/к/volrix.keytab config/volrix.keytab chmod 600 config/volrix.keytab docker compose -f docker-compose.release.yml restart backend
Вход через Kerberos создает отдельную учетную запись. Она ищется по имени Kerberos (ivanov@CORP.LOCAL), а email берется из этого же имени с доменом в нижнем регистре (ivanov@corp.local); ФИО при создании равно этому адресу - поправьте его в карточке. С учетной записью, созданной при входе через LDAP, она не связывается, а если такой email уже есть в системе, вход остановится ошибкой «Email ... уже используется». Решите заранее, каким способом входят сотрудники, и не смешивайте LDAP и Kerberos для одного человека.
# включить резервный локальный вход, если LDAP недоступен и войти нельзя docker compose -f docker-compose.release.yml exec postgres psql -U volrix_user -d volrix_pm -c "UPDATE ldap_settings SET fallback_to_local = true WHERE id = 1;"
Какие роли назначить после первого входа.
Вход через Keycloak, Azure AD и другие.
Карточка сотрудника и учетная запись.