LDAP de PHP Obtenir les Attributs de l'Utilisateur, y Compris les Groupes Associés

Quelle est la meilleure façon d'exécuter une recherche sur l'utilisateur actuel pour récupérer tous les attributs, y compris les groupes dans Active Directory à l'aide de LDAP /PHP?

Pour les attributs, principalement juste le prénom, le nom, et le nom d'affichage.

Pour les groupes associés, juste les groupes dont l'utilisateur est membre, comme le memberOf fonction.

J'ai essayé quelques options, mais n'arrive pas à obtenir le bon filtre /recherche de la combinaison et de la plupart des exemples de la récupération de la liste des utilisateurs où il y a un groupe connu.

J'ai essayé de courir après une identification positive:

$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>");
 }

Qui renvoie l'erreur suivante: "un tel objet".

Mise à JOUR:

C'est le dernier bloc que j'ai essayé et je suis en mesure d'obtenir des résultats quand je print_r de $info variable, cependant pour la clause est encore égaré quelque part. J'ai changé le nom unique de base à tout les dc attributs:

$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";
            }   
    }
    }

Le print_r les résultats sont les suivants:

( [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 ) )
  • Qu'avez-vous essayé?
  • Merci pour les commentaires. J'ai édité la question d'origine avec une solution j'ai essayé, qui lance une recherche pour le nom d'affichage d'attribut où le sAMAccountName est égal à l'utilisateur actuel. Il a renvoyé un "Sans objet" d'erreur.
InformationsquelleAutor George Ortiz | 2013-01-16