Jaki jest najlepszy sposób uruchomienia wyszukiwania na bieżącym użytkowniku w celu pobrania wszystkich atrybutów, w tym skojarzonych grup w usłudze Active Directory przy użyciu LDAP/PHP?PHP LDAP Uzyskaj atrybuty użytkownika, w tym skojarzone grupy
Dla atrybutów, głównie tylko imię, nazwisko i wyświetlana nazwa.
Dla powiązanych grup, tylko te grupy, których członkiem jest użytkownik, na przykład funkcja memberOf.
Wypróbowałem kilka opcji, ale nie mogę uzyskać odpowiedniej kombinacji filtr/wyszukiwanie, a większość przykładów obejmuje pobieranie list użytkowników, którzy mają znaną grupę.
Próbowałem działa to po udanym wiążą:
$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>");
}
która zwraca następujący błąd: „Nie ma takiego obiektu”.
UPDATE:
Jest to ostatni blok próbowałem i jestem w stanie uzyskać wyniki, kiedy print_r zmienną $ informacji, jednak dla klauzuli wciąż błądzących gdzieś. Zmieniłem BaseDN aby tylko dc atrybuty:
$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";
}
}
}
print_r wyników to:
([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] => [email protected]) [4] => mail [count] => 5 [dn] => CN=George,OU=Users,OU=Accounts,DC=EQC,DC=local))
[Co próbowaliście?] (Http://whathaveyoutried.com) – Phil
Dzięki za komentowanie. Edytowałem oryginalne pytanie za pomocą jednego z wypróbowanych rozwiązań, które uruchamia wyszukiwanie atrybutu wyświetlanej nazwy, gdzie sAMAccountName jest równy bieżącemu użytkownikowi. Zwrócił błąd "Brak takiego obiektu". –