Как я могу получить имя группы из группы Active Directory с помощью .NET? - PullRequest
0 голосов
/ 09 апреля 2010

У меня есть код, который работал с более старым сервером Active Directory, и теперь я указал его на новую систему Windows Server 2008 AD. Теперь имена групп возвращаются с SID, а не с именами. Я не знаю достаточно о стороне AD, чтобы знать, есть ли способ заставить новый сервер AD работать как старый сервер AD.

Мой код основан на поставщике ролей Active Directory для BlogEngine.NET в Codeplex.

http://blogengineadrp.codeplex.com/sourcecontrol/network/Show?projectName=BlogEngineADRP&changeSetId=5843#138380

Я считаю, что это строка, которую мне нужно будет настроить.

IdentityReferenceCollection irc = ExpandTokenGroups(user).Translate(typeof(NTAccount));

Прямо сейчас ExpandTokenGroups возвращает значение SID, в то время как Translate работал над тем, чтобы изменить его на понятное человеку имя группы. Я хотел бы знать, если я должен передать в другой тип, чем NTAccount для перевода.

Что я могу сделать, чтобы получить имя группы?

Ответы [ 2 ]

0 голосов
/ 09 апреля 2010

Это моё решение в C #, которое не оптимально, но работает.

    public override string[] GetRolesForUser(string username)
    {
        // list to store names of roles
        List<String> roles = new List<string>();

        // get the user directory entry
        DirectoryEntry user = getUser(username);

        foreach (String prop in user.Properties["memberOf"])
        {
            if (prop.IndexOf("CN=") == 0 && prop.IndexOf(",") != -1)
            {
                var groupName = prop.Substring("CN=".Length, prop.IndexOf(",") - "CN=".Length);
                roles.Add(groupName);
            }
        }

        return roles.ToArray();
    }
0 голосов
/ 09 апреля 2010

Хорошее объяснение решения можно найти по адресу: Перевод между именами и SID .

Обычно вы вызываете вызов функции <a href="http://msdn.microsoft.com/en-us/library/ms721799(v=VS.85).aspx" rel="nofollow noreferrer">LsaLookupSids</a>.

Надеюсь, это поможет!

...