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

Аутентификация 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)

решение1

Удачи в использовании 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

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

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

Отредактируйте 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. Но Server Admin в любом случае не может предоставить GUI, который охватывает все параметры конфигурации 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.

решение2

Это было мучительно, но мне наконец удалось успешно скомпилировать Apache 2.2.15 с поддержкой LDAP на Mac OS X 10.5.8 (PowerBook G4). Надеюсь, что шаги ниже можно будет использовать и для версии Server. Этот документ: 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):
    компакт-диск ~/Загрузки/httpd-2.2.15/srclib/apr

    ./настроить
    --prefix=/opt/apache-2.2.15 --enable-threads --enable-other-child

    делать

    sudo сделать установку
  1. Затем я скомпилировал и установил apr-util, указав ../apr в качестве пути apr:
cd ~/Загрузки/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

    делать

    sudo сделать установку

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

экспорт ПУТЬ=/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**                   

делать

sudo сделать установку

Теперь все работает как часы.

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

решение3

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

Я не уверен насчет (Б) -- Тымогпредположительно, загрузить 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.

решение4

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

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

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

Связанный контент