Аутентификация 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.
Почему бы не разместить всех моих пользователей в одном домене? Это длинная история, и в конечном итоге это было не мое решение.
Как мне правильно настроить это?
3 ответа
Ошибка о
AuthzLDAPAuthoritative on
отсутствует. Тем не менее, если вы хотите установить несколько правил, вы должны настроить:
Satisfy any
У меня была похожая проблема, за исключением того, что я проверял конкретных пользователей LDAP, а не группы. Решением было изменить параметр директивы require с ldap-user на просто user. Это описано в разделе комментариев документации mod_authn_alias.
Насколько я понимаю, mod_authn_alias не является специфичным для LDAP. В его документации говорится, что он "допускает провайдеров расширенной аутентификации", и они не обязательно должны быть связаны с LDAP.
Вероятно, стоит попробовать заменить директиву require ldap-group на просто require group, и будьте осторожны с регистром букв.
Сообщение об ошибке говорит: require directives present and no Authoritative handler.
Так ли это работает, если вы установите AuthzLDAPAuthoritative on
?