[TIPP] Apache authorisiert gegen LDAP (Active Directory)

Alles, was den Apache betrifft, kann hier besprochen werden.

[TIPP] Apache authorisiert gegen LDAP (Active Directory)

Postby Gandalf_the_Grey » 23. July 2009 14:39

Hallo zusammen,

da ich mich gerade fast 8h (gestern + heute) mit einem Problem herumgeplagt und nun eine Lösung habe, möchte ich Sie anderen Personen als Hilfe zur Verfügung stellen.

Problemstellung:
Ich wollte Kunden und internen Mitarbeitern auf einem Server Dateien zum download anbieten.
Da hier aber nicht jeder Zugriff haben sollte, dachte ich an eine Authentifizierung gegen unser LDAP (MS Active Directory).
Das Problem hierbei war/ist, dass nicht alle betreffenden User unter "CN=Users,DC=<DOMAIN>,DC=<TLD>" liegen.
Unsere Kunden liegen ausserhalb dieser Struktur.
Also musste die AuthLDAPURL an höchster Stelle anknüpfen um dann rekursiv nach unten die Gruppenmitglieder aufzulösen.

Alles klappte soweit gut. Ich bekam ein "Popup" in welchem ich Username und Passwort angeben sollte. Tat ich dies jedoch, so bekam ich einen Error 500.

Nach ein wenig probieren stellte sich heraus, dass wenn ich die AuthLDAPURL von

Code: Select all
ldap://<dcname>.<domain>.<tld>:389/dc=hlp,dc=de?sAMAccountName?sub?(objectClass=*)


auf

Code: Select all
ldap://<dcname>.<domain>.<tld>:389/cn=users,dc=hlp,dc=de?sAMAccountName?sub?(objectClass=*)


änderte, dann klappte es. Naja, nicht ganz. Es klappte nur mit einer der beiden Gruppen (bzw. deren Mitgliedern).

Fakt war: Auf oberste Ebene durchsuchte er nicht rekursiv das LDAP Verzeichnis. Wenn ich einen tieferen Einsprungpunkt
wählte tat er dies jedoch sehr wohl.

Das hat mich nicht in Ruhe gelassen. Also habe ich weiter im Netz gesucht und gesucht.

Am Ende bin ich in einem Linux Forum auf eine funktionierende Konfiguration gestoßen. Hier war jedoch eine andere Portnummer (Port 389 ist normal Standard) gestoßen.

Mit dieser Portnummer funktionierte es zu meinem Erstaunen hervorragend.

Mit diesem Wissen suchte ich Google auf und folgende Suchergebnisse erhielt ich:
Global Catalog and LDAP Searches
Der Beitrag von Wall bei Ignite Realtime

Als Ergebnis kommt nun folgende funktionsfähige Konfig raus:

Code: Select all
<VirtualHost <servername>.<domain>.<tld>:443>
ServerName <servername>.<domain>.<tld>
ServerAdmin <mailaddress>@<domain>.<tld>
DocumentRoot "C:/XXX/YYY"
<Directory "C:/XXX/YYY">
   AuthType Basic
   AuthBasicProvider ldap
   AuthName "Access"
   AuthLDAPURL "ldap://<dcname>.<domain>.<tld>:3268/dc=<domain>,dc=<tld>?sAMAccountName?sub?(objectClass=*)"
#   AuthLDAPURL "ldap://<dcname>.<domain>.<tld>:389/dc=<domain>,dc=<tld>?sAMAccountName?sub?(objectClass=*)"
   AuthLDAPBindDN "CN=<username>,CN=Users,dc=<domain>,dc=<tld>"
   AuthLDAPBindPassword "<password>"
   AuthzLDAPAuthoritative off
   Require ldap-group CN=<first_group>,OU=FTP,OU=Gruppen,OU=Verwaltung,DC=<domain>,DC=<tld>
   Require ldap-group CN=<second_group>,CN=Users,DC=<domain>,DC=<tld>
   Options Indexes FollowSymLinks
   AllowOverride none
   Order allow,deny
   Allow from all
</Directory>
SSLEngine On
SSLCertificateFile "C:/<APACHE_HOME>/ssl/ftp.pem"
</VirtualHost>


Folgende Komponenten wurden verwendet:
Betriebssystem: Windows Server 2008 Datacenter (x64)
Webserver: Apache 2.2.11 (mod_ssl, mod_rewrite, mod_authnz_ldap und mod_ldap aktiviert)
Domäne: Windows 2003 Domäne mit 2 Windows 2003 und 1 Windows 2008 DC (der Windows 2008 ist der Betriebsmaster).

Ich hoffe das hilft euch weiter.
Gandalf_the_Grey
 
Posts: 10
Joined: 24. September 2003 07:46

Return to Apache

Who is online

Users browsing this forum: No registered users and 5 guests