Plesk und LDAP

raba

New Member
Hallo ihr alle,

ich habe die LDAP-Erweiterung von Plesk aktiviert. Aber leider gibt es keinen Erfolg. Wenn ich mir das Logfile auf dem LDAP-Server ansehe, dann steht dort:

....conn=2433812 op=0 do_bind: invalid dn (testuser)....

Klar, "testuser" ist viel zu wenig. Da müsste der voll qualifizierte Name stehen. Wo ist der Fehler? Eventuell auf dem LDAP-Server, weil nicht richtig gesucht werden kann?
 
Ein 'bind' bezeichnet im LDAP Jargon einen Login. D.h. normalerweise hat man einen technischen User, mit dem man sich am LDAP einloggt und anschliessend den User sucht, den man wirklich authentifizieren will.

1. Login mit technn User Credentials
2. suche nach <userinput> (zb samaccountname=testuser)
3. holen des DN vom testuser Objekt
4. nochmal Login mit DN und eingegebenen PW

Bei dir hakt es m.M. schon im ersten Schritt. Er kann keinen bind mit deinem Login machen.
 
Hallo Kannix,

vielen Dank für die schnelle Antwort. Ich habe zum weiteren Testen den Plesk-Benutzer "testuser" umbenannt in den vollen qualifizierten DN:

testuser -> uid=testuser,ou=andere,ou=People,dc=example,dc=com

Ich will mal meine Erkenntnisse zusammenfassen:

Jetzt funktioniert die Anmeldung bei Plesk über das im LDAP hinterlegte Passwort. Das entspricht genau dem, was du geschrieben hast: in diesem Fall entfällt das Suchen, so dass die Bindung unmittelbar vorgenommen werden kann.

Nun ist es dem normalen Benutzer nicht zuzumuten, den vollen DN einzugeben. Daher der von dir genannte technische Benutzer mit Suchrechten, der nach dem vollen DN sucht, wenn nur "testuser" eingegeben wird. So haben wir es in anderen Fällen auch gemacht und bei der entsprechenden Konfiguration den technischen Benutzer samt Passwort eingetragen.

Aber jetzt kommts: bei der LDAP-Erweiterung von Plesk kann ich nur den LDAP-Host eintragen. Für die Eintragung der Daten eines technischen Benutzers ist nichts vorgesehen.

Also ist hier offenbar nur anonymes binding möglich und das klappt offenbar nicht, oder?
 
Ich habe mal eben in die Sourcen vom LDAP Plugin hineingeschaut:

ldap-auth-2.0-4.zip\plib\hooks\Auth.php:
Code:
        curl_setopt($ch, CURLOPT_URL, 'ldap://' . pm_Settings::get('host') . ':389/');
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_USERPWD, pm_Settings::get('loginPrefix') . "$login:$password");
        $result = curl_exec($ch);

Der Login wird recht primitiv mit Hilfe von curl umgesetzt. Also kein DN fetch wie man es normalerweise macht. Wenn du fit bist, könntest die Stelle nach deinen Anforderungen aufbohren.
 
Ich bin (noch) nicht fit, werde mich aber bemühen.

Heißt das nach deinen Kenntnissen, es kann gar nicht funktionieren, wenn man nur den Benutzernamen eingibt?
 
Ganz genau.

Du müsstest 2 Queries draus machen. Etwas so:

curl -u "CN=User Name,CN=Users,DC=company,DC=com" "ldap://192.168.1.10/CN=Users,DC=company,DC=com?DN?sub?(sAMAccountName=user1)"

Und das Ergebnis als Login im ursprünglichen Query verwenden.

Btw: bei ldap Verbindungen sollte man mit ssl arbeiten (Port 636)
 
Hallo kannix,

vielen Dank für deinen Hinweis. Wenn ich ihn richtig verstanden habe, dann muss die UID des Benutzers in einem genau festgelegten Verzeichnis zu finden sein. Eine dem "sub" bei ldap_search entsprechende Anweisung gibt es wohl nicht. Da die Benutzer bei uns grundsätzlich an unterschiedlichen Stellen zu finden sind, ist eine solche Lösung wohl nicht machbar.

Es kommt ein weiteres hinzu. Ich habe mich eigentlich gefreut, dass ich nach vielen Jahren Wühlen auf unteren Ebenen in Plesk ein System gefunden habe, das ich mit einer benutzerfreundlichen GUI transparent konfigurieren kann. Nun ist also eine Erweiterung, die von Plesk zur Verfügung gestellt wird, so unmöglich programmiert, dass sie überhaupt nicht funktioniert? Das ist doch ein echter Bug, oder? Also werde ich wohl die Angelegenheit noch einmal in einem Forum zur Sprache bringen, das von Plesk-Entwicklern gelesen wird.

Gruß
Ralph
 
Hallo Ralph,

ja das sehe ich genauso. Da als Login 1:1 der eingegebene Userinput weitergereicht wird, kann das in den meisten Fällen nichts werden.

Ich weiss allerdings, dass man bei MS ADs auch den SamAccoountName(oder wars der UPN?) für den Bind verwenden kann. Daher sag ich mal vorsichtig, es 'könnte' dann schon gehen. Aber im Allgemeinen sollte man immer mit dem vollen DistinguishedName an den Server herantreten, und das macht das Plugin leider nicht.
 
Hallo kannix,

Volltreffer! Mit dem UPN funktioniert es.

In unserem AD (das jemand anderes verwaltet) steht beim UserPrincipalName immer die Mailadresse. Jetzt muss als Benutzername bei Plesk die im AD eingetragene Mailadresse verwendet werden und dann funktioniert es.

Jetzt muss ich noch sehen, ob auch bei der Authentifizierung für Mail auf das AD zurückgegriffen wird.

Vielen Dank für die Unterstüzung!

Ralph
 
Back
Top