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

Как настроить сервер OpenLDAP и протестировать его с помощью Apache HTTPD

Я использую 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