Daten aus AD mit PHP LDAP auslesen

Latrobe

New Member
Hallo zusammen!

Hallo!

Habe derzeit ein ziemliches Problem mit der LDAP Realisierung auf einen Windows 2003 Server.

Ich möchte mit meiner Ubuntu Maschine mittels PHP Skript (LDAP) Daten aus dem Active Directory (Windows Server 2003) auslesen. Es sollte nichts gröberes sein, lediglich eine Abfrage der Userdaten im Active Directory.

Was ich bisher gemacht habe:

Apache2 installiert, PHP 5 installiert, PHP5-ldap installiert, Skript unter var/www/index.php geschrieben welches leider noch nicht funktionieren will.

Müssen noch andere Pakete oder Dateien konfiguriert werden? Google hat mir zwar Änderungen von diversen php.ini Dateien etc. verraten, jedoch bezieht sich das auf Windows und nicht Linux wie in meinem Fall sofern ich das richtig interpretiert habe.

Im späteren Teil möchte ich dann in dem Ordner wo das Skript liegt eine .htaccess Datei erstellen welches ein geschütztes Login bereitstellt, doch zuvor sollte mal ein normales anonymes Login auch funktionieren.

Hier ein paar kleine verschiedene PHP Skripte zur Verbindung bzw. Bind an einem LDAP Server (Win2k3) von Linux Ubuntu, wo ich leider immer Fehlermeldungen bekomme dass die Verbindung fehlgeschlagen ist trotz Anpassung dieser Anleitungen http://at.php.net/manual/de/functionap-connect.php

PS: kann ich die .local am ende der Domäne am Win2k3 verwenden wenn ich über ein Intranet von Linux aufs AD zugreifen möchte? Oder muss das eine .de .com sein?

Bitte bitte um Hilfe! Häng hier leider schon seit Wochen dran...
PHP:
<?php
 
$connectid = ldap_connect("ldap://192.168.50.18",389)
or die("Keine Verbindung zum LDAP server moeglich.");
ldap_set_option($connectid, LDAP_OPT_PROTOCOL_VERSION, 3);
@ldap_start_tls($connectid);
 
 
// Verbindung zum AD herstellen
$ldaprdn = 'cn=ldapuser,dc=nebula,dc=local'; // ldap rdn oder dn
$ldappass = "Ldappw8";
$sdn = 'ou=Marketing,dc=nebula,dc=local';
 
// LDAP Abfrage
// Ausgabe aller Daten
$filter = "uid=*";
 
 
 
?>

SKRIPT 2
PHP:
<?php
 
// verwenden von ldap bind
$ldaprdn = 'ldapuser'; 
$ldappass = 'Ldappw8';
 
$ldapconn = ldap_connect("ldap.nebula.local")
or die("Keine Verbindung zum LDAP server moeglich.");
 
if ($ldapconn) {
 
$ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);
 
if ($ldapbind) {
echo "LDAP bind erfolgreich...";
} else {
echo "LDAP bind fehlgeschlagen...";
}
 
}
 
 
?>
SKRIPT 3 (Anonym)
PHP:
<?php
 
// verwenden von ldap bind
 
$ldapconn = ldap_connect("ldap.nebula.local")
or die("Keine Verbindung zum LDAP server moeglich.");
 
if ($ldapconn) {
 
$ldapbind = ldap_bind($ldapconn);
 
if ($ldapbind) {
echo "LDAP bind erfolgreich...";
} else {
echo "LDAP bind fehlgeschlagen...";
}
 
}
 
 
?>
SKRIPT 4
PHP:
<?php
 
$con = @ldap_connect('ldaps://192.168.50.18', 636);
ldap_set_option($con, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($con, LDAP_OPT_REFERRALS, 0);
var_dump(@ldap_bind($con, 'ldapuser@nebula.local.', 'Ldappw8'));
 
?>

MOD: PHP Tags gesetzt.
 
Last edited by a moderator:
ldapsearch

Habe laut der Anleitung mir ein ldap connect für die kommandozeile auf dem client gebastelt (ubuntu) mit dem ich mich mit dem LDAP Server W2K3 mit AD verbinden möchte.

ldapsearch -h 192.168.50.18 -p 389 -D "uid=ldapuser,ou=Marketing,o=nebula,c=local"

Danach kommt die Aufforderung zur Eingabe des LDAP Passwortes: Hier gebe ich Ldappw8 ein. Sprich das Kennwort des ldapusers (Testuser) den ich im AD auf dem anderen Server angelegt habe.

Danach kommt eine Fehlermeldung: ldap_sasl_interactive_bind_s: Unkown authentication method (-6)

Ich habe beim zweiten Versuch TESTHALBER eine falsche IP angegeben und da kam die Fehlermeldung dass er den LDAP Server nicht erreichen kann (Can´t contact LDAP Server (-1) Daraus schließe ich dass er im Normalfall den LDAP Server zwar findet aber irgendwie Probleme mit dem Verbinden hat.

Was für ein LDAP Passwort muss ich eintragen? Laut google kann ich auf linux eines generieren, aber ist das auch korrekt wenn Linux in diesem Fall nur der "Client" ist? Muss das nicht das Windows Server LDAP Passwort sein? Wenn ja wo finde ich das?

Bitte um Hilfe.

Latrobe
 
Last edited by a moderator:
Danach kommt eine Fehlermeldung: ldap_sasl_interactive_bind_s: Unkown authentication method (-6)

Spricht Dein LDAP-Client GSSAPI?

Eventuell muß man dafür zusätzliche Packages installieren bzw. passende Compilerschalter setzen.
 
Was für ein LDAP Passwort muss ich eintragen? Laut google kann ich auf linux eines generieren, aber ist das auch korrekt wenn Linux in diesem Fall nur der "Client" ist? Muss das nicht das Windows Server LDAP Passwort sein? Wenn ja wo finde ich das?
Du kannst im AD festlegen, welche User lesend auf das LDAP zugreifen können. Normalerweise ist das jeder Domain User.
Die Idee einen User im AD anzulegen, war also richtig. ;)

Latrobe said:
PS: kann ich die .local am ende der Domäne am Win2k3 verwenden wenn ich über ein Intranet von Linux aufs AD zugreifen möchte? Oder muss das eine .de .com sein?

Es ist immer die Domain, welche der Domain Admin beim aufsetzen des AD festgelegt hat. Die solltest du wissen.

"ou=Marketing,o=nebula,c=local" geht schon mal gar nicht.
Wenn schon dann "ou=Marketing,dc=nebula,dc=local".
Dann lautet die Domain "nebula.local" und die UserID (CN) ist in der OU "Marketing" zu finden.
 
Back
Top