Назад | Перейти на главную страницу

Аутентификация Apache LDAP (mod_auth_ldap) на сервере MacOS (10.5)

A - Есть ли модуль аутентификации LDAP (mod_auth_ldap) для версии Apache, которая встроена в MacOS Server 10.5?

(Я почти уверен, что нет, но, возможно, кто-то его скомпилировал.)

B - Если нет, можно ли его скомпилировать в версию Apache для MacOS?

(Чувак, это было бы хорошо.)

3 - Если я не могу использовать для этого версию Apache для Apple, как лучше всего настроить аутентификацию Apache LDAP на MacOS Server 10.5?

(Желательно тот, который работает с программным обеспечением для управления серверами MacOS)

Удачи в использовании apsx для сборки mod_authnz_ldap против httpd от Apple.

tar -xzf httpd-2.2.15.tar.gz 
cd httpd-2.2.15
cd modules/aaa
/usr/sbin/apxs -cia mod_authnz_ldap.c

mod_authnz_ldap.c:41:2: error: #error mod_authnz_ldap requires APR-util to have LDAP support built in.
...

Но вы можете создать свой собственный httpd с помощью ldap без особых усилий.

tar -xzf httpd-2.2.15.tar.gz 
cd httpd-2.2.15
./configure --prefix=/usr/local/apache2 --enable-mods-shared=all --enable-ldap --enable-authnz-ldap --enable-ssl --with-included-apr --with-ldap 
make; make test; make install

Отключите Apple httpd в Server Admin и создайте свой собственный список запуска.

sudo cp -p /System/Library/LaunchDaemons/org.apache.httpd.plist /System/Library/LaunchDaemons/your_domain_name.httpd.plist

Отредактируйте свой список так, чтобы он указывал на ваш httpd (замените / usr / sbin / httpd на / usr / local / apache2 / bin / httpd) и измените метку.

Обновите / usr / local / apache2 / bin / apachectl, чтобы использовать launchd в соответствии с этим патчем:

--- /usr/local/apache2/bin/apachectl    2009-04-01 09:56:16.000000000 -0700
+++ apachectl               2009-04-02 20:30:33.000000000 -0700
@@ -65,6 +65,9 @@
 # --------------------                              --------------------
 # ||||||||||||||||||||   END CONFIGURATION SECTION  ||||||||||||||||||||

+LAUNCHCTL="/bin/launchctl"
+LAUNCHD_JOB="/Library/LaunchDaemons/your_domain_name.httpd.plist"
+
 # Set the maximum number of file descriptors allowed per child process.
 if [ "x$ULIMIT_MAX_FILES" != "x" ] ; then
     $ULIMIT_MAX_FILES
@@ -76,8 +79,17 @@
 fi

 case $ARGV in
-start|stop|restart|graceful|graceful-stop)
-    $HTTPD -k $ARGV
+start)
+    $LAUNCHCTL load -w $LAUNCHD_JOB
+    ERROR=$?
+    ;;
+stop|graceful-stop)
+    $LAUNCHCTL unload -w $LAUNCHD_JOB
+    ERROR=$?
+    ;;
+restart|graceful)
+    $LAUNCHCTL unload -w $LAUNCHD_JOB 2> /dev/null
+    $LAUNCHCTL load -w $LAUNCHD_JOB
     ERROR=$?
     ;;
 startssl|sslstart|start-SSL)

Нет, вы не сможете использовать Apple Server Admin для настройки и администрирования вашего httpd. Но администратор сервера в любом случае не может предоставить графический интерфейс, охватывающий все параметры конфигурации httpd. Добавьте / usr / local / apache2 / bin в свой PATH (или всегда указывайте полные пути). Настройте и протестируйте httpd и загрузите его через launchctl:

LoadModule ldap_module modules/mod_ldap.so
LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
AuthType Basic
AuthName "Your Network"
AuthBasicProvider ldap
AuthzLDAPAuthoritative on
AuthLDAPURL ldap://ldap.your_domain_name/dc=xxx,dc=yyy
AuthLDAPGroupAttributeIsDN off
AuthLDAPGroupAttribute memberuid
Require valid-user
# Require ldap-group cn=accounting,cn=groups,dc= xxx,dc=yyy
Satisfy any

/usr/local/apache2/bin/apachectl -S

sudo launchctl load -w /Library/LaunchDaemons/your.domain_name.httpd.plist

http://www.opensource.apple.com/ и http://www.macports.org/ являются хорошими источниками подсказок о том, как компилировать программное обеспечение с открытым исходным кодом для OSX.

Это было мучительно, но мне наконец удалось успешно скомпилировать Apache 2.2.15 с поддержкой LDAP в Mac OS X 10.5.8 (PowerBook G4). Я надеюсь, что приведенные ниже шаги можно использовать и для серверной версии. Этот документ: http://www.grahamcox.co.uk/serendipity/index.php?/archives/30-Compiling-LDAP-support-for-Apache-2.2.4.html очень помогло. Вот что я сделал:

  1. Сначала я загрузил и скомпилировал openldap и установил его в /opt/openldap (к счастью, я мог использовать свои библиотеки BerkeleyDB для Subversion, которые я ранее установил.)
  2. Затем я загрузил Apache 2.2.15, скомпилировал и установил apr (каталог установки для Apache, как вы видите, /opt/apache-2.2.15, Я знаю, я фанат /opt, угадайте, где я установил Subversion):
    cd ~/Downloads/httpd-2.2.15/srclib/apr 

    ./configure
    --prefix=/opt/apache-2.2.15 --enable-threads --enable-other-child 

    make 

    sudo make install 
  1. Затем я скомпилировал и установил apr-util, указав ../apr как путь apr:

cd ~/Downloads/httpd-2.2.15/srclib/apr-util                                                                                           

    ./configure --prefix=/opt/apache-2.2.15 --with-apr=../apr --with-ldap-lib=/opt/openldap/lib --with-ldap-include=/opt/openldap/include --with-ldap=ldap

    make

    sudo make install

  1. Затем я скомпилировал Apache следующим образом:
cd ~/Downloads/httpd-2.2.15 

export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin

./configure --prefix=/opt/apache-2.2.15 --enable-access --enable-actions --enable-alias --enable-asis --enable-auth --enable-auth_dbm --enable-auth_digest --enable-autoindex --enable-cache --enable-cgi --enable-dav --enable-dav_fs --enable-deflate --enable-dir --enable-disk_cache --enable-dumpio --enable-env --enable-expires --enable-fastcgi --enable-file_cache --enable-headers --enable-imap --enable-include --enable-info --enable-log_config  --enable-log_forensic --enable-logio --enable-mem_cache --enable-mime --enable-mime_magic --enable-negotiation --enable-perl --enable-rewrite --enable-setenvif --enable-speling --enable-ssl --enable-status --enable-suexec --enable-unique_id --enable-userdir --enable-usertrack --enable-version --enable-vhost_alias --enable-module=all **--enable-authnz-ldap --with-ldap --enable-ldap** --enable-so **--with-apr=/opt/apache-2.2.15** -**-with-apr-util=/opt/apache-2.2.15** --enable-mods-shared=most --enable-auth-basic **--with-ldap-lib=/opt/openldap/lib --with-ldap-include=/opt/openldap/include**                   

make

sudo make install

Теперь это работает как шарм.

Надеюсь, это сработает и для вас.

Вы можете скачать исходный код Apple Apache из их сайт. Если вы создадите это с помощью их Makefile, у вас должна получиться версия Apache, в значительной степени идентичная той, которая поставляется с Mac OS X. Оттуда я бы попытался изменить некоторые параметры в процессе сборки, чтобы включить mod_authnz_ldap модуль. Хорошим началом было бы добавить --enable-authnz-ldap к Configure_Flags часть Makefile и посмотрим, что произойдет.

Скорее всего, вам понадобится исходный код OpenLDAP для вашей системы, который вы также можете получить от Apple. Затем вы можете добавить еще один флаг конфигурации, чтобы указать на источник: --enable-ldap=<source dir>.

Это должно помочь вам начать работу, но вам, вероятно, придется по ходу дела решить несколько проблем. Помните, что если вам нужны исходники / заголовки для каких-либо компонентов системы, просто загрузите их с сайта Apple, чтобы они соответствовали версиям на вашем компьютере.

mod_auth_ldap / mod_authnz_ldap не встроены в версию Apache, которая поставляется с OS X (почему я не знаю, поскольку они включают mod_ldap ... вздох)

Я не уверен насчет (B) - Вы мог возможно, загрузите Apache с httpd.apache.org, скомпилируйте его (укажите mod_authnz_ldap в качестве общего модуля), скопируйте модуль mod_authnz_ldap.so в / usr / libexec / apache2 / и вручную отредактируйте конфигурацию OS X apache, чтобы загрузить модуль. Теоретически это должно сработать.

Если вы попробуете это сделать, я бы посоветовал использовать исходный код, который соответствует версии Apache на вашем Mac (возможно, 2.2.13, но проверьте "httpd -v" в терминале, чтобы получить номер версии)

Немного покопаемся в этом на выходных - это не так просто, как включить authnz_ldap для apache 2.2.x: он не работает на OS X!

Re: # 3, насколько я знаю, нет другой версии Apache, которая могла бы интегрироваться с диспетчером сервера OS X (опять же теоретически) любая версия 2.2.x должен работать до тех пор, пока он использует файлы конфигурации, которые записывает менеджер сервера).

Мне было бы интересно, есть ли менее хакерский способ включить аутентификацию LDAP.