Ldap operations error active directory

Using LDAP authentication in the IBM Content Manager OnDemand server to search for a user ID in a Microsoft Active Directory server results in an error labeled "Operations error."

Problem

Using LDAP authentication in the IBM Content Manager OnDemand server to search for a user ID in a Microsoft Active Directory server results in an error labeled «Operations error.»

Symptom

Attempting to log on through an OnDemand client results in the error «The server failed while attempting to logon.»

Taking an OnDemand server trace shows that the initial bind to the Active Directory server was successful, but the search failed with the error «Operations error»:

ArcLDAP_Authenticate LDAP server: example.com
ArcLDAP_Authenticate LDAP port: 389
ArcLDAP_Authenticate LDAP base DN: DC=example,DC=com
ArcLDAP_Authenticate LDAP bind DN: CN=sample-user,OU=sample,DC=example,DC=com
ArcLDAP_Authenticate LDAP bind attribute: sAMAccountName
ArcLDAP_Authenticate LDAP mapped attribute: sAMAccountName
ArcLDAP_Authenticate LDAP bind message file: (null)
ArcLDAP_Authenticate LDAP allow anonymous bind: FALSE
ArcLDAP_Authenticate Initialization successful
ArcLDAP_Authenticate Setting Protocol version to 3
ArcLDAP_Authenticate Simple bind as ‘CN=sample-user,OU=sample,DC=example,DC=com’ successful
ArcLDAP_Authenticate Searching with filter sAMAccountName=USER1
ArcLDAP_Authenticate LDAP search failed: Operations error
ArcLDAP_Authenticate User ‘USER1’ not found in LDAP
ArcLDAP_Authenticate RC=4

This error typically occurs when OnDemand is configured with a base distinguished name that searches across subordinate domains that are direct descendants of the directory server domain. In the previous example, the base distinguished name was set to

DC=example,DC=com

, which is at the root level of the Active Directory server

example.com

.

Cause

This problem is caused by referral chasing.

With referral chasing enabled, when a subtree search is performed, the Active Directory server sends back referrals that might require the LDAP API to bind (authenticate) to another Active Directory server at a different domain inside the Active Directory forest. If the bind fails due to incorrect credentials or insufficient access, the entire authentication process fails with the operations error.

On the Linux operating system, the OnDemand server uses the OpenLDAP API to communicate with the Active Directory server. The search scope is set to subtree and by default the referral option is enabled in the OpenLDAP API. With these conditions set, referral chasing might occur. See the Related information section for more information about referral chasing.

Environment

This error can occur with an OnDemand server running on Linux and UNIX operating systems, but does not occur when running an OnDemand server on Windows.

Resolving The Problem

There are three options that you can use to resolve this issue:

  • Search the Active Directory Global Catalog instead. This search can be accomplished by changing the ARS_LDAP_PORT in the ars.cfg file of your OnDemand server to communicate through the Active Directory Global Catalog port, 3268. When you make the change to search the global catalog instead, you bypass referral chasing. See the Related information section for more information about the Active Directory Global Catalog.
  • Disable referrals in the OpenLDAP API on the OnDemand server. To disable referrals, modify the file /etc/openldap/ldap.conf and add the following line to the end of the file:REFERRALS   off
  • Specify a non-root level base distinguished name in the ARS_LDAP_BASE_DN parameter of the ars.cfg file of your OnDemand server. In the example from the Symptom section, the base distinguished name is set at the root level or top level, DC=example,DC=com. Changing it to a lower, more specific, non-root level distinguished name such as OU=sample,DC=example,DC=com might resolve the problem by eliminating the possibility of a referral being issued to a subordinate domain.

Related Information

[{«Product»:{«code»:»SSEPCD»,»label»:»Content Manager OnDemand for Multiplatforms»},»Business Unit»:{«code»:»BU053″,»label»:»Cloud & Data Platform»},»Component»:»Server»,»Platform»:[{«code»:»PF016″,»label»:»Linux»},{«code»:»PF025″,»label»:»Platform Independent»}],»Version»:»8.4.1;8.4″,»Edition»:»»,»Line of Business»:{«code»:»LOB45″,»label»:»Automation»}}]

User-129623928 posted

Hi all.

I’m having the popular «Operations Error Occurred» error when trying to query AD from an ASP.NET 1 legacy app.

Code is as follows. AppSettings[«ADServer»] is set to «LDAP://DC=XXX,DC=YYY,DC=ZZZ»

DirectoryEntry searchRoot = new DirectoryEntry(ConfigurationSettings.AppSettings["ADServer"].ToString());
DirectorySearcher search = new DirectorySearcher(searchRoot);
search.Filter = String.Format("(SAMAccountName={0})", samAccount);
search.PropertiesToLoad.Add("samaccountname");
search.PropertiesToLoad.Add("givenname");
search.PropertiesToLoad.Add("sn");
search.PropertiesToLoad.Add("mail");
search.PropertiesToLoad.Add("userPrincipalName");
SearchResult result = search.FindOne();

Exception is as follows.

Type : System.Runtime.InteropServices.COMException, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
Message : An operations error occurred
Source : System.DirectoryServices
Help link :
ErrorCode : -2147016672
TargetSite : Void Bind(Boolean)
Stack Trace :    at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
   at System.DirectoryServices.DirectoryEntry.Bind()
   at System.DirectoryServices.DirectoryEntry.get_AdsObject()
   at System.DirectoryServices.DirectorySearcher.FindAll(Boolean findMoreThanOne)
   at System.DirectoryServices.DirectorySearcher.FindOne()

This works on PREPROD but not PROD. Support has confirmed the AD permissions are identical between PREPROD and PROD using adsiedit tool.

IIS / web.config settings are the same between PREPROD and PROD. i.e

  • Integrated authentication turned on.
  • Basic authentication turned on.
  • No anonymous access.
  • Domain / realm left blank.
  • Impersonation turned on and using authentication mode = windows in web.config.

I have run the same LDAP query from the command line on the PROD web server using the ldifde command as the same user that is trying to access the app and this worked OK, so it’s not a problem with the LDAP root or query syntax.

So in both environments it is trying to do the query as the logged-in user, but in PROD they don’t seem to have permission to do this programmatically. Or something else is the problem.

I was wondering if anyone could suggest anything else for me to examine as a diference between PREPROD and PROD?

Thanks in advance for any help

Lee.

Название ошибки Номер Пояснения/причины LDAP_SUCCESS 0 (x’00) Успешное завершение запроса. LDAP_OPERATIONS_ERROR 1 (x’01) Произошла ошибка операции. LDAP_PROTOCOL_ERROR 2 (x’02) Обнаружено нарушение протокола. LDAP_TIMELIMIT_EXCEEDED 3 (x’03) Превышено ограничение по времени LDAP. LDAP_SIZELIMIT_EXCEEDED 4 (x’04) Превышено ограничение по размеру LDAP. LDAP_COMPARE_FALSE 5 (x’05) Операция сравнения вернула «ложь». LDAP_COMPARE_TRUE 6 (x’06) Операция сравнения вернула «истину». LDAP_STRONG_AUTH_NOT_SUPPORTED 7 (x’07) Сервер LDAP не поддерживает строгую аутентификацию. LDAP_STRONG_AUTH_REQUIRED 8 (x’08) Для данной операции требуется прохождение строгой аутентификации. LDAP_PARTIAL_RESULTS 9 (x’09) Возвращены только частичные результаты. LDAP_REFERRAL 10 (x’0A) Указывает, что в ответе присутствует отсылка LDAP. Данное сообщение будет содержать один или несколько LDAP URL, по которым клиент должен перенаправить последующие операции для получения данного DN. LDAP_ADMINLIMIT_EXCEEDED 11 (x’0B) Указывает на то, что какие-либо ограничения, установленные на стороне сервера на количество записей, возвращаемое при поиске, были превышены. LDAP_UNAVAILABLE_CRITICAL_EXTENSION 12 (x’0C) Указывает на то, что элемент управления или правило соответствия, запрашиваемые в операции, не поддерживаются данным сервером. LDAP_CONFIDENTIALITY_REQUIRED 13 (x’0D) Конфигурация данного сервера требует обеспечения какой-либо формы конфиденциальности (TLS/SSL или SASL) при выполнении подсоединения с предоставляемым DN, например, определённая на глобальном уровне или в разделе database директива security может требовать соблюдения некоторой формы SSF при выполнении simple_bind или операции обновления. LDAP_SASL_BIND_IN_PROGRESS 14 (x’0E) Данный сервер в настоящий момент выполняет SASL-подсоединение и в этом контексте запрашиваемая операция является неверной. 15 (x’0F) Не используется. LDAP_NO_SUCH_ATTRIBUTE 16 (x’10) Указанный в запросе атрибут не присутствует в записи. LDAP_UNDEFINED_TYPE 17 (x’11) Указанный в запросе тип атрибута был неверным. LDAP_INAPPROPRIATE_MATCHING 18 (x’12) Указывает на то, что правило соответствия с расширяемым фильтром соответствия не поддерживается для указываемого типа атрибута. LDAP_CONSTRAINT_VIOLATION 19 (x’13) Указываемое в операции значение атрибута нарушает некоторые ограничения.
Возможные причины:
1. Строка слишком большой длины.
2. Неверный тип — строка записывается в числовой атрибут.
3. Неправильное значение, например, атрибут может принимать только определённое значение, либо одно из набора значений. LDAP_TYPE_OR_VALUE_EXISTS 20 (x’14) Указываемый тип атрибута или значение атрибута уже присутствует в записи.
Возможные причины:
1. При добавлении записи — один или несколько атрибутов в LDIF (или операции добавления/замены) для записи в точности совпадают (дублируются). LDAP_INVALID_SYNTAX 21 (x’15) Было указано неверное значение атрибута. 22 — 31 (x’16 — x’1F). Не используются. LDAP_NO_SUCH_OBJECT 32 (x’20) Указанная запись не существует в каталоге (DIT). LDAP_ALIAS_PROBLEM 33 (x’21) Псевдоним в DIT указывает на несуществующую запись. LDAP_INVALID_DN_SYNTAX 34 (x’22) Был указан синтаксически неверный DN. Может также возникнуть, если Вы используете файл в формате LDIF (dn: cn=xxx и т.д.) с утилитой ldapdelete, которой требуется только указание простого DN. 35 (x’23) Зарезервировано и не используется в LDAPv3 (LDAPv2: LDAP_IS_LEAF — указанный объект является листовым, то есть у него нет дочерних объектов). LDAP_ALIAS_DEREF_PROBLEM 36 (x’24) Возникла проблема при разыменовании псевдонима. Смотрите также описание ошибки 33. 37 — 47 (x’25 — x’2F). Не используются. LDAP_INAPPROPRIATE_AUTH 48 (x’30) Была указана проверка подлинности, которую невозможно осуществить, например, была указана LDAP_AUTH_SIMPLE, а у записи нет атрибута userPassword. LDAP_INVALID_CREDENTIALS 49 (x’31) Были предоставлены неверные учётные данные, например, неправильный пароль.
Дополнительный текст: unable to get TLS Client DN (невозможно получить DN клиента TLS).
Возможные причины:
1. Не предоставлен сертификат клиента в случае, если директива TLSVerifyClient установлена в ‘demand’.
2. Не предоставлен сертификат клиента в случае, если директива TLSVerifyClient установлена в ‘never’. В этом случае данное сообщение об ошибке не является фатальным и обслуживание клиента продолжается. LDAP_INSUFFICIENT_ACCESS 50 (x’32) У данного пользователя недостаточно прав доступа на осуществление запрашиваемой операции. LDAP_BUSY 51 (x’33) Данный сервер (DSA) слишком занят, чтобы выполнить запрашиваемую операцию. LDAP_UNAVAILABLE 52 (x’34) DSA недоступен. Он может быть, например, остановлен, поставлен на паузу или находится в процессе инициализации. LDAP_UNWILLING_TO_PERFORM 53 (x’35) Данный сервер (DSA) не желает выполнять запрашиваемую операцию.
Дополнительный текст: no global superior knowledge (нет сведений о глобальном вышестоящем каталоге) — имя записи, которую собираются добавить или модифицировать, не находится ни в одном из контекстов именования и у сервера нет правильной отсылки на вышестоящий каталог.
Возможная причина: не задан атрибут olcSuffix (директива suffix в slapd.conf) для DIT, на которое идёт ссылка.
Дополнительный текст: Shadow context; no update referral (теневой контекст (реплика); отсылки для выполнения обновлений не указано) — DIT, в которое собираются вносить изменения, является репликой в режиме «только для чтения», и, из-за отсутствия директивы updateref, невозможно возвратить отсылку.
Возможные причины:
1. Была попытка произвести запись в реплику «только для чтения» (в конфигурации syncrepl потребитель всегда в режиме «только для чтения»).
2. В конфигурации syncrepl multi-master в файле slapd.conf возможно пропущена директива mirrormode true.
3. Если slapd при запуске использовал файл slapd.conf, а директория slapd.d (cn=config) также существует, то при последующих модификациях DIT могут возникать ошибки с выдачей этого сообщения. В частности, в FreeBSD требуется наличие явного указания в rc.conf (slapd_cn_config=»YES») для принудительного использования slapd.d. LDAP_LOOP_DETECT 54 (x’36) Выявлено зацикливание. 54 — 59 (x’37 — x’3B). Не используются. LDAP_SORT_CONTROL_MISSING 60 (x’3C) В стандартах не используется. Только для Sun LDAP Directory Server. Сервер не получил требуемый элемент управления сортировки на стороне сервера. LDAP_RANGE_INDEX_ERROR 61 (x’3D) В стандартах не используется. Только для Sun LDAP Directory Server. Результаты запроса превысили диапазон, указанный в запросе. 62 — 63 (x’3E — x’3F). Не используются. LDAP_NAMING_VIOLATION 64 (x’40) Указывает на то, что данный запрос содержит нарушение именования в отношении текущего DIT. LDAP_OBJECT_CLASS_VIOLATION 65 (x’41) Произошло нарушение объектного класса при использовании текущего набора схемы данных, например, при добавлении записи был пропущен обязательный (must) атрибут. LDAP_NOT_ALLOWED_ON_NONLEAF 66 (x’42) Операция на нелистовой записи (то есть той, у которой есть дочерние записи) не разрешается. LDAP_NOT_ALLOWED_ON_RDN 67 (x’43) Операция над RDN, например, удаление атрибута, использующегося в качестве RDN в DN, не разрешается. LDAP_ALREADY_EXISTS 68 (x’44) Данная запись уже существует в этом DIT. LDAP_NO_OBJECT_CLASS_MODS 69 (x’45) Не разрешена модификация объектного класса. LDAP_RESULTS_TOO_LARGE 70 (x’46) Только C API (черновой RFC). Результаты слишком велики и не могут содержаться в данном сообщении. LDAP_AFFECTS_MULTIPLE_DSAS 71 (x’47) Указывает на то, что операцию необходимо выполнить на нескольких серверах (DSA), а это не разрешено. 72 — 79 (x’48 — x’4F). Не используются. LDAP_OTHER 80 (x’50) Произошла неизвестная ошибка.
Возможная причина:
Попытка удаления атрибута (особенно в cn=config), удаление которого запрещено.
Дополнительный текст: olcDbDirectory: value #0: invalid path: No such file or directory
Возможная причина: перед инициализацией новой базы данных директория для её размещения должна существовать. LDAP_SERVER_DOWN 81 (x’51) Только C API (черновой RFC). Библиотека LDAP не может связаться с LDAP-сервером. LDAP_LOCAL_ERROR 82 (x’52) Только C API (черновой RFC). Произошла некоторая локальная ошибка. Обычно это неудачная попытка выделения динамической памяти. LDAP_ENCODING_ERROR 83 (x’53) Только C API (черновой RFC). Произошла ошибка при кодировании параметров, отправляемых на LDAP-сервер. LDAP_DECODING_ERROR 84 (x’54) Только C API (черновой RFC). Произошла ошибка при декодировании результатов, полученных от LDAP-сервера. LDAP_TIMEOUT 85 (x’55) Только C API (черновой RFC). При ожидании результатов было превышено ограничение по времени. LDAP_AUTH_UNKNOWN 86 (x’56) Только C API (черновой RFC). В ldap_bind() был указан неизвестный метод аутентификации. LDAP_FILTER_ERROR 87 (x’57) Только C API (черновой RFC). Операции ldap_search() был предоставлен неправильный фильтр (например, количество открывающихся и закрывающихся скобок в фильтре не совпадает). LDAP_USER_CANCELLED 88 (x’58) Только C API (черновой RFC). Указывает на то, что пользователь прервал запрошенную операцию. LDAP_PARAM_ERROR 89 (x’59) Только C API (черновой RFC). Процедура ldap была вызвана с неверными параметрами. LDAP_NO_MEMORY 90 (x’5A) Только C API (черновой RFC). Выделение памяти (например, с помощью malloc(3) или другого механизма динамического выделения памяти) вызвало сбой в процедуре из библиотеки ldap. LDAP_CONNECT_ERROR 91 (x’5B) Только C API (черновой RFC). Библиотека/клиент не может соединиться с LDAP-сервером, указанным в URL. LDAP_NOT_SUPPORTED 92 (x’5C) Только C API (черновой RFC). Указывает на то, что в запросе используется функция, не поддерживаемая данным сервером. LDAP_CONTROL_NOT_FOUND 93 (x’5D) Только C API (черновой RFC). Запрашиваемый элемент управления не найден на данном сервере. LDAP_NO_RESULTS_RETURNED 94 (x’5E) Только C API (черновой RFC). Запрашиваемая операция завершилась успешно, но никаких результатов возвращено (получено) не было. LDAP_MORE_RESULTS_TO_RETURN 95 (x’5F) Только C API (черновой RFC). Запрашиваемая операция завершилась успешно, но должны быть возвращены дополнительные результаты, которые можно уместить в текущее сообщение. LDAP_CLIENT_LOOP 96 (x’60) Только C API (черновой RFC). Клиент выявил зацикливание, например, при следовании по отсылкам. LDAP_REFERRAL_LIMIT_EXCEEDED 97 (x’61) Только C API (черновой RFC). Сервер или клиент превысил какое-либо установленное ограничение при следовании по отсылкам.

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Ldap error 82 local error win32 err 8341
  • Ld roller reset error
  • Lcd init arduino ошибка
  • Latex error illegal character in array arg
  • Last day on earth ошибка синхронизации

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии