4.2. Операция подсоединения Bind
Функция операции Bind — разрешить обмен аутентификационной информацией между клиентом и сервером. Операция Bind должна рассматриваться как операция "аутентификации". Операционные, аутентификационные и связанные с безопасностью семантики данной операции даны в [RFC4513].
Запрос Bind определяется следующим образом:
BindRequest ::= [APPLICATION 0] SEQUENCE { version INTEGER (1 .. 127), name LDAPDN, authentication AuthenticationChoice } AuthenticationChoice ::= CHOICE { simple [0] OCTET STRING, -- 1 и 2 зарезервированы sasl [3] SaslCredentials, ... } SaslCredentials ::= SEQUENCE { mechanism LDAPString, credentials OCTET STRING OPTIONAL }
Поля BindRequest:
version:
номер версии, указывающий версию протокола, которая будет использоваться на уровне сообщений LDAP. В этом документе описывается версия 3 протокола. Согласования версий не производится. Клиент устанавливает версию в этом поле по своему желанию. Если сервер не поддерживает указанную версию, он должен (MUST) ответить сообщением BindResponse, в котором результирующий код resultCode установлен в protocolError.
name:
если поле не пустое, оно содержит имя объекта каталога, от которого клиент хочет произвести подсоединение. Это поле может принимать нулевое значение (строка нулевой длины) в целях анонимного подсоединения ([RFC4513], раздел 5.1) или при использовании SASL-аутентификации [RFC4422] ([RFC4513], раздел 5.2). При попытке найти поименованный объект, серверу не следует (SHALL NOT) выполнять разыменование псевдонимов.
authentication:
информация, используемая для аутентификации. Эта часть сообщения является расширяемой, как определено в разделе 3.7 [RFC4520]. Серверы, не поддерживающие предоставленный клиентом вариант аутентификационной информации, возвращают сообщение BindResponse с результирующим кодом resultCode, установленным в authMethodNotSupported.
Текстовые пароли (состоящие из последовательности символов с известным набором символов и кодировкой), передаваемые на сервер с использованием варианта simple конструкции AuthenticationChoice, должны (SHALL) передаваться как [Unicode], закодированный UTF-8 [RFC3629]. Перед передачей клиенту следует (SHOULD) подготовить текстовые пароли как строки запроса "query" путём применения к ним профиля SASLprep [RFC4013] алгоритма stringprep [RFC3454]. Пароли, состоящие из других данных (такие, как случайный набор октетов), не должны (MUST NOT) изменяться. Определение того, является ли пароль текстовым, возлагается на клиента.