Hallo Zusammen, ich habe mit PHP noch nie gearbeitet, meine ActiveDirectory-Kenntnisse sind dürftig. Ich hoffe dennoch auf Eure Unterstützung.
Ich soll in PHP die User-Namen auf einem W2003standard aus der ActiveDirectory auslesen.
Ich habe die Daten für die Connection bekommen und benutze ein Beispiel aus dem Internet für den Verbindungsaufbau und der Ausgabe. Auf meinem Rechner bin ich ein Domänen-User in der Firma mit eingeschränkten Rechten. Die erforderlichen Programme für PHP musste ich unter einem Lokal-Admin-Account installieren.
Laut dem u. a. Beispiel, müsste es so einfach gehen. Allerdings bekomme ich keine Verbindung.
Code aus dem Internet:
[highlight=php]
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<?php
echo "Anfang";
// Base DN bezeichnet die oberste OU unter der die User zu finden sind.
$basedn = "ou=workinguser,dc=domain";
$server = "dnsname";
echo "<p>nach Base DN</p>";
// da der Zugriff auch ohne Anmeldung möglich sein soll, hab ich einen extra User im AD angelegt, um mich mit dem Server zu verbinden.
$username = "main";
$password = "irgendeinwort";
$ldap_port = "389";
echo "<p>Zugriffe des Users</p>";
// LDAP Abfrage
// ich hab einen erweiterten Filter genommen, da ich nicht nur die User des AD haben wollte, sondern auch Kontakteinträge.
// $filter = "(&(objectClass=user)(objectCategory=person)(cn=*) )";
$filter = "(&(|(objectClass=user)(objectClass=contact))(obje ctCategory=person)(cn=*))";
echo "<p>nach Filter</p>";
// Verbindung zum AD herstellen
if (!($connect = @ldap_connect($server))) {
echo "Verbindung : false";
die("Could not connect to ldap server");
}
echo "<p>nach Connection AD</p>";
// Ihr könnt dies auch nutzen, um z.B. Usernamen und Passwort z.B. fürs Intranet zu verifizieren.
$binding = @ldap_bind($connectid, $username, $password) or die("Fehler");
// AD auslesen
$search = @ldap_search($connectid, $basedn, $filter);
$result = @ldap_get_entries($connectid, $sr);
// in $result sind nun alle User mit allen Informationen enthalten.
echo $result;
?>
</body>
</html>
[/highlight]
Die Vorgaben werden alle ausgeführt, denn ich bekomme im Browser die "echo"-Zeilen angezeigt, bis auf die Zeile(34) echo "<p>nach Connection AD</p>";. Es erscheint nicht einmal die Exception aus der if-Schleife.
Im Browser erscheint nur:
Anfang
nach Base DN
Zugriffe des Users
nach Filter
Es sollte aber angezeigt werden:
Anfang
nach Base DN
Zugriffe des Users
nach Filter
nach Connection AD
Was sollte ich unbedingt beachten? Bzw. Was ist falsch oder könnte fehlen?
Vielen Dank für Eure Unterstützung
Gruß Lerando
Ich soll in PHP die User-Namen auf einem W2003standard aus der ActiveDirectory auslesen.
Ich habe die Daten für die Connection bekommen und benutze ein Beispiel aus dem Internet für den Verbindungsaufbau und der Ausgabe. Auf meinem Rechner bin ich ein Domänen-User in der Firma mit eingeschränkten Rechten. Die erforderlichen Programme für PHP musste ich unter einem Lokal-Admin-Account installieren.
Laut dem u. a. Beispiel, müsste es so einfach gehen. Allerdings bekomme ich keine Verbindung.
Code aus dem Internet:
[highlight=php]
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<?php
echo "Anfang";
// Base DN bezeichnet die oberste OU unter der die User zu finden sind.
$basedn = "ou=workinguser,dc=domain";
$server = "dnsname";
echo "<p>nach Base DN</p>";
// da der Zugriff auch ohne Anmeldung möglich sein soll, hab ich einen extra User im AD angelegt, um mich mit dem Server zu verbinden.
$username = "main";
$password = "irgendeinwort";
$ldap_port = "389";
echo "<p>Zugriffe des Users</p>";
// LDAP Abfrage
// ich hab einen erweiterten Filter genommen, da ich nicht nur die User des AD haben wollte, sondern auch Kontakteinträge.
// $filter = "(&(objectClass=user)(objectCategory=person)(cn=*) )";
$filter = "(&(|(objectClass=user)(objectClass=contact))(obje ctCategory=person)(cn=*))";
echo "<p>nach Filter</p>";
// Verbindung zum AD herstellen
if (!($connect = @ldap_connect($server))) {
echo "Verbindung : false";
die("Could not connect to ldap server");
}
echo "<p>nach Connection AD</p>";
// Ihr könnt dies auch nutzen, um z.B. Usernamen und Passwort z.B. fürs Intranet zu verifizieren.
$binding = @ldap_bind($connectid, $username, $password) or die("Fehler");
// AD auslesen
$search = @ldap_search($connectid, $basedn, $filter);
$result = @ldap_get_entries($connectid, $sr);
// in $result sind nun alle User mit allen Informationen enthalten.
echo $result;
?>
</body>
</html>
[/highlight]
Die Vorgaben werden alle ausgeführt, denn ich bekomme im Browser die "echo"-Zeilen angezeigt, bis auf die Zeile(34) echo "<p>nach Connection AD</p>";. Es erscheint nicht einmal die Exception aus der if-Schleife.
Im Browser erscheint nur:
Anfang
nach Base DN
Zugriffe des Users
nach Filter
Es sollte aber angezeigt werden:
Anfang
nach Base DN
Zugriffe des Users
nach Filter
nach Connection AD
Was sollte ich unbedingt beachten? Bzw. Was ist falsch oder könnte fehlen?
Vielen Dank für Eure Unterstützung
Gruß Lerando
Comment