Опубликован: 28.11.2014 | Уровень: для всех | Доступ: свободно | ВУЗ: Московский государственный университет имени М.В.Ломоносова
Лекция 13:

Протокол LDAP

Описание протокола

Основные свойства протокола LDAP:

  • Используется клиент-серверная модель.
  • В одном сообщении может быть сделано несколько запросов. В этом случае каждый ответ содержит идентификатор сообщения запроса.
  • В протоколе определено 9 основных операций – запрос ин-формации (2 операции), изменение информации (4 операции), аутентификация и управление (2 операции).
  • LDAPv3 предоставляет расширенные операции и расширенные возможности управления.

Для обеспечения расширяемости клиенты и серверы должны игнорировать те элементы, чьи теги они не распознали.

Клиент указывает версию, которую он использует как часть запроса bind. Клиенты могут определить версии протокола, которые поддерживает сервер, по атрибуту supportedLDAPVersion из корневой записи сервера. Серверы, которые реализуют версию 3, должны передавать данный атрибут.

Параметр baseDN (Base Object) на стороне клиента

Рис. 13.9. Параметр baseDN (Base Object) на стороне клиента

В протоколе LDAP определены следующие операции:

bindRequest
bindResponse
unbindRequest   
searchRequest
searchResEntry
searchResDone
searchResRef
modifyRequest
modifyResponse
addRequest
addResponse
delRequest
delResponse
modDNRequest
modDNResponse
compareRequest
compareResponse
abandonRequest
extendedReq
extendedResp

Все сообщения протокола имеют общий конверт, содержащий поля, необходимые всем операциям протокола. В настоящий момент общими полями являются только MessageID и, возможно, controls.

Пример сообщения searchRequest

Рис. 13.10. Пример сообщения searchRequest

MessageID из запроса должно иметь ненулевое значение, отличное от значений в любых других запросах для данного LDAP-соединения, частью которого является данное сообщение. Обычно клиенты увеличивают значение MessageID для каждого запроса.

Ответы сервера содержат значение MessageID из соответствующего запроса.

Control представляет собой способ указать дополнительную информацию в LDAP-сообщении. Control только изменяет семантику сообщения, к которому он присоединен.

Результат выполнения операции возвращается в поле resultCode, которое может принимать следующие значения:

Success				(0) 
operationsError			(1) 
protocolError			(2) 
timeLimitExceeded		(3) 
sizeLimitExceeded		(4) 
compareFalse			(5) 
compareTrue			(6) 
authMethodNotSupported		(7) 
strongAuthRequired		(8) 
referral				(10) 
adminLimitExceeded		(11) 
unavailableCriticalExtension	(12)
confidentialityRequired		(13) 
saslBindInProgress		(14) 
noSuchAttribute			(16) 
undefinedAttributeType		(17) 
inappropriateMatching		(18) 
constraintViolation		(19) 
attributeOrValueExists	(20) 
invalidAttributeSyntax	(21) 
- 22-31 неиспользуются -- 
noSuchObject			(32) 
aliasProblem			(33) 
invalidDNSyntax			(34) 
-- 35 зарезервировано для неопределенного isLeaf -- 
aliasDereferencingProblem	(36) 
- 37-47 неиспользуются -- 
inappropriateAuthentication	(48) 
invalidCredentials		(49) 
insufficientAccessRights 	(50) 
busy				(51) 
unavailable			(52) 
unwillingToPerform		(53) 
loopDetect				(54) 
- 55-63 неиспользуются -- 
namingViolation			(64) 
objectClassViolation		(65) 
notAllowedOnNonLeaf			(66) 
notAllowedOnRDN				(67) 
entryAlreadyExists			(68) 
objectClassModsProhibited		(69) 
- 70 reserved for CLDAP -- 
affectsMultipleDSAs			(71) 
- 72-79 не используются -- 
other			       (80)

Коды результата являются расширяемыми.