Apache LDAP-Authentifizierung (mod_auth_ldap) auf MacOS Server (10.5)

Apache LDAP-Authentifizierung (mod_auth_ldap) auf MacOS Server (10.5)

A: Gibt es ein LDAP-Authentifizierungsmodul (mod_auth_ldap) für die in MacOS Server 10.5 integrierte Apache-Version?

(Ich bin ziemlich sicher, dass das nicht der Fall ist, aber vielleicht hat jemand eins zusammengestellt.)

B – Wenn nicht, kann es in die MacOS-Version von Apache kompiliert werden?

(Mann, das wäre schön.)

3 – Wenn ich hierfür nicht die Apple-Version von Apache verwenden kann, was ist dann der beste Weg, um die Apache-LDAP-Authentifizierung auf MacOS Server 10.5 zum Laufen zu bringen?

(Vorzugsweise eines, das mit der Verwaltungssoftware von MacOS-Servern funktioniert)

Antwort1

Viel Glück beim Verwenden von apsx zum Erstellen von mod_authnz_ldap gegen Apples httpd.

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

Sie können jedoch ohne großen Aufwand Ihr eigenes httpd mit LDAP erstellen.

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

Deaktivieren Sie Apples httpd im Server Admin und erstellen Sie Ihre eigene Launchd-Plist.

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

Bearbeiten Sie Ihre plist, sodass sie auf Ihr httpd verweist (ersetzen Sie /usr/sbin/httpd durch /usr/local/apache2/bin/httpd) und ändern Sie die Bezeichnung.

Aktualisieren Sie /usr/local/apache2/bin/apachectl, um launchd gemäß diesem Patch zu verwenden:

--- /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)

Nein, Sie können Apple Server Admin nicht zum Konfigurieren und Verwalten Ihres httpd verwenden. Server Admin kann jedoch ohnehin keine GUI bereitstellen, die alle Konfigurationsoptionen von httpd umfasst. Fügen Sie /usr/local/apache2/bin zu Ihrem PATH hinzu (oder geben Sie immer vollständige Pfade an). Konfigurieren und testen Sie httpd und laden Sie es über 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/Undhttp://www.macports.org/sind gute Quellen für Hinweise zum Kompilieren von Open-Source-Software für OSX.

Antwort2

Es war eine Qual, aber ich habe es endlich geschafft, Apache 2.2.15 mit LDAP-Unterstützung auf Mac OS X 10.5.8 (PowerBook G4) erfolgreich zu kompilieren. Ich hoffe, die folgenden Schritte können auch für die Serverversion verwendet werden. Dieses Dokument: http://www.grahamcox.co.uk/serendipity/index.php?/archives/30-Compiling-LDAP-support-for-Apache-2.2.4.html hat sehr geholfen. Das habe ich gemacht:

  1. Ich habe zuerst OpenLDAP heruntergeladen, kompiliert und installiert /opt/openldap(zum Glück konnte ich die BerkeleyDB-Bibliotheken meiner Subversion verwenden, die ich zuvor installiert hatte).
  2. Dann habe ich Apache 2.2.15 heruntergeladen und apr kompiliert und installiert (das Installationsverzeichnis für Apache ist, wie Sie sehen /opt/apache-2.2.15, , ich weiß, ich bin ein Fan von /opt, raten Sie mal, wo ich Subversion installiert habe):
    cd ~/Downloads/httpd-2.2.15/srclib/apr

    ./konfigurieren
    --prefix=/opt/apache-2.2.15 --enable-threads --enable-other-child

    machen

    sudo make installieren
  1. Dann habe ich apr-util kompiliert und installiert und dabei ../apr als apr-Pfad angegeben:
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

    machen

    sudo make installieren

  1. Dann habe ich Apache wie folgt kompiliert:
cd ~/Downloads/httpd-2.2.15

export 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**                   

machen

sudo make installieren

Jetzt funktioniert es wie am Schnürchen.

Hoffentlich funktioniert das auch bei Ihnen.

Antwort3

mod_auth_ldap / mod_authnz_ldap sind in der Apache-Version, die mit OS X geliefert wird, nicht integriert (warum, weiß ich nicht, da sie mod_ldap enthalten …)seufzen)

Ich bin mir nicht sicher über (B) -- SiekönnteSie können Apache beispielsweise von httpd.apache.org herunterladen, kompilieren (mod_authnz_ldap als gemeinsam genutztes Modul angeben), das Modul mod_authnz_ldap.so in /usr/libexec/apache2/ kopieren und die OS X-Apache-Konfiguration manuell bearbeiten, um das Modul zu laden. Theoretisch sollte das funktionieren.

Wenn Sie dies versuchen, würde ich vorschlagen, Quellcode zu verwenden, der der Apache-Version auf Ihrem Mac entspricht (wahrscheinlich 2.2.13, aber überprüfen Sie „httpd -v“ im Terminal, um die Versionsnummer zu erhalten).

Ich habe am Wochenende ein bisschen darin herumgegraben – es ist nicht so einfach, wie authnz_ldap für Apache 2.2.x zu aktivieren: Es lässt sich nicht auf OS X erstellen!

Betreff: #3, soweit ich weiß, gibt es keine andere Apache-Version, die sich in den OS X-Server-Manager integrieren lässt (nochmalstheoretisch) jede 2.2.x Versionsollenfunktioniert, solange die Konfigurationsdateien verwendet werden, die der Servermanager ausgibt).

Mich würde interessieren, ob es eine weniger hackerische Möglichkeit gibt, die LDAP-Authentifizierung zu aktivieren.

Antwort4

Sie können den Apache-Quellcode von Apple herunterladen unterIhre Seite. Wenn Sie dies mit ihrem Makefile erstellen, sollten Sie eine Version von Apache erhalten, die ziemlich identisch mit der ist, die mit Mac OS X installiert ist. Von dort aus würde ich versuchen, einige der Optionen im Build-Prozess zu ändern, um das mod_authnz_ldapModul zu aktivieren. Ein guter Anfang wäre, --enable-authnz-ldapden Configure_FlagsTeil des Makefiles zu ergänzen und zu sehen, was passiert.

Wahrscheinlich benötigen Sie die OpenLDAP-Quelle für Ihr System, die Sie auch erhalten könnenvon Apple. Dann können Sie ein weiteres Konfigurationsflag hinzufügen, um auf die Quelle zu verweisen: --enable-ldap=<source dir>.

Damit sollten Sie loslegen können, aber Sie müssen wahrscheinlich unterwegs noch ein paar Probleme lösen. Denken Sie daran: Wenn Sie die Quellen/Header für Systemkomponenten benötigen, laden Sie sie einfach von der Apple-Site herunter, damit sie mit den Versionen auf Ihrem Computer übereinstimmen.

verwandte Informationen