2014-11-24 61 views
2

'memberof'是Active Directory用户帐户上的属性,它描述了用户的组成员详细信息。如果我们使用.Net或Java来获取用户详细信息,那么我们根据用户所属组的“专有名称”获取'memberof'属性值。那么有什么办法可以在JAVA或.NET中使用objectGUID获取这些组名?如何根据objectGUID获取AD用户的'memberof'属性值?

回答

3

您可以使用“扩展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

+0

谢谢....你真棒。 – sagar 2014-11-25 07:15:01