Протоколы безопасного сетевого взаимодействия

       

Типичные переговоры LDAP операции Bind



Рис. 15.0.  Типичные переговоры LDAP операции Bind

Операция Bind передает аутентификационную информацию от клиента к серверу.

Запрос 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 }

Параметрами запроса Bind являются:

  • Version: номер версии, указывает используемую версию протокола. В настоящий момент максимальная версия протокола равна 3. Заметим, что переговоров о номере версии не ведется, клиент просто посылает данный параметр. Если сервер не поддерживает указанную версию, он отвечает protocolError в поле resultCode в BindResponce.
  • Name: имя объекта директории, к которой клиент хочет присоединиться. Данное поле может иметь нулевое значение (строку нулевой длины) для анонимного связывания или когда используется SASL аутентификация.
  • Authentication: информация, используемая для аутентификации имени, указанного в запросе Bind. Серверы, которые не поддерживают выбор, предлагаемый клиентом, будут возвращать authMethodNotSupported в коде результата для запроса Bind. Аутентификацию с использованием механизмов SASL мы рассматривать не будем, так как эти способы аутентификации в инфраструктуре открытого ключа при доступе к репозиторию LDAP сейчас не используются.

Ответ Bind определяется следующим образом.

BindResponse ::= [APPLICATION 1] SEQUENCE { COMPONENTS OF LDAPResult, serverSaslCreds [7] OCTET STRING OPTIONAL }

BindResponce состоит из индикации от сервера статуса запроса клиента на аутентификацию.

Если связывание прошло успешно, то resultCode будет success, в противном случае он должен содержать OperationError или другую индикацию неудачной аутентификации. Если сервер не поддерживает требуемую клиенту версию протокола, он должен установить resultCode в protocolError.



Содержание раздела