H. Коды возврата LDAP
В рамках данного руководства мы включили стандартные коды возврата LDAP из Приложения A. Коды возврата LDAP RFC4511(рус.), копия которого есть в директории doc/rfc исходных кодов OpenLDAP.
Мы приводим развёрнутое описание каждой ошибки, применительно к работе набора инструментов OpenLDAP. Расширения LDAP могут возвращать специфичные для них коды возврата, не являющиеся частью RFC4511(рус.). Для расширений, реализованных в OpenLDAP, возвращаются соответствующие коды возврата. Их значения описаны в документации к соответствующему расширению.
H.1. Неошибочные коды возврата
Эти коды возврата (называемые "неошибочными") не указывают на возникновение ошибки:
success (0), compareFalse (5), compareTrue (6), referral (10) и saslBindInProgress (14).
Коды возврата success, compareTrue и compareFalse указывают на успешное завершение (и, соответственно, называются "успешными").
Коды возврата referral и saslBindInProgress указывают клиенту, что для завершения операции нужно произвести дополнительное действие.
H.2. Коды возврата
Далее приведены описания существующих кодов возврата LDAP.
H.3. success (0) — успех
Указывает на успешное завершение операции.
Примечание: этот код не используется при операциях сравнения (Compare). Смотрите compareFalse (5) и compareTrue (6).
H.4. operationsError (1) — ошибка операций
Указывает, что данная операция нарушает последовательность выполнения по отношению к другим операциям (того же или отличного типа).
Например, этот код возвращается, если клиент пытается выполнить StartTLS (раздел 4.14 RFC4511(рус.)) в тот момент, когда выполнение других операций не закончено, либо когда слой TLS уже был установлен.
H.5. protocolError (2) — ошибка протокола
Указывает на получение сервером некорректно сформированных данных.
Применительно к операциям подсоединения (Bind), этот код также используется, чтобы указать, что сервер не поддерживает запрашиваемую версию протокола.
Применительно к расширенным (Extended) операциям, этот код также используется, чтобы указать, что сервер не поддерживает (по конструкции или конфигурации) расширенную операцию, ассоциированную с requestName.
Для операций запросов с указанием нескольких элементов управления данный код может использоваться, чтобы показать, что сервер не может проигнорировать порядок, в котором указаны элементы управления, либо была задана неверная или неопределённая комбинация элементов управления.
H.6. timeLimitExceeded (3) — превышение ограничения времени
Указывает, что заданное клиентом ограничение времени превышено до окончания операции.
H.7. sizeLimitExceeded (4) — превышение ограничения размера
Указывает, что заданное клиентом ограничение размера превышено до окончания операции.
H.8. compareFalse (5) — сравнение выявило ложь
Указывает, что операция сравнения (Compare) завершилась удачно и утверждение оказалось ложным (FALSE) или неопределённым (Undefined).
H.9. compareTrue (6) — сравнение выявило истину
Указывает, что операция сравнения (Compare) завершилась удачно и утверждение оказалось истинным (TRUE).
H.10. authMethodNotSupported (7) — метод аутентификации не поддерживается
Указывает на то, что данный метод или механизм аутентификации не поддерживается.
H.11. strongerAuthRequired (8) — требуется более строгая аутентификация
Указывает, что для завершения операции сервер требует строгой (более строгой) аутентификации.
При использовании операции с уведомлением о рассоединении (Notice of Disconnection), этот код указывает, что сервер обнаружил неожиданный обрыв или компрометацию установленного защищенного соединения между клиентом и сервером.
H.12. referral (10) — отсылка
Указывает, что для завершения операции требуется переход по отсылке (смотрите раздел 4.1.10 RFC4511(рус.)).
H.13. adminLimitExceeded (11) — превышение административного ограничения
Указывает, что было превышено административное ограничение.
H.14. unavailableCriticalExtension (12) — недоступное критическое расширение
Указывает на то, что критический элемент управления не распознан (смотрите раздел 4.1.11 RFC4511(рус.)).
H.15. confidentialityRequired (13) — требуется конфиденциальность
Указывает на то, что требуется защита конфиденциальности данных.
H.16. saslBindInProgress (14) — выполняется подсоединение SASL
Указывает, что для продолжения процесса аутентификации сервер требует посылки клиентом нового запроса на подсоединение, с тем же самым механизмом SASL (смотрите раздел 4.2 RFC4511(рус.)).
H.17. noSuchAttribute (16) — нет такого атрибута
Указывает, что поименованная запись не содержит указанный атрибут или значение атрибута.
H.18. undefinedAttributeType (17) — неопределённый тип атрибута
Указывает, что запрашиваемое поле содержит описание нераспознанного атрибута.
H.19. inappropriateMatching (18) — неподходящее соответствие
Указывает, что была предпринята попытка (например, в утверждении) использовать правило соответствия, не определённое для представленного в операции типа атрибута.
H.20. constraintViolation (19) — нарушение ограничений
Указывает, что клиент предоставил значение атрибута, не удовлетворяющее ограничениям, наложенным на этот атрибут моделью данных.
Например, этот код возвращается, когда атрибуту, имеющему ограничение на присвоение одного значения (SINGLE-VALUE), присваивается несколько значений.
H.21. attributeOrValueExists (20) — атрибут или значение существует
Указывает, что клиент предоставил атрибут или значение для добавления к записи, но такой атрибут или значение уже существует.
H.22. invalidAttributeSyntax (21) — неверный синтаксис атрибута
Указывает, что предполагаемые значения атрибута не соответствуют синтаксису атрибута.
H.23. noSuchObject (32) — нет такого объекта
Указывает, что объект не существует в DIT.
H.24. aliasProblem (33) — проблема с псевдонимом
Указывает, что возникла проблема с псевдонимом. Например, код, который использовался для указания псевдонима, был разыменован, и полученное в результате имя не оказалось именем объекта.
H.25. invalidDNSyntax (34) — неверный синтаксис DN
Указывает, что запрошенное поле LDAPDN или RelativeLDAPDN (например, в базе поиска, целевой записи, операции ModifyDN newrdn, и т.д.) не соответствует требуемому синтаксису или содержит значения атрибутов, не соответствующие синтаксису данных типов атрибутов.
H.26. aliasDereferencingProblem (36) — проблема с разыменованием псевдонима
Указывает, что возникла проблема при разыменовании псевдонима. Обычно такое случается, когда псевдоним появляется там, где он не разрешен, или доступ к нему запрещён.
H.27. inappropriateAuthentication (48) — несоответствующая аутентификация
Указывает на то, что сервер требует от клиента предоставить учётные данные в какой-либо форме, когда тот пытается подключиться анонимно или без указания учётных данных.
H.28. invalidCredentials (49) — неверные учётные данные
Указывает, что предоставленные учётные данные (например, имя пользователя и пароль) являются неверными.
H.29. insufficientAccessRights (50) — недостаточные права доступа
Указывает, что клиент не имеет достаточных прав доступа для выполнения операции.
H.30. busy (51) — занят
Указывает, что сервер слишком занят чтобы обслужить операцию.
H.31. unavailable (52) — недоступен
Указывает, что сервер остановлен, либо подсистема, требуемая для завершения операции, недоступна.
H.32. unwillingToPerform (53) — не желают выполнять
Указывает, что сервер не желает выполнять операцию.
H.33. loopDetect (54) — обнаружено зацикливание
Указывает, что сервер обнаружил внутреннее зацикливание (например, при разыменовании псевдонима или при выполнении цепочки операций).
H.34. namingViolation (64) — нарушение именования
Указывает, что имя записи нарушает ограничения именования.
H.35. objectClassViolation (65) — нарушение объектного класса
Указывает, что запись нарушает ограничения объектного класса.
H.36. notAllowedOnNonLeaf (66) — не разрешено на нелистовой записи
Указывает, что выполняемая операция является недопустимым действием на нелистовой записи.
H.37. notAllowedOnRDN (67) — не разрешено на RDN
Указывает, что выполняемая операция является недопустимой попыткой удаления значения, которое формирует относительное уникальное имя записи.
H.38. entryAlreadyExists (68) — запись уже существует
Указывает, что запрос (на добавление, перемещение, переименование) не может быть выполнен, поскольку целевая запись уже существует.
H.39. objectClassModsProhibited (69) — изменение объектного класса запрещено
Указывает, что попытка изменить объектный класс (классы) в атрибуте 'objectClass' записи запрещена.
Например, данный код возвращается, когда клиент пытается изменить структурный объектный класс записи.
H.40. affectsMultipleDSAs (71) — оказывается влияние на несколько DSA
Указывает, что выполняемая операция не может быть разрешена, поскольку это повлияет на несколько серверов (DSA).
H.41. other (80) — другое
Указывает, что на сервере произошла внутренняя ошибка.