#ldap #apache2.4
#ldap #apache2.4
Вопрос:
Это моя первая публикация, поэтому заранее извините, если я что-то делаю неправильно. Я заменю IP-адреса и имена пользователей.
У меня установлена Windows Active Directory, и я пытаюсь использовать это для аутентификации на веб-странице, которая у меня есть на отдельном сервере Ubuntu 18.04. Я пытаюсь использовать apache2 (2.4.18), чтобы настроить это. Документация в Интернете кажется довольно простой, но я не добился успеха. Во-первых, я не могу использовать теги <Location «/auth»>, поскольку, похоже, они просто не работают вообще. Я должен использовать тег <Directory /auth>.
Сервер AD использует самозаверяющий сертификат, и у меня возникли проблемы с тем, чтобы заставить его доверять ему с помощью LDAPTrustedGlobalCert. Я получал [Can't contact LDAP server]
, но отключение LDAPVerifyServerCert, похоже, позволяет мне преодолеть это препятствие на данный момент.
Самая большая проблема, с которой я сталкиваюсь, заключается в том, что я не думаю, что привязка работает. При простой загрузке веб-страницы я вижу, что это отображается в журнале ошибок:
[authz_core:debug] [pid 2397] mod_authz_core.c(809): [client <myclientIP>:56969] AH01626: authorization result of Require valid-user : denied (no authenticated user yet)
[authz_core:debug] [pid 2397] mod_authz_core.c(809): [client <myclientIP>:56969] AH01626: authorization result of <RequireAny>: denied (no authenticated user yet)
Оттуда я ввожу учетные данные, чтобы попытаться пройти аутентификацию, и получаю:
[Thu Aug 27 08:36:22.831527 2020] [authnz_ldap:debug] [pid 2396] mod_authnz_ldap.c(520): [client <myClientIP>:56887] AH01691: auth_ldap authenticate: using URL ldaps://<myLDAPIP>/dc=my,dc=example,dc=com?uid
[Thu Aug 27 08:36:22.888784 2020] [authnz_ldap:info] [pid 2396] [client <myClientIP>:56887] AH01695: auth_ldap authenticate: user <myUser> authentication failed; URI /auth/ [LDAP: ldap_simple_bind() failed][Invalid credentials]
[Thu Aug 27 08:36:22.888825 2020] [auth_basic:error] [pid 2396] [client <myClientIP>:56887] AH01617: user <myUser>: authentication failure for "/auth/": Password Mismatch
Это моя конфигурация для apache. Я оставил строки с комментариями, чтобы вы могли увидеть пару из множества вариантов, которые я пробовал:
LDAPVerifyServerCert Off
<Directory "/var/www/html/auth">
AuthType Basic
AuthName "Authentication required"
AuthBasicProvider ldap
AuthLDAPURL ldaps://<myLDAPIP>/dc=my,dc=example,dc=com?uid
#AuthLDAPURL ldaps://<myLDAPIP>:636/cn=Users,dc=my,dc=example,dc=com
AuthLDAPBindDN <myUser>
#AuthLDAPBindDN cn=<myUser>,dc=my,dc=example,dc=com
AuthLDAPBindPassword <myPassword>
Require valid-user
#require ldap-group cn=Users,dc=my,dc=example,dc=com
#require ldap-group cn=Users
LogLevel debug
</Directory>
Я искал повсюду и перепробовал много конфигураций, но я не понимаю, почему это не работает с этой. У меня есть по крайней мере три другие программы, которые используют LDAP с этим сервером Active Directory. Разница в том, что все они имели встроенную поддержку для этого, и мне не нужно было ничего делать с apache.
Любая помощь будет оценена! Заранее спасибо
Ответ №1:
На самом деле я продолжал пробовать несколько конфигураций и, наконец, нашел ту, которая сработала. Ниже приведен код функционирования:
<Directory "/var/www/html/auth">
AuthType Basic
AuthName "Authentication required"
AuthBasicProvider ldap
AuthLDAPURL "ldaps://<myLDAPIP>/dc=my,dc=example,dc=com?sAMAccountName"
AuthLDAPBindDN "myUser@my.example.com"
AuthLDAPBindPassword "<Password>"
Require valid-user
LogLevel debug
</Directory>
* Если ваш сертификат не является доверенным, вы можете добавить LDAPVerifyServerCert Off, который должен находиться за пределами блока virtualhost