Comme vous pouvez le voir ci-dessous, je ne reçois aucune information d'utilisateur lorsque je fais une recherche LDAP au groupe de sécurité. Je veux utiliser le $_SERVER[remote_user]
pour vérifier si l'utilisateur est membre de ce groupe. Je voudrais également récupérer les informations de cet utilisateur et mettre à jour la base de données sql avec lui. Est-ce possible?Comment faire pour récupérer des informations d'utilisateur d'un groupe de sécurité Active Directory en utilisant LDAP et PHP
$dn = "CN=Intra,OU=Common Security Groups,DC=mydomain,DC=local";
$filter = "(member=*)";
$ad = ldap_connect("IP") or die("Couldn't connect to AD!");
ldap_set_option($ad, LDAP_OPT_PROTOCOL_VERSION, 3);
$bd = ldap_bind($ad, "[email protected]", "password") or die("Can't bind to server.");
$sr = ldap_search($ad,$dn,$filter);
$entries = ldap_get_entries($ad, $sr);
print_r($entries);
Retours ceci:
Array
(
[count] => 1
[0] => Array
(
[objectclass] => Array
(
[count] => 2
[0] => top
[1] => group
)
[0] => objectclass
[cn] => Array
(
[count] => 1
[0] => Intra
)
[1] => cn
[description] => Array
(
[count] => 1
[0] => Group for (LDAP) INTRANET server access
)
[2] => description
[member] => Array
(
[count] => 4
[0] => CN=Fname1 Lname1,OU=Mail enabled users,OU=Aberdeen,DC=mydomain,DC=local
[1] => CN=Fname2 Lname2,OU=Mail enabled users,OU=Forres,DC=mydomain,DC=local
[2] => CN=Fname3 Lname3,OU=Houston,DC=mydomain,DC=local
[3] => CN=Fname4 Lname4,OU=Mail enabled users,OU=Bergen,DC=mydomain,DC=local
)
[3] => member
[distinguishedname] => Array
(
[count] => 1
[0] => CN=Intra,OU=Common Security Groups,DC=mydomain,DC=local
)
[4] => distinguishedname
[instancetype] => Array
(
[count] => 1
[0] => 4
)
[5] => instancetype
[whencreated] => Array
(
[count] => 1
[0] => 20100711172407.0Z
)
[6] => whencreated
[whenchanged] => Array
(
[count] => 1
[0] => 20100712063949.0Z
)
[7] => whenchanged
[usncreated] => Array
(
[count] => 1
[0] => 17491499
)
[8] => usncreated
[usnchanged] => Array
(
[count] => 1
[0] => 17498823
)
[9] => usnchanged
[name] => Array
(
[count] => 1
[0] => Intra
)
[10] => name
[objectguid] => Array
(
[count] => 1
[0] =>
)
[11] => objectguid
[objectsid] => Array
(
[count] => 1
[0] =>
)
[12] => objectsid
[samaccountname] => Array
(
[count] => 1
[0] => Intra
)
[13] => samaccountname
[samaccounttype] => Array
(
[count] => 1
[0] => 268435456
)
[14] => samaccounttype
[grouptype] => Array
(
[count] => 1
[0] => -2147483646
)
[15] => grouptype
[objectcategory] => Array
(
[count] => 1
[0] => CN=Group,CN=Schema,CN=Configuration,DC=mydomain,DC=local
)
[16] => objectcategory
[count] => 17
[dn] => CN=Intra,OU=Common Security Groups,DC=mydomain,DC=local
)
)
Tout fonctionnait bien quand je la normale DN:
$dn = "OU=Mail enabled users,OU=Bergen,DC=mydomain,DC=local";
Mais un expert AD m'a dit que c'était un grand NO -NON et que je devrais utiliser les groupes de sécurité à la place: \
Merci pour la réponse rapide! Mais quand j'essaye d'utiliser votre filtre j'obtiens cette erreur: PHP Attention: ldap_search() [function.ldap-search]: Recherche: Erreur d'opérations dans C: \ inetpub \ wwwroot \ test \ test.php sur la ligne 33 PHP Attention: ldap_get_entries(): l'argument fourni n'est pas une ressource de résultat ldap valide dans C: \ inetpub \ wwwroot \ test \ test.php sur la ligne 35 – horgen
Puisque je vois que vous êtes sur Windows, voici un conseil. Téléchargez Softerra LDAP Browser 2.6 (c'est gratuit), connectez-le à votre AD et testez vos recherches avec l'outil. - En théorie, un DN de base de '" DC = mydomain, DC = local "' devrait fonctionner, cependant. – Tomalak
Merci. Maintenant, je ne sais pas ce qui se passe. J'ai fait une recherche de DN: "DC = mydomain, DC = local" FILTER: "(& (objectCategory = utilisateur) (memberOf = CN = Intra, OU = Groupes de sécurité communs, DC = mydomain, DC = local))" dans le navigateur LDAP sans aucun problème. Mais quand j'essaye de faire la même chose en PHP j'obtiens cette erreur: "PHP Avertissement: ldap_search() [function.ldap-search]: Recherche: Erreur d'opérations dans C: \ inetpub \ wwwroot \ test \ test.php en ligne 17 ":(Je ne reçois aucune erreur si j'utilise" OU = Bergen, DC = mydomain, DC = local "Mais ensuite je dois créer une boucle for pour chaque OU – horgen