Как искать пользователей в LDAP, используя объект LdapConnection в C #? - PullRequest
0 голосов
/ 01 июня 2018

У меня есть требование для поиска пользователей в каталоге LDAP с использованием C #.Я могу сделать это, используя DirectoryEntry и DirectorySearcher, как показано в приведенном ниже коде:

SearchResultCollection sResults = null;

DirectoryEntry dEntry = new DirectoryEntry(_LDAPConnectionString);

DirectorySearcher dSearcher = new DirectorySearcher(dEntry);    
dSearcher.Filter = String.Format("(&(objectClass=user)(cn={0}))", userName);

sResults = dSearcher.FindAll();

Но необходимо создать объект LdapConnection, используя пользователя со стандартным доступом (всегда одинакового), как показанониже.И используйте этот конкретный LdapConnectionObject для поиска пользователей по имени пользователя.

LdapConnection ldapConnectionObject = new LdapConnection(
                new LdapDirectoryIdentifier(_hostName, _port),
                null,
                AuthType.Basic);
ldapConnectionObject.Bind(accessUserCredential);

Как использовать вышеуказанный ldapConnectionObject для поиска пользователей?

1 Ответ

0 голосов
/ 06 июня 2018

Я нашел ответ на поиск, используя объект LdapConnection.Таким образом, мы можем использовать метод SendRequest класса LdapConnection, используя SearchRequest, чтобы получить ответ на запрос поиска.В приведенном ниже примере я искал пользователя с помощью uid userName и получил его DN.

ldapConnection = new LdapConnection(
                new LdapDirectoryIdentifier(_hostName, _port),
                null,
                AuthType.Basic
                );
string searchFilter = String.Format("(&(objectClass=user)(uid={0}))", userName);
SearchRequest searchRequest = new SearchRequest
                (_userStore,
                 searchFilter,
                 System.DirectoryServices.Protocols.SearchScope.Subtree,
                 new string[] { "DistinguishedName" });

var response = (SearchResponse)ldapConnection.SendRequest(searchRequest);
string userDN = response.Entries[0].Attributes["DistinguishedName"][0].ToString();
...