PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → Ldap rechercher et afficher les membres d'un groupe
Ldap rechercher et afficher les membres d'un groupe
Débuté par JC LOYO, 11 jan. 2023 19:24 - 4 réponses
Membre enregistré
5 messages
Posté le 11 janvier 2023 - 19:24
Bonjour à tous.

Je souhaite récupérer les sAMAccountName d'un groupe de mon Active Directory.

Pas de soucis pour récupérer les sAMAccountName des utilisateurs dans mon OU Utilisateurs, mais pas ceux du groupe CN=APP - GestUtil .
Voici mon arborescence et mon code :
A noter que j'ai exactement le même problème en passant par LdapList, c'est OK pour OU utilisatateur mais retourne rien sur mon group.
Je dois peut-être passer par des class et category objet type memberOf mais je n'y arrive pas. Ou carrément autre chose.
Par avance merci de votre aide.





LdapUser est une chaîne = "OU=Utilisateurs,OU=PSV - Utilisateurs,DC=maison,DC=loc"
LdapGroupUser est une chaîne = "CN=APP - GestUtil,OU=Ressources,OU=PSV - Utilisateurs,DC=maison,DC=loc"

strNomUtilisateur est une chaîne
strDN est une chaîne
test est une chaîne

test = LDAPRecherche(SessionLDAP,LdapUser,"(objectClass=user)")
POUR TOUTE chaîne strDN de test SEPAREE PAR RC
strNomUtilisateur = LDAPValeur(SessionLDAP,strDN,"sAMAccountName")
Trace(strNomUtilisateur ) // OK fonctionne me retourne bien les sAMAccountName
FIN

test = LDAPRecherche(SessionLDAP,LdapGroupUser,"(objectClass=user)")
POUR TOUTE chaîne strDN de test SEPAREE PAR RC
strNomUtilisateur = LDAPValeur(SessionLDAP,strDN,"sAMAccountName")
Trace(strNomUtilisateur ) // Trace ne retourne rien ! vraiment rien !
FIN
Message modifié, 11 janvier 2023 - 19:50
Posté le 17 janvier 2023 - 14:33
Ton groupe n'est pas un "user" mais un "group", c'est ce qui doit empêcher la récupération de ton LDAPRecherche, ton filtre devrait être plutôt ceci à mon avis:

"(objectClass=Group)"

Je n'ai pas testé moi-même, mais à essayer.

Tu peux te référer ici pour des détails supplémentaires:

https://ldapwiki.com/wiki/Group-AD

Bon dev.
Membre enregistré
5 messages
Posté le 17 janvier 2023 - 21:15
Bonjour et merci pour ta réponse GMichaud.

Malheureusement même en changeant "user" par "group" ou "Group" je n'ai toujours pas de retour.
Si quelqu'un a un exemple concret ou une piste, je suis donc toujours preneur.
Par avance merci de votre aide.

LdapGroupUser est une chaîne = "CN=APP - GestUtil,OU=Ressources,OU=PSV - Utilisateurs,DC=maison,DC=loc"

strNomUtilisateur est une chaîne
strDN est une chaîne
test est une chaîne

test = LDAPRecherche(SessionLDAP,LdapGroupUser,"(objectClass=group)")
POUR TOUTE chaîne strDN de test SEPAREE PAR RC
strNomUtilisateur = LDAPValeur(SessionLDAP,strDN,"sAMAccountName")
Trace(strNomUtilisateur) // Toujours pas de retour
FIN
Message modifié, 17 janvier 2023 - 21:18
Posté le 05 juin 2025 - 10:34
Bonjour

Je cherche à faire la même chose... sans succès.
Auriez-vous trouvé une solution depuis deux ans ? :)

Merci !

JC LOYO a écrit :
Bonjour et merci pour ta réponse GMichaud.

Malheureusement même en changeant "user" par "group" ou "Group" je n'ai toujours pas de retour.
Si quelqu'un a un exemple concret ou une piste, je suis donc toujours preneur.
Par avance merci de votre aide.

LdapGroupUser est une chaîne = "CN=APP - GestUtil,OU=Ressources,OU=PSV - Utilisateurs,DC=maison,DC=loc"

strNomUtilisateur est une chaîne
strDN est une chaîne
test est une chaîne

test = LDAPRecherche(SessionLDAP,LdapGroupUser,"(objectClass=group)")
POUR TOUTE chaîne strDN de test SEPAREE PAR RC
strNomUtilisateur = LDAPValeur(SessionLDAP,strDN,"sAMAccountName")
Trace(strNomUtilisateur) // Toujours pas de retour
FIN
Membre enregistré
26 messages
Posté le 05 juin 2025 - 15:57
Bonjour,
Voici ce que j'utilisais dans ma collectivité pour gérer mon LDAP.
flc_UtilisateurDn est chaîne
flc_TableauDeDN est tableau dynamique
flc_TableauDeDN = allouer tableau dynamiquedynamique de 1 chaîne
flc_ChaineDeFiltre est chaîne = ""
flc_ChaineRechercheLdap est chaîne = ""
rlb_AppartientAuGroupe est booléen = Faux
flc_ChaineFiltrDuTableauDn est chaîne = ""
flc_Login est chaîne = ""
flc_ListeLogin est chaîne = ""
flb_retour est booléen
SI PAS FG_LdapConnexion()
flc_ListeLogin= Faux+TAB+LdapErreurConnexion
SINON
flc_ChaineDeFiltre = "(&(objectCategory=Group) (sAMAccountName=" +vpc_GroupeApplicatif + "))"
flc_ChaineRechercheLdap = LDAPRecherche(LdapSessionLdap,LdapOuGroupe,flc_ChaineDeFiltre)
SELON flc_ChaineRechercheLdap
CAS "" :
flc_ListeLogin = "Groupe " +vpc_GroupeApplicatif+" non trouvé"
flb_retour = Faux
AUTRE CAS :
rle_NombreDeMenbreApplicatif est entier = LDAPNbValeur(LdapSessionLdap, flc_ChaineRechercheLdap, "member")
rle_NombreDeMenbreApplicatifReel est entier = 0

POUR rle_pour=1 _À_ rle_NombreDeMenbreApplicatif
flc_valeurmembre est chaîne=UTF8VersChaîne(LDAPValeur(LdapSessionLdap, flc_ChaineRechercheLdap, "member", rle_pour))
SI Position(flc_valeurmembre,LdapOuUtilisateursCg,1) > 0 ALORS
rle_NombreDeMenbreApplicatifReel++
Dimension(flc_TableauDeDN,rle_NombreDeMenbreApplicatifReel)
flc_TableauDeDN[rle_NombreDeMenbreApplicatifReel]=flc_valeurmembre
FIN
FIN
flc_ListeLogin="/"
POUR rle_pour = 1 _À_ rle_NombreDeMenbreApplicatifReel
flc_ChaineDn est chaîne = flc_TableauDeDN[rle_pour]
flc_ChaineDeFiltre = "(&(objectCategory=person) (objectClass=user) (distinguishedName=" + flc_ChaineDn + "))"
flc_ChaineRechercheLdap = LDAPRecherche(LdapSessionLdap,LdapOuUtilisateur, flc_ChaineDeFiltre)
flc_UtilisateurDn = UTF8VersChaîne(LDAPValeur(LdapSessionLdap, flc_ChaineRechercheLdap, "cn", 1) )
flc_Login = Minuscule(UTF8VersChaîne(LDAPValeur(LdapSessionLdap, flc_ChaineRechercheLdap, "sAMAccountName", 1)))
flc_ListeLogin +=["/"]+ SansEspace(flc_Login) +"/"
FIN
Libérer flc_TableauDeDN
flb_retour=Vrai
FIN
FIN
LDAPDéconnecte(LdapSessionLdap)
RENVOYER (flb_retour,flc_ListeLogin)

Je peux vous envoyer mon composant interne
Voici la liste de toutes les fonctions utilisées :
FG_LdapConnexion
FG_LDapConnexionAvecLogin
FG_LdapControleAdresseMail
FG_LdapControleLoginPresentDansGroupeApplicatif
FG_LdapListeMailDuCd06
FG_LdapRechercheAdresseMailAPartirDuLogin
FG_LdapRechercheDepartementApartirLogin
FG_LdapRechercheDesLoginsDuGroupeApplicatif
FG_LdapRecherchedisplayNameApartirAdresseMail
FG_LdapRechercheDisplayNameApartirLogin
FG_LdapRechercheDuLogin
FG_LdapRechercheGéneriqueApartirLogin
FG_LdapRechercheLoginApartirDisplayName
FG_LdapRechercheLoginNameApartirNuméroMatricule
FG_LdapRechercheMatriculedAPartirDuLogin
FG_LdapRecherchePrenomApartirLogin
FG_LdapRechercheSnPointgivenNameApartirLogin
FG_LdapRechercheTableauDeLoginApartirNom


Mon adresse de messagerie est la suivante : alainpettiti@laposte.net