Назад | Перейти на главную страницу

Аутентификация Apache против нескольких групп ldap

Я использую mod_authn_alias и mod_authnz_ldap против Apache / 2.2.14 (Ubuntu), и я пытаюсь настроить аутентификацию ldap для нескольких доменов.

Моя конфигурация:

<AuthnProviderAlias ldap alpha>
  AuthLDAPBindDN "CN=admin-alpha,CN=Users,DC=alpha,DC=local"
  AuthLDAPBindPassword "xxx"
  AuthLDAPURL "ldap://dc01.alpha.local/CN=Users,DC=alpha,DC=local?sAMAccountName?sub?(objectClass=*)"
</AuthnProviderAlias>

<AuthnProviderAlias ldap beta>
  AuthLDAPBindDN "CN=admin-beta,CN=Users,DC=beta,DC=local"
  AuthLDAPBindPassword "xxx"
  AuthLDAPURL "ldap://dc01.beta.local/CN=Users,DC=test,DC=local?sAMAccountName?sub?(objectClass=*)"
</AuthnProviderAlias>

<Directory "/usr/local/nagios/addons/pnp/share">
        AllowOverride None
        Order allow,deny
        Allow from all
        AuthName "Pnp Access"
        AuthType Basic
        AuthBasicProvider alpha beta
        AuthzLDAPAuthoritative off
        #Important, otherwise "(9)Bad file descriptor: Could not open password file: (null)"
        AuthUserFile /dev/null
        #only members of this group can log in
        Require ldap-group CN=grp_nagiosadmins,DC=beta,DC=local
        Require ldap-group CN=grp_nagiosadmins,DC=alpha,DC=local
        ...
</Directory>

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

Когда я пытаюсь войти:

[Fri Mar 07 16:13:35 2014] [error] [client 10.100.13.30] access to /pnp failed, reason: require directives present and no Authoritative handler.
[Fri Mar 07 16:13:38 2014] [error] [client 10.100.13.30] access to /pnp failed, reason: require directives present and no Authoritative handler.

Почему бы не поместить всех моих пользователей в один домен? Это долгая история, и в конечном итоге это было не мое решение.

Как мне это правильно настроить?

Ошибка связана с

AuthzLDAPAuthoritative on

отсутствует. Тем не менее, если вы хотите установить несколько правил, вы должны настроить:

Satisfy any

У меня была аналогичная проблема, за исключением того, что я проверял конкретных пользователей LDAP, а не группы. Решением было изменить параметр требовать директива от ldap-пользователь чтобы просто пользователь. Это задокументировано в раздел комментариев документации mod_authn_alias.

Насколько я понимаю, mod_authn_alias не относится к LDAP. В его документации говорится, что он «разрешает расширенные провайдеры аутентификации», и они не обязательно должны быть связаны с LDAP.

Возможно стоит попробовать заменить ваш требуется ldap-group директива с просто требуется группа и будьте осторожны с регистром букв.

В сообщении об ошибке говорится: require directives present and no Authoritative handler. Так это работает, если вы установите AuthzLDAPAuthoritative on?