LDAP: List Organization Unit Users

I am trying to list all users located in an organizational unit in a domain using LDAP ( DirectorySearcher class).

The domain I'm connecting to is not the current domain, and the OU I'm trying to look at is on a very deep path with some OU names duplicating elsewhere, for example:

MyDomain.LOCAL / MyCompany / Clients / Contoso / Financial site / Financial services / Users

I can list all users in the domain with the following code:

// Build the directory entry
var directoryEntry = new DirectoryEntry(_ldapServer, _domain + "\\" +
    _systemUser, _systemPassword);
try
{
    // Bind to the native AdsObject to force authentication of the system user.
    // It will throw an exception if this is an invalid account
    object obj = directoryEntry.NativeObject;
}
catch (Exception ex)
{
    throw new Exception("Error authenticating system user. " + ex.Message, ex);
}

// create a directory searcher for that OU  
DirectorySearcher users = new DirectorySearcher(directoryEntry);

// set the filter to get just the users
users.Filter = "(&(objectClass=user)(objectCategory=Person))";

// add the attributes you want to grab from the search
users.PropertiesToLoad.Add("givenName");
users.PropertiesToLoad.Add("sn");
users.PropertiesToLoad.Add("mail"); 
users.PropertiesToLoad.Add("name"); 

// grab the users and do whatever you need to do with them
var allFound = users.FindAll();
foreach (SearchResult oResult in allFound)
{
    // etc
}

This works and captures a huge list of all users who are in the root (domain).
However, I want users to be under a specific unit.

I tried the following line:

var directoryEntry = new DirectoryEntry(_ldapServer +
    "/ou=MyCompany/Clients/Contoso/Financial Site/Financial Services/Users",
    _domain + "\\" + _systemUser, _systemPassword);

:

Error authenticating system user. An operations error occurred.

- , DirectorySearcher OU, ?


!

( ) ( ):

LDAP://DomainControllerServer/OU=Users,OU=Financial Services,
    OU=Financial Site,OU=Contoso,OU=Clients,OU=MyCompany,
    DC=MyDomain,DC=LOCAL
DomainControllerServer = IP address in my case.
-- FQDN: MyDomain.LOCAL - Period-separated into DC={part} list
 |-- OU: MyCompany
   |-- OU: Clients
     |-- OU: Contoso
       |-- OU: Financial site
         |-- OU: Financial Services
           |-- OU: Users

(\), , : + , \ = /.

, , , .

+3
1

, OU , LDAP. LDAP . : ou = , ou = , ou = , ou = Contoso, ou = , dc = MyCompany

(.. ou = dc =), , - .

, oResult.Path . , LDAP .

+3

Source: https://habr.com/ru/post/1756545/


All Articles