如何让AD用户成为'的成员。 objectGUID的属性值?

时间:2014-11-24 12:54:55

标签: .net active-directory ldap jndi

'的memberOf'是Active Directory用户帐户中的属性,用于描述用户的组成员身份详细信息。如果我们使用.Net或Java来获取用户详细信息,那么我们会得到'成员'根据“杰出名称”的属性值'用户所属的组的成员。那么有没有办法在JAVA或.NET中以objectGUID的形式获得这些组名?

1 个答案:

答案 0 :(得分:4)

您可以使用“扩展DN”LDAP扩展控件。它只能在AD搜索中使用。

C#代码:

// Here I get the user object and then do a AD search.
// Instead, you may search for that user object directly.
DirectoryEntry userEntry = new DirectoryEntry("LDAP://<server>/<user DN>", "user", "pwd");

DirectorySearcher searcher = new DirectorySearcher(userEntry);
searcher.SearchScope = SearchScope.Base;
searcher.ExtendedDN = ExtendedDN.Standard;
searcher.PropertiesToLoad.Clear();
searcher.PropertiesToLoad.Add("memberOf");

SearchResult result = searcher.FindOne();

foreach (string val in result.Properties["memberOf"])
{
    Console.WriteLine(val);
}

根据传递给 ExtendedDN 的值,它将返回值

<GUID=guid_value>;<SID=sid_value>;dn
  • ExtendedDN.None (仅限DN,这是默认设置):
    CN=Administrator, CN=Users,DC=Fabrikam,DC=com

  • ExtendedDN.Standard (标准字符串格式):
    <GUID=bdbfd4b3-453c-42ee-98e2-7b4a698a61b8>;<SID=S-1-5-21-2354834273-1534127952-2340477679-500>;CN=Administrator, CN=Users,DC=Fabrikam,DC=com

  • ExtendedDN.HexString (十六进制格式):
    <GUID=b3d4bfbd3c45ee4298e27b4a698a61b8>;<SID=01050000000000051500000061eb5b8c50ef705befda808bf4010000>;CN=Administrator, CN=Users,DC=Fabrikam,DC=com

如果对象没有SID,则将省略SID部分:

<GUID=guid_value>;dn

有关扩展DN的详细信息,请检查:

http://msdn.microsoft.com/en-us/library/cc223349.aspx