Ошибка аутентификации в Apache через LDAP из-за несовпадения пароля

Вопрос или проблема

Я хочу настроить аутентификацию 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, что позволит вам увидеть, какие конкретно шаги выполняются и где происходит ошибка. Это может помочь вам выявить проблемы с конфигурацией или аутентификацией, которые могут быть не видны на более высоком уровне.

Оцените материал
Добавить комментарий

Капча загружается...