MacOS 伺服器 (10.5) 上的 Apache LDAP 驗證 (mod_auth_ldap)

MacOS 伺服器 (10.5) 上的 Apache LDAP 驗證 (mod_auth_ldap)

答 - 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

在 Server Admin 中停用 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 幫了很多忙。這就是我所做的:

  1. 我首先下載並編譯了 openldap 並將其安裝在/opt/openldap(幸運的是我可以使用我之前安裝的 Subversion 的 BerkeleyDB 庫。)
  2. 然後我下載了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

    製作

    須藤進行安裝
  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

    製作

    須藤進行安裝

  1. 然後我編譯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 版本幾乎相同的 Apache 版本mod_authnz_ldap。一個好的開始是添加--enable-authnz-ldapConfigure_FlagsMakefile 的一部分並看看會發生什麼。

您的系統可能需要 OpenLDAP 來源,您也可以獲得該來源來自蘋果。然後您可以新增另一個配置標誌來指向來源:--enable-ldap=<source dir>

這應該可以幫助您入門,但在此過程中您可能需要解決一些問題。請記住,如果您需要任何系統元件的原始碼/標頭,只需從 Apple 網站下載它們,以便它們與您電腦上的版本相符。

相關內容