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.
Vous devez vous connecter pour publier un commentaire.
Voici un script que nous avons pour l'immersion des AD de l'information, peut-être que ça vous aidera:
Utilisateur inventor96 a suggéré d'utiliser 11644473600 au lieu de 11676009600. Je peux confirmer 11644473600 est correct dans un environnement Linux - ma conjecture est que inventor96 est dans un environnement Windows.