#c# #ldap #novell
#c# #ldap #novell
Вопрос:
Сначала я хочу сказать, что, к сожалению, я не могу изменить код в этом конкретном сценарии, и что код работает везде, кроме этой единственной установки. Я подозреваю, что проблема с конфигурацией / разрешениями / доверием, и я надеюсь получить совет о том, как изменить среду, чтобы исправить это.
В этом конкретном месте, после запуска Search()
метода LdapConnection
, я получаю LdapSearchQueue
объект, который LdapSearchResult
по какой-то причине не содержит. Обратите внимание, что LdapSearchQueue
он содержит другие сообщения (в частности LdapSearchResultReference
, и LdapResponse
), но не LdapSearchResult
. Я могу вручную просмотреть объявление и убедиться, что теоретически оно должно иметь правильный отклик.
Очевидно, что это заканчивается entry
тем null
, что .
var filter = $"(amp;(objectClass=User)(sAMAccountName={<user_name>}))";
var searchBase = "DC=<domain_name>,DC=com";
var search = conn.Search(searchBase, LdapConnection.SCOPE_SUB, filter, null, false, null, null);
LdapMessage message;
LdapEntry entry = null;
while ((message = search.getResponse()) != null)
{
if (!(message is LdapSearchResult searchResultMessage))
{
continue;
}
entry = searchResultMessage.Entry;
}
Любой совет приветствуется
Комментарии:
1. Ну, мы не видим ни привязки, ни фильтра. Кроме того, совпадений может просто не быть. Вы пробовали использовать какой-нибудь браузер LDAP с такой же аутентификацией и фильтрами?
2. @schnitz77. Спасибо.. Я обновил вопрос: я не добавлял привязку / фильтр, потому что он работает / должен работать, но я добавляю фильтр. Я также отметил, что
LdapSearchQueue
содержит другие сообщения (в частностиLdapSearchResultReference
, иLdapResponse
), но неLdapSearchResult
. Я могу вручную просмотреть объявление и увидеть, что теоретически у него должен быть правильный ответ.3. Спасибо. Я немного смущен, поскольку вы упомянули Novell — вы запрашиваете eDirectory или Active Directory? Первый не обязательно имеет sAMAccountName вообще в зависимости от установленных расширений каталога.
4. @schnitz77: это Active Directory. Если AD не был настроен на использование sAMAccountName, не сможет ли он получить что-либо в
LdapSearchQueue
? Мы получаем некоторые сообщения в результате поиска: просто отсутствует определенное сообщение.5. Хорошо, теперь понял, вы запрашиваете Active Directory с помощью пакета NuGet Novell. Directory.Ldap, извините за путаницу. Я полагаю, вы не получите никакого соответствия, если это домен до Windows 2000, но это не будет соответствовать вашей проверке вручную.
Ответ №1:
в этом конкретном случае атрибуты UPN и sAMAccountName были разными (результат миграции несколько лет назад), тогда как обычно они имеют одинаковое значение. UPN был предоставлен в клиентском приложении и использовался для успешной аутентификации (для UPN), однако использование того же значения для sAMAccountName вернуло ошибку.