RFC: 4511
Оригинал: Lightweight Directory Access Protocol (LDAP): The Protocol
Предыдущие версии: RFC 2251, RFC 2830, RFC 3771
Категория: Предложенный стандарт
Дата публикации:
Автор:
Перевод: Pro-LDAP.ru

4.1.11. Элементы управления (Controls)

Элементы управления предоставляют механизм, с помощью которого семантика и аргументы существующих операций LDAP могут быть расширены. К одному сообщению LDAP могут быть присоединены один или несколько элементов управления. Действие элемента управления распространяется только на семантику того сообщения, к которому он присоединён.

Элементы управления, посылаемые клиентом, называются "элементами управления запроса" ("request controls"), а посылаемые сервером — "элементами управления ответа" ("response controls").

Controls ::= SEQUENCE OF control Control

Control ::= SEQUENCE {
     controlType             LDAPOID,
     criticality             BOOLEAN DEFAULT FALSE,
     controlValue            OCTET STRING OPTIONAL }

Поле controlType представляет собой точечно-цифровое представление идентификатора объекта OBJECT IDENTIFIER, уникально идентифицирующего данный элемент управления. Таким образом обеспечивается однозначность именования элементов управления. Часто элемент (элементы) управления ответа, предоставляемые в ответ на элемент управления запроса, разделяют с этим элементом управления запроса значения controlType.

Поле criticality имеет смысл только в элементах управления, присоединяемых к сообщениям запроса (за исключением UnbindRequest). Для элементов управления, присоединяемых к сообщениям ответа и UnbindRequest, поле criticality должно (SHOULD) быть установлено в FALSE, и должно (MUST) быть проигнорировано принимающей стороной протокола. Значение TRUE указывает на то, что выполнение операции без применения семантики элемента управления является неприемлемым. Конкретнее, обработка поля criticality выполняется следующим образом:

  • Если сервер не распознаёт тип элемента управления, определяет, что тот не соответствует выполняемой операции, или по какой-то другой причине не желает исполнять операцию с элементом управления, и если поле criticality установлено в TRUE, сервер не должен (MUST NOT) выполнять эту операцию и, для операций, у которых есть ответное сообщение, он должен (MUST) вернуть сообщение с результирующим кодом resultCode, установленным в unavailableCriticalExtension.

  • Если сервер не распознаёт тип элемента управления, определяет, что тот не соответствует выполняемой операции, или по какой-то другой причине не желает исполнять операцию с элементом управления, и если поле criticality установлено в FALSE, сервер должен (MUST) проигнорировать этот элемент управления.

  • Независимо от критичности, если элемент управления применяется к операции, он применяется последовательно и без исключений ко всей операции целиком.

2007 - 2017 © Русские переводы RFC, IETF, ISOC.