2010-12-10 5 views
1

J'écris du code pour vérifier si l'utilisateur appartient à un groupe AD particulier ou non.Comment vérifier si l'utilisateur appartient à un groupe d'utilisateurs Active Directory en C# .NET

Quand je vérifié cela est la façon dont les détails du groupe sont:

"CN=Building - 28 (ALL),OU=Exchange Auto Groups,OU=AM,OU=schwab,DC=am,DC=corp,DC=schwab,DC=com" 

C'est le groupe que je veux vérifier si un utilisateur (Ex: user1) appartient à ce groupe ou non. J'essaie de jouer avec la méthode qui retourne la liste des groupes auxquels appartient l'utilisateur. Ici, je dois filtrer basé sur le Groupe.

code pour amener les groupes d'utilisateurs Active Directory que l'utilisateur appartient à:

private List<string> GetUserGroupMembership(string userName) 
    { 

     var directoryEntry = new DirectoryEntry(); 
     DirectorySearcher search = new DirectorySearcher(); 
    **//filter based on the username** 
     search.Filter = String.Format("(cn={0})", userName); 
    **//How to filter based on the Group "CN=Building - 28 (ALL),OU=Exchange Auto Groups,OU=AM,OU=schwab,DC=am,DC=corp,DC=schwab,DC=com"** 
     search.PropertiesToLoad.Add("memberOf"); 

     List<string> groupsList = new List<string>(); 

     SearchResult result = search.FindOne(); 
     if (result != null) 
     { 
      int groupCount = result.Properties["memberOf"].Count; 

      for (int counter = 0; counter < groupCount; counter++) 
      { 
       groupsList.Add((string)result.Properties["memberOf"][counter]); 
      } 
     } 
     return groupsList.ToList(); 
    } 

J'apprécie votre réponse.

Merci

Répondre

5

Si vous utilisez .NET 3.5 ou version ultérieure, puis jeter un oeil à System.DirectoryServices.AccountManagement. Ces classes sont très faciles à travailler. Par exemple,

PrincipalContext pc = new PrincipalContext(ContextType.Domain); 
UserPrincipal user = UserPrincipal.FindByIdentity(pc, "johndoe"); 
var groups = user.GetAuthorizationGroups() // or user.GetUserGroups() 

Jetez un oeil à ces article qui donne un peu de vue d'ensemble pour le même:

http://anyrest.wordpress.com/2010/06/28/active-directory-c/

http://msdn.microsoft.com/en-us/magazine/cc135979.aspx#S5

+0

Cela fonctionne Vinay. – Rita

Questions connexes