У меня есть некоторый рабочий код LDAP, в котором мы переписываем найденного пользователя, чтобы проверить пользователя, используя его выдающееся имя. Фактически это то, что происходит:OpenLdap C# bind с экранированными символами в Distinguished Name
string userDn = @"cn=Feat Studentl+umanroleid=302432,ou=Faculty of Engineering & Physical Sciences Administration,ou=Faculty of Engineering & Physical Sciences,ou=People,o=University of TestSite,c=GB";
string fullPath = @"LDAP://surinam.testsite.ac.uk:636/" + userDn;
DirectoryEntry authUser = new DirectoryEntry(fullPath, userDn, "mypassword", AuthenticationTypes.None);
authUser.RefreshCache();
Однако это приводит к ошибке неизвестная ошибка 80005000 при DirectoryEntry.Bind()
я подозревал, что проблема может быть, что DN имеет «+» и «=» в атрибуте CN. Поэтому после того, как выяснилось, что способ избежать этого должна быть с \ и шестнадцатеричное значение символа я попытался это:
string userDn = @"cn=Feat Studentl\2Bumanroleid\3D302432,ou=Faculty of Engineering & Physical Sciences Administration,ou=Faculty of Engineering & Physical Sciences,ou=People,o=University of TestSite,c=GB";
Однако я получаю ошибку:
Войти провал: неизвестное имя пользователя или плохо password
Я предполагаю, что это потому, что теперь он доволен запросом, но по какой-то причине он не соответствует DN пользователей.
Есть ли все-таки вокруг этого?
благодарит Грегори. Я попробовал ваш пример, и я уверен, что он поможет другим, но для меня он все еще дал ошибку 80005000 внутри. Я опубликовал пример DirectoryServices более низкого уровня, который мне удалось получить. – user1444886