Получить идентификатор основной группы - PullRequest
3 голосов
/ 15 марта 2011

Попытка получить все группы, к которым принадлежит пользователь, ВКЛЮЧАЯ основную группу:

Делать что-то вроде этого:

DirectoryEntry entry = new DirectoryEntry(LDAP:/domainXYZ, userx, passwordx); 
DirectorySearcher searcher = new DirectorySearcher(entry);
searcher.Filter = String.Format("(&(objectClass=user)(userPrincipalName={0}{1}))", userY, LDAP://domainXYZ);
SearchResultCollection resultColln= searcher.FindOne();

string actualGroupName =string.empty;
string grp ="";
foreach (SearchResult singleRes in resultColln)
{
   foreach (object value in singleRes.Properties["memberof"])
   {
       grp = value.ToString();
       Console.WriteLine("group:{0} ", grp);
   }
}

Это дает мне все группы, кроме основной. Есть ли способ получить первичную группу name , используя primaryGroupID в дополнение к другим группам?

1 Ответ

1 голос
/ 15 марта 2011

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

string.Format("(&(objectCategory=group)(objectClass=group)(primaryGroupToken={0}))", singleRes.Properties["primaryGroupID"]);

primaryGroupToken - это вычисляемый атрибут, который автоматически создается Active Directory при создании группы.primaryGroupID, назначенный пользователю, сохраняет это значение.

На самом деле, если вы хотите простой способ действительно , я бы предложил UserPrincipal.GetGroups действительно легко,Единственное, что вы можете найти его только в .NET 3.5 или более поздней версии.

using (PrincipalContext context = new PrincipalContext(ContextType.Domain, "yourdomain.com"))
{
    using (UserPrincipal user = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, "YourUser"))
    {
        foreach (Principal p in user.GetGroups())
        {
             Console.WriteLine(p.Name);
        }
    }
 }

GetGroups возвращает вам только группу, в которой непосредственно содержится ваш пользователь, включая его основную группу.Если вы хотите получить все вложенные группы, вы можете использовать GetAuthorizationGroups.

...