Я использую 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 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
(магнето является моим именем хоста для сервера в этом случае, я, по крайней мере, знаю, что работы), и мне предлагают учетные данные. Ничто я вставил работы. Я попробовал комбинации ou=
и o=
и dc=
, наряду с ?uid
как параметр запроса.
Когда я проверяю свой Apache 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
сказанный?
После еще большего поиска я нашел эту статью , которая дала чуть больше информации. Оказалось, что я просто пропустил несколько важных строк из моего HTTPD Apache 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-аутентификацию через HTTPD Apache, ссылки в этом посте 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