Я использую CentOS 6. Я нашел отличная статья о том, как установить и настроить OpenLDAP на CentOS 6, и я нашел другую отличную документацию Вот о том, как настроить LDAP для работы с Apache HTTPD (я использую версию 2.2, которая поставляется с CentOS 6). К сожалению, в обеих статьях не обязательно указывается, как их соединить. Вторая статья, о которой я упоминал, отлично подходит для изучения Apache, если вы уже хорошо разбираетесь в синтаксисе LDAP, а первая статья, о которой я упомянул, хороша, если вы уже имеете в виду способ ее тестирования. Похоже, вы должны быть экспертом в одном или другом, чтобы пройти через все и полностью подготовиться.
Итак, давайте предположим, что я настроил свои учетные данные LDAP в соответствии с пошаговой статьей CentOS OpenLDAP. Я добавил следующих людей:
acme.ldif
dn: dc=acme,dc=com
objectClass: dcObject
objectClass: organization
dc: acme
o : acme
users.ldif
dn: ou=Users,dc=acme,dc=com
objectClass: organizationalUnit
ou: Users
bob.ldif
dn: cn=Bob Jones,ou=Users,dc=acme,dc=com
cn: Bob Jones
sn: Jones
objectClass: inetOrgPerson
userPassword: p@ssw0rd
uid: bjones
engineering.ldif
dn: cn=Engineering,ou=Users,dc=acme,dc=com
cn: Engineering
objectClass: groupOfNames
member: cn=Bob Jones,ou=Users,dc=acme,dc=com
addUserToGroup.ldif
dn: cn=Engineering,ou=Users,dc=acme,dc=com
changetype: modify
add: member
member: cn=Al Smith,ou=Users,dc=acme,dc=com
al.ldif
dn: cn=Al Smith,ou=Users,dc=acme,dc=com
cn: Al Smith
sn: Smith
objectClass: inetOrgPerson
userPassword: 12345
uid: asmith
Я загрузил LDAPExplorer Tool 2 из SourceForge, успешно подключился к этому каталогу LDAP и исследовал его, и он выглядит так, как предполагают файлы LDIF.
Следующее взято из моего файла httpd.conf для Apache HTTPD:
<Directory /var/www/html/authpage>
AuthType Basic
AuthName "Enter valid user name"
AuthLDAPURL ldap://magneto.acme.com:389/????
require valid-user
</Directory>
Где ????
вот где я не знаю, как согласовать мой синтаксис LDAP с моим каталогом LDAP. Я перепробовала все. Что происходит, я перехожу к URL-адресу http://magneto.acme.com/authpage
(в данном случае magneto - это мое имя хоста для сервера, я, по крайней мере, знаю, что это работает), и меня попросят ввести учетные данные. Я ничего не вкладываю в работу. Я пробовал комбинации ou=
и o=
и dc=
, вместе с ?uid
в качестве параметра запроса.
Когда я проверяю свой апач error_log
, Я вижу эту строку:
[Wed Sep 10 11:00:51 2014] [error] [client 10.78.182.243] access to /authpage failed, reason: verification of user id 'bjones' not configured
[Wed Sep 10 11:00:54 2014] [error] [client 10.78.182.243] access to /authpage failed, reason: verification of user id 'asmith' not configured
Предполагая, что мой каталог LDAP работает, и что Apache правильно пытается аутентифицироваться в нем, 1. Как мне написать правильный синтаксис для аутентификации в все пользователи, или просто конкретная группа? 2. Требуется ли дополнительная конфигурация для настройки проверки пользователей в зависимости от того, что error_log
сказал?
После еще большего поиска я нашел Эта статья это дало немного больше информации. Оказывается, мне просто не хватало нескольких важных строк в моем Apache HTTPD. httpd.conf
файл:
<Directory /var/www/html/authpage>
Order deny,allow
Deny from All
AuthName "Enter valid user name"
AuthType Basic
AuthBasicProvider ldap
AuthzLDAPAuthoritative off
AuthLDAPUrl ldap://magneto.acme.com/ou=Users,dc=acme,dc=com?uid
Require valid-user
Satisfy any
</Directory>
Надеюсь, что если в будущем появится кто-нибудь, кто использует CentOS 6 и использует OpenLDAP и настраивает аутентификацию LDAP через Apache HTTPD, ссылки в этом сообщении ServerFault помогут пролить свет. Это потребовало довольно много проб, ошибок и поиска.
ldap://host:port/basedn?attribute?scope?filter
В твоем случае:
AuthLDAPURL ldap://magneto.acme.com:389/ou=Users,dc=acme,dc=com?uid?sub?(objectClass=inetOrgPerson)
Примечание: если вы не разрешаете анонимный поиск на своем сервере LDAP, вам может потребоваться настроить AuthLDAPBindDN
и AuthLDAPBindPassword