2010-02-17 7 views
3

Est-ce que quelqu'un a vu des bibliothèques solides pour travailler avec Active Directory (principalement des trucs liés à l'utilisateur) en C# et asp.net. Suis-je préférable de m'intégrer avec l'adhésion à l'ASP ou de construire quelque chose de personnalisé?C# Bibliothèque Active Directory

J'ai jeté un oeil à LINQtoAD mais il ne semble plus être actif.

Répondre

12

L'assemblage System.DirectoryServices et l'espace de noms sont-ils insuffisants?

+0

Je peux témoigner de 'System.DirectoryServices'! – Sapph

+1

Cela fonctionne très bien, mais il est pénible de travailler directement avec AD. –

+0

+1 pour être la première question que j'ai vu acceptée comme réponse. –

6

Si vous êtes sur .NET 3.5, vérifiez également System.DirectoryServices.AccountManagement pour l'interface beaucoup plus simple en matière de principes de manipulation - utilisateurs, groupes, ordinateurs, etc.

Vérifiez cette article MSDN comme une grande introduction en S .DS.AD:

Managing Directory Security Principals in the .NET Framework 3.5

Cheers!

0

Vous pouvez référencer mon projet OSS qui repose sur le modèle ActiveRecord comme suit (Parce qu'il est open source, vous pouvez trouver comment utiliser l'AD avec DirectoryEntry, DirectoryEntry ne supporte pas seulement le protocole LDAP mais aussi IIS, WIN et ainsi sur, donc je développe cette lib):

Par exemple: Mettre à jour un objet AD utilisateur.

using (var userObject = UserObject.FindOneByCN(this.ADOperator, “pangxiaoliang”)) 
{ 
    if(userObject.Email == "[email protected]") 
    { 
      userObject.Email = "[email protected]"; 
      userObject.Save(); 
    } 
} 

Par exemple: interroger des objets AD utilisateur.

// 1. CN end with "liu", Mail conatains "live" (Eg: [email protected]), job title is "Dev" and AD object type is user. 
// 2. CN start with "pang", Mail conatains "live" (Eg: [email protected]), job title is "Dev" and AD object type is user. 
      IFilter filter = 
       new And(
        new IsUser(), 
        new Contains(PersonAttributeNames.Mail, "live"), 
        new Is(PersonAttributeNames.Title, "Dev"), 
        new Or(
          new StartWith(AttributeNames.CN, "pang"), 
          new EndWith(AttributeNames.CN, "liu") 
         ) 
        ); 
// Output the user object display name. 
foreach (var userObject in UserObject.FindAll(this.ADOperator, filter)) 
{ 
    using (userObject) 
    { 
     Console.WriteLine(userObject.DisplayName); 
    } 
} 

Exemple: requête personnalisée.

IFilter filter = 
    new And(
     new IsUser(), 
     new Custom("(!userAccountControl:1.2.840.113556.1.4.803:=2)") 
     ); 
// Output the user object display name. 
foreach (var userObject in UserObject.FindAll(this.ADOperator, filter)) 
{ 
    using (userObject) 
    { 
     Console.WriteLine(userObject.DisplayName); 
    } 
} 

https://landpyactivedirectory.codeplex.com/documentation

Et vous trouverez facile à utiliser l'AD avec elle, si vous avez aucun intérêt avec elle s'il vous plaît ignorer ma réponse. Toute question sur AD s'il vous plaît contactez-moi :)