PHP LDAP User Bekommen Parametern, Einschließlich der Dazugehörigen Gruppen
Was ist der beste Weg, um eine Suche auf den aktuellen Benutzer abrufen, alle Attribute einschließlich der dazugehörigen Gruppen in Active Directory mit LDAP /PHP?
Für Attribute, vor allem nur Vorname, Nachname und Anzeigename.
Verbundenen Gruppen nur die Gruppen der Benutzer Mitglied ist, wie das memberOf-Funktion.
Habe ich versucht, ein paar Möglichkeiten, aber kann nicht scheinen, um die richtige filter - /such-Kombination und die meisten Beispiele abdecken abrufen der Liste der Benutzer, wo es eine bekannte Gruppe.
Habe ich versucht, läuft das nach einem erfolgreichen bind:
$attributes = array("displayname");
$filter = "(&(sAMAccountName=$username))";
$result = ldap_search($ds, $ldapconfig['basedn'], $filter, $attributes);
$entries = ldap_get_entries($ds, $result);
if($entries["count"] > 0){
echo "displayName: ".$entries[0]['displayname'][0]."<br/>";
} else {
echo("msg:'".ldap_error($ds)."'</br>");
}
Gibt die folgende Fehler: "No such object".
UPDATE:
Dies ist der Letzte block habe ich versucht, und bin in der Lage, Ergebnisse zu erzielen, wenn ich print_r des $info-variable, aber die for-Klausel ist immer noch irrenden irgendwo aus. Ich habe die Basis-DN, um nur die dc-Attribute:
$filter="($SearchField=$SearchFor)";
$sr=ldap_search($ds, $basedn, $filter, $LDAPFieldsToFind);
$info = ldap_get_entries($ds, $sr);
if($info["count"] > 0) {
for ($x=0; $x<$info["count"]; $x++) {
$sam=$info[$x]['samaccountname'][0];
$giv=$info[$x]['givenname'][0];
$tel=$info[$x]['telephonenumber'][0];
$email=$info[$x]['mail'][0];
$nam=$info[$x]['cn'][0];
$dir=$info[$x]['homedirectory'][0];
$dir=strtolower($dir);
$pos=strpos($dir,"home");
$pos=$pos+5;
if (stristr($sam, $SearchFor) && (strlen($dir) > 8)) {
print "\nActive Directory says that:\n";
print "CN is: ".$nam." \n";
print "SAMAccountName is: ".$sam." \n";
print "Given Name is: ".$giv." \n";
print "Telephone is: ".$tel." \n";
print "Home Directory is: ".$dir." \n";
}
}
}
Den print_r Ergebnisse:
( [count] => 1 [0] => Array ( [cn] => Array ( [count] => 1 [0] => George ) [0] => cn [givenname] => Array ( [count] => 1 [0] => George ) [1] => givenname [memberof] => Array ( [count] => 4 [0] => CN=EQCStaff,CN=Users,DC=EQC,DC=local [1] => CN=RDS Users,OU=Security Groups,OU=Service,DC=EQC,DC=local [2] => CN=SFTP Client Folders,OU=Security Groups,OU=Service,DC=EQC,DC=local [3] => CN=EQC Staff,OU=Security Groups,OU=Service,DC=EQC,DC=local ) [2] => memberof [samaccountname] => Array ( [count] => 1 [0] => gortiz ) [3] => samaccountname [mail] => Array ( [count] => 1 [0] => user@domain.com ) [4] => mail [count] => 5 [dn] => CN=George,OU=Users,OU=Accounts,DC=EQC,DC=local ) )
Vielen Dank für die Kommentare. Ich bearbeitete die ursprüngliche Frage mit einer Lösung die ich habe versucht, die führt eine Suche für das display-name-Attribut, wo der "sAMAccountName" entspricht den aktuellen Benutzer. Wird es wieder ein "No such object" Fehler.
InformationsquelleAutor George Ortiz | 2013-01-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist ein Skript, die wir für dumping-AD-information, vielleicht hilft es dir:
Benutzer inventor96 hat vorgeschlagen, 11644473600 statt 11676009600. Kann ich bestätigen 11644473600 ist richtig in einer Linux-Umgebung - meine Vermutung ist, dass inventor96 ist in einer Windows-Umgebung.
InformationsquelleAutor Benny Hill