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.