Проверка подлинности Apache LDAP (mod_auth_ldap) на сервере MacOS (10.5)
A - Существует ли модуль аутентификации LDAP (mod_auth_ldap) для версии Apache, которая встроена в MacOS Server 10.5?
(Я уверен, что нет, но, возможно, кто-то скомпилировал один.)
B - Если нет, то может ли он быть скомпилирован в версию Apache для MacOS?
(Человек, это было бы хорошо.)
3 - Если я не могу использовать для этого версию Apple Apache, каков наилучший способ заставить Apache LDAP-аутентификацию работать на MacOS Server 10.5?
(Предпочтительно тот, который работает с программным обеспечением управления серверами MacOS)
4 ответа
Удачи в использовании 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 и создайте свой собственный список запуска.
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 помог. Вот что я сделал:
- Сначала я скачал и скомпилировал openldap и установил его в
/opt/openldap
(К счастью, я мог использовать библиотеки BerkeleyDB Subversion, которые я ранее установил.) - Затем я скачал 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 делать sudo сделать установку
- Затем я скомпилировал и установил 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 делать sudo сделать установку
- Затем я скомпилировал Apache следующим образом:
cd ~ / Downloads / httpd-2.2.15 экспорт 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 -gotiation --enable-perl --enable-rewrite --enable-setenvif --enable-speling --enable-ssl --enable-status --enable-suexec --enable-unique_id --enable-userdir --enable-usertrack --enable-версия --enable-vhost_alias --enable-module= все **- включить-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= большинство --enable-auth-basic **- with-ldap-lib =/ opt / openldap / lib - -с-LDAP-включают в себя =/ Opt / OpenLDAP / включить ** делать sudo сделать установку
Теперь это работает как шарм.
Надеюсь, это также будет работать для вас.
Вы можете скачать исходный код 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/ и вручную -дить конфигурацию apache OS X для загрузки модуля. Теоретически это должно работать.
Если вы попробуете это, я бы рекомендовал использовать исходный код, который соответствует версии Apache на вашем Mac (возможно, 2.2.13, но проверьте "httpd -v" в терминале, чтобы получить номер версии)
Немного покопаться об этом в выходные - это не так просто, как включить authnz_ldap для apache 2.2.x: он не основан на OS X!
Re: # 3, насколько я знаю, нет другой версии Apache, которая интегрируется с диспетчером сервера OS X, хотя (опять теоретически) любая версия 2.2.x должна работать, пока она использует файлы конфигурации, которые выписывает менеджер сервера).
Мне было бы интересно, если есть менее хакерский способ включить аутентификацию LDAP.