Вопрос или проблема
Я хочу настроить аутентификацию LDAP на своём компьютере с Linux, но не могу этого сделать. В данный момент в журнале Apache я получаю следующую ошибку: AH01617: пользователь john.doe: ошибка аутентификации для “https://superuser.com/”: несоответствие пароля
Я использую Ubuntu 14.04 LTS, Apache 2.4.7 и OpenLDAP.
Я следовал этим учебникам (и другим, но я не могу разместить больше ссылок):
https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-a-basic-ldap-server-on-an-ubuntu-12-04-vps
http://www.openldap.org/software/release/install.html
Я использую виртуальный хост с следующими настройками:
<VirtualHost *:80>
ServerName test.dd-dns.de
DocumentRoot /var/www/vhosts/test.dd-dns.de
</VirtualHost>
<Directory /var/www/vhosts/test.dd-dns.de/>
AllowOverride None
Options None
DirectoryIndex start.html
Include conf-available/ldap-auth.conf
AuthName "Тест аутентификации AD/LDAP"
Require valid-user
</Directory>
Указанный конфигурационный файл ldap-auth.conf выглядит следующим образом:
AuthBasicProvider ldap
AuthType Basic
AuthLDAPGroupAttribute member
AuthLDAPGroupAttributeIsDN On
AuthLDAPURL "ldap://localhost/dc=my,dc=domain,dc=com?sAMAccountName?sub?(objectClass=*)"
AuthLDAPBindPassword "somepassword12345"
Я активировал эти модули (помимо других):
- auth_basic.load
- auth_digest.load
- authnz_ldap.load
Я перезапустил Apache несколько раз.
Я смог выполнить некоторые запросы с помощью ldapsearch и установил phpLDAPadmin для настройки всех пользователей/настроек в LDAP.
Тем не менее, я всё ещё получаю статус 401 Unauthorized с записью в журнале Apache, указанной выше.
У вас есть какие-либо подсказки, как действовать дальше?
Возможно, стоит упомянуть, что у меня есть странное сообщение об ошибке в apt-get. libpam-ldap:amd64 (184-8.5ubuntu3) не удалось прочитать профиль /usr/share/pam-configs/PaxHeaders.41249: Нет такого файла или каталога по адресу /usr/sbin/pam-auth-update строка 674, строка 2. К сожалению, я не смог это исправить и не знаю, что это значит. Тем не менее, phpLDAPadmin и ldapsearch работают, так что я уверен, что аутентификация LDAP в Apache также должна работать.
Я готов предоставить дополнительную информацию по запросу.
Спасибо заранее.
Я предлагаю вам сначала проверить, работает ли вход с помощью ldapsearch следующим образом:
Вот простой пример, используя указанную информацию, вы можете ввести пароль, когда он будет запрошен.
ldapsearch -x -b "ldap://localhost/dc=my,dc=domain,dc=com?sAMAccountName?sub" -W (objectClass=*) -y "somepassword12345"
Если это не сработает, проверьте в AD, где хранится имя пользователя, которое вы используете, CN=
Ответ или решение
Чтобы решить проблему аутентификации LDAP на вашем сервере Apache, когда возникает ошибка "Password Mismatch", нам нужно проверить несколько аспектов конфигурации и процесса аутентификации.
1. Проверка учетных данных LDAP
Сначала убедитесь, что учетные данные, которые вы используете для аутентификации, действительно корректны. Попробуйте выполнить тестовый запрос с помощью ldapsearch
, чтобы убедиться, что учетные данные работают должным образом. Введите следующую команду в терминале:
ldapsearch -x -b "dc=my,dc=domain,dc=com" -W -D "sAMAccountName=john.doe" -H "ldap://localhost" -s sub "(objectClass=*)"
При этом вам будет предложено ввести пароль. Убедитесь, что вы вводите тот же пароль, который вы используете при аутентификации через Apache. Если запрос с ldapsearch
не проходит, то проблема может быть связана с учетными данными в LDAP, и вам следует проверить, правильны ли они в phpLDAPadmin или любой другой утилите, которую вы используете для управления LDAP.
2. Проверка конфигурации Apache
Ваш файл конфигурации ldap-auth.conf
выглядит почти правильно, но он может нуждаться в некоторой корректировке. Убедитесь, что в нем правильно указаны URL и DN. Попробуйте скорректировать строку AuthLDAPURL
:
AuthLDAPURL "ldap://localhost/dc=my,dc=domain,dc=com?sAMAccountName?sub?(objectClass=*)"
Также следует убедиться, что у вас есть сортировка ldap://
и dc
верно указаны.
3. Убедитесь, что Apache настроен на аутентификацию через LDAP
Во-первых, убедитесь, что вы активировали необходимые модули. Проверьте, что у вас загружены следующие модули Apache:
a2enmod authnz_ldap
a2enmod auth_basic
После этого перезапустите Apache:
service apache2 restart
4. Проверьте параметры аутентификации
Посмотрите на параметры аутентификации, которые вы используете. В вашем случае вы используете sAMAccountName
, проверьте, действительно ли в LDAP ваши учетные записи имеют это поле. Возможно, вам придется попробовать другой атрибут, например uid
, если вы используете другую схему LDAP. Убедитесь, что AuthLDAPBindPassword
соответствует паролю, под которым вы подключаетесь к LDAP.
5. Журнал ошибок Apache
Проверяйте error.log
и access.log
Apache более подробно на предмет других ошибок, которые могут дать вам подсказки о том, что пошло не так. Это может помочь вам выявить конкретную причину сбоя.
6. Проверка установки libpam-ldap
Ошибка, которую вы видите с libpam-ldap
, может не быть прямо связанной с вашей проблемой, но она указывает на потенциальные проблемы с PAM. Проверьте, правильно ли настроены конфигурации PAM и служба LDAP, если это необходимо, особенно если вы планируете использовать их вместе.
Заключение
Если после всех проверок и изменений вы все еще сталкиваетесь с проблемой, попробуйте включить детализированный журнал LDAP для Apache, что позволит вам увидеть, какие конкретно шаги выполняются и где происходит ошибка. Это может помочь вам выявить проблемы с конфигурацией или аутентификацией, которые могут быть не видны на более высоком уровне.