2009-08-13 23 views
1

Je suis assez nouveau pour la programmation du service d'annuaire basé sur ldap en utilisant .net framework; D'où une question stupide basique.un utilisateur peut-il faire partie de plusieurs sous-arborescences dans une instance de service d'annuaire (basé sur LDAP)?

Je souhaite connaître les sous-arborescences auxquelles appartient un utilisateur particulier à l'aide de System.DirectoryServices.Protocol.

Tout d'abord, un utilisateur peut-il faire partie des multiples sous-arbres d'une instance de service de répertoire "a"? Si oui, comment puis-je trouver tous les sous-arborescences auxquelles un utilisateur appartient à l'aide de l'espace de noms "System.DirectoryServices.Protocol"?

Si un utilisateur appartient à "seulement" un sous-arbre particulier, alors je suppose que je peux trouver tous les DN de la sous-arborescence à partir du DN de l'utilisateur. S'il vous plaît laissez-moi savoir s'il y a un autre moyen efficace?

Mise à jour:

Pour être précis sur ma question, étant donné que c'est DN de mon objet utilisateur - « uid = Daffyd, OU = Ducks, OU = personnes, O = A « , que peut-il exister dans d'autres OU directement ou indirectement? Par exemple. Est-ce que "OU = Ducks" peut faire partie de n'importe quelle autre unité d'organisation que "People"? Ensuite, ma prochaine question, sans faire une sorte de manipulation de chaîne de DN de l'utilisateur, puis-je trouver en quelque sorte les noms de DN des nœuds parents que cet utilisateur en utilisant System.DirectoryService.Protocol efficacement?

Répondre

3

Je ne suis pas sûr de ce que vous entendez par un utilisateur "appartenant" à un sous-arbre. Un objet utilisateur existera dans un seul chemin dans le répertoire, et son DN vous dira quel est ce chemin (en pratique, c'est l'inverse: vous connaissez le DN et ensuite trouvez l'objet). C'est le point entier du nom distinctif DN ==: pour nommer les objets de façon unique.

Bien sûr, un utilisateur peut appartenir à plusieurs groupes (en tant que fonctionnalité d'Active Directory); ces groupes sont répartis dans le répertoire. Vous ne savez pas si vous avez également fait référence à des groupes lorsque vous utilisez le mot «appartenir». Editer: comme tout type d'objet utilisateur ne peut avoir qu'une seule unité mère, de même, chaque unité d'organisation ne peut avoir qu'un seul conteneur parent (généralement O ou OU). Le répertoire entier forme un arbre, aucun noeud ne peut avoir deux parents.

L'infrastructure traite uniquement les DN en tant que chaînes. Cependant, il existe des tiers DN parser libraries disponibles.

+0

Merci pour votre réponse. ce que je cherche en ce moment est que les groupes de service d'annuaire un utilisateur est membre et sous-arbres possibles que l'utilisateur fait partie de - par exemple - "uid = DaffyD, OU = Canards, OU = Personnes, O = A", DaffyD fait partie de "OU = Canards, OU = Personnes, O = A" et "OU = Personnes, O = A" et "O = A" sous-arbre. Par conséquent, j'essayais de trouver tous les DN des nœuds parents auxquels appartient un utilisateur. Par conséquent, se demandait, sauf DN, peut-il faire partie d'un autre sous-arbre? ... de votre poste, je peux voir - il ne peut pas. Y at-il un moyen que je puisse trouver ceux sans faire de manipulation de chaîne sur DN utilisateur? –

+0

Voir ma modification. Le framework DirectoryServices ne prend pas en charge l'analyse de DN. –

+0

Pour clarifier, il faut noter que la seule chose qui est garantie par la spécification LDAP, c'est que le DN est unique dans un répertoire donné. Tout autre attribut n'est pas garanti. Donc oui, vous pouvez avoir exactement le même objet dans deux OU différents dans le répertoire. Certains annuaires commerciaux ajoutent des vérifications spécifiques pour garantir l'unicité des autres attributs (par exemple samAccountName dans AD). –

3

Ceci est basé uniquement sur mon expérience avec Active Directory - mais je suppose d'autres répertoires LDAP vont gérer de la même:

Non, un utilisateur existe qu'une seule fois et ne peut donc se trouver dans un seul conteneur (généralement un OrganizationalUnit). Pour autant que je sache, il n'y a pas de concept de "liens symboliques" pour les utilisateurs.

Et pourquoi voulez-vous vraiment qu'un utilisateur existe à plusieurs endroits? Si vous voulez que l'utilisateur fasse partie de plusieurs sous-arbres afin de gérer les permissions, vous faites tout faux - vous ne devriez pas baser vos décisions pour autoriser ou non un utilisateur à une opération donnée sur son "emplacement". "dans la hiérarchie LDAP, mais plutôt sur l'appartenance à un groupe.

Les groupes LDAP sont destinés à gérer les autorisations, et un utilisateur peut être membre d'un nombre quelconque de groupes: votre relation 1: n peut être membre de groupes, et ces groupes sont responsables du traitement des autorisations. .

Marc

+0

Merci pour votre réponse. En fait, je ne veux pas qu'un utilisateur existe à plusieurs endroits. tout en construisant une solution générique, se demandait si c'est possible ... semble être non.pour un utilisateur particulier, y at-il de toute façon je peux trouver tous les DN où tout un pourrait chercher et trouver cet utilisateur avec searchscope.subtree? using system.directoryservices.protocol? –