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 Очень помогло. Вот что я сделал:
- Сначала я скачал и скомпилировал openldap, а затем установил его
/opt/openldap
(к счастью, я мог использовать библиотеки BerkeleyDB из Subversion, которые я установил ранее). - Затем я скачал 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 сделать установку
- Затем я скомпилировал и установил 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 сделать установку
- Затем я скомпилировал 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_Flags
Makefile и наблюдение за тем, что получится.
Скорее всего, вам понадобится исходный код OpenLDAP для вашей системы, который вы также можете получитьот Apple. Затем вы можете добавить еще один флаг конфигурации, чтобы указать на источник: --enable-ldap=<source dir>
.
Это должно помочь вам начать, но вам, вероятно, придется разобраться с несколькими загвоздками по пути. Помните, если вам нужны исходники/заголовки для каких-либо системных компонентов, просто загрузите их с сайта Apple, чтобы они соответствовали версиям на вашем компьютере.