Active Directory主组的含义和目的是什么?

时间:2014-04-16 14:48:42

标签: active-directory ldap

我最近听说过Active Directory中的Primary Group概念,但到目前为止还不清楚它的目的是什么以及它是如何工作的。

作为同一问题的一部分,如何使用LDAP获取主要组?它似乎未列为memberOf属性。

1 个答案:

答案 0 :(得分:0)

我一直在使用此代码获取Active Directory中用户的主要组:

private string GetPrimaryGroup(DirectoryEntry aEntry, DirectoryEntry aDomainEntry)
{
   int primaryGroupID = (int)aEntry.Properties["primaryGroupID"].Value;
   byte[] objectSid = (byte[])aEntry.Properties["objectSid"].Value;

   StringBuilder escapedGroupSid = new StringBuilder();

   // Copy over everything but the last four bytes(sub-authority)
   // Doing so gives us the RID of the domain
   for(uint i = 0; i < objectSid.Length - 4; i++)
   {
      escapedGroupSid.AppendFormat("\\{0:x2}", objectSid[i]);
   }

   // Add the primaryGroupID to the escape string to build the SID of the primaryGroup
   for(uint i = 0; i < 4; i++)
   {
      escapedGroupSid.AppendFormat("\\{0:x2}", (primaryGroupID & 0xFF));
      primaryGroupID >>= 8;
   }

   // Search the directory for a group with this SID
   DirectorySearcher searcher = new DirectorySearcher();

   if(aDomainEntry != null)
   {
       searcher.SearchRoot = aDomainEntry;
   }

   searcher.Filter = "(&(objectCategory=Group)(objectSID=" + escapedGroupSid.ToString() + "))";
   searcher.PropertiesToLoad.Add("distinguishedName");

   return searcher.FindOne().Properties["distinguishedName"][0].ToString();
}

主要组是默认情况下每个新用户都添加到的组 - 通常是Domain Users