Настройка apache2 - LDAP и понимание конфигурации LDAP
Я пытаюсь настроить и понять apache2 LDAP-авторизацию.
На самом деле я использую openSUSE 13.1 64 Bit в качестве виртуальной машины, и я включил необходимые модули и выполнил следующие шаги: http://www.yolinux.com/TUTORIALS/LinuxTutorialApacheAddingLoginSiteProtection.html
Мой httpd-local.conf (включен в исходный httpd.conf):
AuthType Basic
AuthName "Mein geschütztes Verzeichnis"
AuthBasicProvider ldap
AuthLDAPURL "ldap://ldap_server.DOMAIN1.DOMAIN2.de/ou=Test,ou=Benutzer,ou=DOMAIN1/DOMAIN2,dc=DOMAIN1,dc=DOMAIN2,dc=de"
AuthLDAPBindDN "cn=Firstname Lastname,ou=Test,ou=Benutzer,ou=DOMAIN1/DOMAIN2,dc=DOMAIN1,dc=DOMAIN2,dc=de"
AuthLDAPBindPassword "MyAccountPassword"
Require valid-user
При попытке войти с помощью: Пользователь: "Имя Фамилия" Пароль "MyAcountPassword" я получаю:
[Mon Jul 14 11:05:38.527956 2014] [auth_basic:error] [pid 5318] [client xxx.x.x.xxx:xxxxx] AH01618: user Firstname Lastname not found: /
[Mon Jul 14 11:05:38.528605 2014] [auth_basic:error] [pid 5318] [client xxx.x.x.xxx:xxxxx] AH01618: user Firstname Lastname not found: /error/HTTP_UNAUTHORIZED.html.var
При изменении моей конфигурации:
AuthType Basic
AuthName "Mein geschütztes Verzeichnis"
AuthBasicProvider ldap
AuthLDAPURL "ldap://ldap_server.DOMAIN1.DOMAIN2.de/ou=Test,ou=Benutzer,ou=DOMAIN1/DOMAIN2,dc=DOMAIN1,dc=DOMAIN2,dc=de"
AuthLDAPBindDN "cn=username,ou=Test,ou=Benutzer,ou=DOMAIN1/DOMAIN2,dc=DOMAIN1,dc=DOMAIN2,dc=de"
AuthLDAPBindPassword "MyAccountPassword"
Require valid-user
и пытаюсь войти через: Пользователь: "username" Пароль "MyAcountPassword" Я получаю:
[Mon Jul 14 11:09:01.972015 2014] [auth_basic:error] [pid 5372] [client xxx.x.x.xxx:xxxxx] AH01617: user username: authentication failure for "/": Password Mismatch
[Mon Jul 14 11:09:01.973896 2014] [auth_basic:error] [pid 5372] [client xxx.x.x.xxx:xxxxx] AH01617: user username: authentication failure for "/error/HTTP_UNAUTHORIZED.html.var": Password Mismatch
~~~~~~~~~ Редактировать #1: ~~~~~~~~~
ldapsearch "ldap://ldap_server.DOMAIN1.DOMAIN2.de/ou=Test,ou=Benutzer,ou=DOMAIN1/DOMAIN2,dc=DOMAIN1,dc=DOMAIN2,dc=de"
получает: ldap_sasl_interactive_bind_s: не может связаться с сервером LDAP (-1)
~~~~~~~~~~~~~~~~~~~~~~~~~~
Я не могу отладить, потому что получил пару вопросов без ответа. Я никогда раньше не работал с LDAP, просто чтобы вы знали. Почему мне нужно что-то BindDN, я хочу иметь возможность подключаться к каждому пользователю, а не только с одним. Когда я закончу, я создам домашнюю страницу, которая требует аутентификации LDAP при входе в систему, и в зависимости от группы пользователей (я хотел бы вернуть это при аутентификации), пользователям показывается разный контент.
Может кто-нибудь объяснить мне это и попытаться помочь мне?
Спасибо за совет. С наилучшими пожеланиями.
2 ответа
Просто для справки: оригинальная документация (для версии 2.4: https://httpd.apache.org/docs/2.4/mod/mod_authnz_ldap.html) содержит только следующие сведения о AuthLDAPBindDN
:
AuthLDAPBindDN distinguished-name
Мой опыт показывает, что необходимо точно идентифицировать привязывающую учетную запись, либо по точному DN (например, CN=...,OU=...), описывающему точную позицию этой учетной записи в дереве ldap, либо просто по значению userPrincipalName учетной записи. (Чрезмерное использование термина "точный" является преднамеренным.)
Я видел сообщения, что этот параметр может быть чувствительным к регистру на некоторых платформах.
Решение:
AuthType Basic
AuthName "Mein geschütztes Verzeichnis"
AuthBasicProvider ldap
AuthLDAPURL "ldap://SERVER_IP.DOMAIN1.DOMAIN2.de/ou=DOMAIN1/DOMAIN2,dc=lfm,dc=DOMAIN2,dc=de?sAMAccountName?sub?(objectClass=*)"
AuthLDAPBindDN "USERNAME@DOMAIN1.DOMAIN2.de"
AuthLDAPBindPassword "PASSWORD"
Require valid-user