2011-10-19 3 views
1

Quelqu'un connaît-il une langue fortement typée pour générer des requêtes LDAP en C#? Je souhaite m'éloigner deLangage de requête C# pour la création de requêtes LDAP

(&(|(objectClass=user)(objectClass=group)(objectClass=computer)(objectClass=contact))((objectGUID={0}))) 

et de préférence avoir une API fluide pour construire des requêtes logiques.

Répondre

3

Eh bien, vous pouvez essayer LINQ to LDAP

ici vous avez une tutorial

+0

Cela semble génial, pourquoi je ne l'ai pas trouvé plus tôt!? – hoetz

+0

@Malkier google mon ami, il est notre grand ami – Frederiek

+0

Après un rapide coup d'oeil, il a une limitation, cependant: Vous ne pouvez créer des requêtes que pour un type d'objet, c'est-à-dire un utilisateur. Rechercher sur les utilisateurs OU les groupes OU les ordinateurs semble impossible, voyons si nous pouvons pirater cela ... – hoetz

0
+3

Bien que ce lien puisse répondre à la question, il est préférable d'inclure les parties essentielles de la réponse ici et fournir le lien pour référence. Les réponses à lien uniquement peuvent devenir invalides si la page liée change. – Bucket

+0

@DesertIvy, Normalement, je serais d'accord avec vous, mais ce n'est pas un lien aléatoire à un article - c'est la page d'accueil d'un projet sur codeplex. – Matt

0

Si vous êtes sur .NET 3.5 et, vous pouvez également consulter la System.DirectoryServices.AccountManagement (S.DS.AM) espace de noms.

Lisez-tout ici:

Fondamentalement, vous pouvez définir un contexte de domaine et de trouver facilement les utilisateurs et/ou groupes AD:

// set up domain context 
PrincipalContext ctx = new PrincipalContext(ContextType.Domain); 

// find a user 
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, "SomeUserName"); 

if(user != null) 
{ 
    // do something here....  
} 

// find the group in question 
GroupPrincipal group = GroupPrincipal.FindByIdentity(ctx, "YourGroupNameHere"); 

// if found.... 
if (group != null) 
{ 
    // iterate over members 
    foreach (Principal p in group.GetMembers()) 
    { 
     Console.WriteLine("{0}: {1}", p.StructuralObjectClass, p.DisplayName); 
     // do whatever you need to do to those members 
    } 
} 

Le nouveau S.DS.AM rend vraiment facile de jouer wi les utilisateurs et les groupes dans AD! Beaucoup plus facile que l'approche DirectoryEntry précédente ...