Мне рекомендовано использовать System.DirectoryServices.Protocols
, чтобы иметь возможность поддерживать подключение к серверам LDAP, отличным от Active Directoy здесь .
К сожалению, я не смог найти каталог должным образом. Я хотел бы иметь возможность получить определенный атрибут для пользователя (например, mail
). Это легко сделать в пространстве имен System.DirectoryServices
с помощью класса DirectorySearcher
. Как я могу добиться того же в System.DirectoryServices.Protocols
пространстве имен. Вот что у меня есть:
var domainParts = domain.Split('.');
string targetOu = string.Format("cn=builtin,dc={0},dc={1}", domainParts[0], domainParts[1]);
string ldapSearchFilter = string.Format("(&(ObjectClass={0})(sAMAccountName={1}))", "person", username);
// establish a connection to the directory
LdapConnection connection = new LdapConnection(
new LdapDirectoryIdentifier(domain),
new NetworkCredential() { UserName = username,
Password = "MyPassword" });
SearchRequest searchRequest = new SearchRequest(
targetOu, ldapSearchFilter, SearchScope.OneLevel, new[] {"mail"});
Этот код вызывает исключение типа DirectoryOperationException
с сообщением The object does not exist
.
Я подозреваю, что что-то не так с моими переменными targetOu
и ldapSearchFilter
.
Спасибо.