Je veux écrire une requête LDAP qui teste si un utilisateur (sAMAccountName) est membre d'un groupe particulier. Est-il possible de faire cela pour que j'obtienne 0 ou 1 résultats?
Je suppose que je peux obtenir tous les groupes pour l'utilisateur et tester chacun d'eux pour une correspondance, mais je me demandais si je pouvais le regrouper dans une seule expression LDAP.
Des idées?
Merci
Réponses:
Vous devriez pouvoir créer une requête avec ce filtre ici:
et lorsque vous exécutez cela sur votre serveur LDAP, si vous obtenez un résultat, votre utilisateur "yourUserName" est bien membre du groupe "CN = YourGroup, OU = Users, DC = YourDomain, DC = com
Essayez de voir si cela fonctionne!
Si vous utilisez C # / VB.Net et System.DirectoryServices, cet extrait de code devrait faire l'affaire:
Attention: cela ne testera que les appartenances immédiates aux groupes, et ne testera pas l'appartenance à ce qu'on appelle le "groupe principal" (généralement "cn = Users") de votre domaine. Il ne gère pas les appartenances imbriquées, par exemple l'utilisateur A est membre du groupe A qui est membre du groupe B - le fait que l'utilisateur A soit vraiment membre du groupe B ne se reflète pas ici.
Marc
la source
Si vous utilisez OpenLDAP (c'est-à-dire slapd) qui est courant sur les serveurs Linux, alors vous devez activer la superposition memberof pour pouvoir correspondre à un filtre utilisant l'attribut (memberOf = XXX).
De plus, une fois que vous activez la superposition, elle ne met pas à jour les attributs memberOf des groupes existants (vous devrez supprimer les groupes existants et les rajouter). Si vous avez activé la superposition pour commencer, lorsque la base de données était vide, vous devriez être OK.
la source
J'ajouterais encore une chose à la réponse de Marc: l'attribut memberOf ne peut pas contenir de jokers, donc vous ne pouvez pas dire quelque chose comme "memberof = CN = SPS *", et vous attendre à ce qu'il trouve tous les groupes qui commencent par "SPS".
la source
Vous devez définir votre base de requête sur le DN de l'utilisateur en question, puis définir votre filtre sur le DN du groupe dont vous vous demandez s'il est membre. Pour voir si jdoe est membre du groupe de bureaux, votre requête ressemblera à ceci:
Si vous voulez voir TOUS les groupes dont il est membre, ne demandez que l'attribut 'memberof' dans votre recherche, comme ceci:
la source