答 - MacOS Server 10.5 内置的 Apache 版本是否有 LDAP 身份验证模块 (mod_auth_ldap)?
(我很确定没有,但也许有人编译了一个。)
B - 如果没有,它可以编译成 MacOS 版本的 Apache 吗?
(伙计,那真是太好了。)
3 – 如果我不能为此使用 Apple 版本的 Apache,那么在 MacOS Server 10.5 上使 Apache LDAP 身份验证正常运行的最佳方法是什么?
(最好是与 MacOS 服务器管理软件兼容的软件)
答案1
祝您使用 apsx 针对 Apple 的 httpd 构建 mod_authnz_ldap 顺利。
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.
...
但是您可以毫不费力地使用 ldap 构建自己的 httpd。
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 并创建您自己的 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 无论如何都无法提供包含所有 httpd 配置选项的 GUI。将 /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
虽然很痛苦,但我终于成功在 Mac OS X 10.5.8 (PowerBook G4) 上编译了支持 LDAP 的 Apache 2.2.15。我希望下面的步骤也可以用于服务器版本。本文档: http://www.grahamcox.co.uk/serendipity/index.php?/archives/30-Compiling-LDAP-support-for-Apache-2.2.4.html 帮助很大。我做的是:
- 我首先下载并编译了 openldap,然后安装了它
/opt/openldap
(幸运的是我可以使用我之前安装的 Subversion 的 BerkeleyDB 库。) - 然后我下载了 Apache 2.2.15 并编译并安装了 apr(如您所见,Apache 的安装目录是
/opt/apache-2.2.15
,我知道,我是的粉丝/opt
,猜猜我在哪里安装了 Subversion):
cd ~/下载/httpd-2.2.15/srclib/apr 。/配置 --prefix=/opt/apache-2.2.15 --enable-threads --enable-other-child 制作 安装
- 然后我编译并安装了 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 制作 安装
- 然后我编译了Apache,如下所示:
cd ~/下载/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-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** 制作 安装
现在它运行得非常好。
希望这对您也有用。
答案3
mod_auth_ldap / mod_authnz_ldap 未内置于 OS X 附带的 Apache 版本中(我不知道为什么,因为它们包含 mod_ldap...叹)
我不确定(B)——你可以可以设想从 httpd.apache.org 下载 Apache,编译它(将 mod_authnz_ldap 指定为共享模块),将 mod_authnz_ldap.so 模块复制到 /usr/libexec/apache2/ 中,然后手动编辑 OS X apache 配置以加载该模块。理论上应该可以。
如果您尝试此操作,我建议使用与您的 Mac 上的 Apache 版本相匹配的源代码(可能是 2.2.13,但请在终端中检查“httpd -v”以获取版本号)
周末对此进行了一些挖掘 - 这并不像为 apache 2.2.x 启用 authnz_ldap 那么简单:它不能在 OS X 上构建!
回复:#3,据我所知,没有其他 Apache 版本可以与 OS X 服务器管理器集成(再次理论上)任何 2.2.x 版本应该只要它使用服务器管理器写出的配置文件就可以工作)。
如果有一种不太复杂的方法来启用 LDAP 身份验证,我会感兴趣。
答案4
您可以从以下网址下载 Apple 的 Apache 源代码他们的网站。如果您使用他们的 Makefile 构建此模块,那么您最终会得到一个与 Mac OS X 随附安装的版本几乎相同的 Apache 版本。从那里开始,我会尝试更改构建过程中的一些选项以启用该mod_authnz_ldap
模块。一个好的开始是将其添加--enable-authnz-ldap
到Configure_Flags
Makefile 的一部分并查看会发生什么。
您可能需要系统的 OpenLDAP 源,您也可以从来自 Apple。然后您可以添加另一个配置标志来指向源:--enable-ldap=<source dir>
。
这应该可以让您开始使用,但您可能需要在此过程中解决一些问题。请记住,如果您需要任何系统组件的源代码/标题,只需从 Apple 网站下载它们,以便它们与您的机器上的版本相匹配。