Как проверить, принадлежит ли пользователь к группе пользователей Active Directory в C # .NET - PullRequest
1 голос
/ 10 декабря 2010

Я пишу код, чтобы проверить, принадлежит ли пользователь определенной группе AD или нет.

Когда я проверил, вот как выглядит информация о группе:

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

Это группа, которую я хочу проверить, принадлежит ли пользователь (например, user1) к этой группе или нет.

Я пытаюсь поиграть с методом, который возвращает список групп, к которым принадлежит пользователь. Здесь я должен фильтровать на основе группы .

Код для отображения групп пользователей активного каталога, к которым принадлежит пользователь:

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();
    }

Я ценю ваш ответ.

Спасибо

1 Ответ

5 голосов
/ 10 декабря 2010

Если вы используете .NET 3.5 или более позднюю версию, взгляните на System.DirectoryServices.AccountManagement .С этими классами очень легко работать.Например,

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

Посмотрите на эту статью, которая дает небольшой обзор того же:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...