Форум проекта Pro-LDAP.ru

Общие вопросы по LDAP => Общий раздел => Тема начата: Max от 30 Январь 2013, 15:28:23

Название: Версии объектов в Open LDAP
Отправлено: Max от 30 Январь 2013, 15:28:23
Добрый день,

Буду благодарен любой информации по следующей проблеме:

Работаю над тулой для синхронизации с LDAP серверами.
Существует проблема с производительностью.

Для ускорения синхронизации с AD был использован аттрибут uSNChanged. При первом запуске мы берем все объекты сервера и получаем максимальный uSNChanged. При следующем запуске берем все объекты с uSNChanged больше исходного. Т.е. фактически берем только изменившиеся объекты.

Необходимо сделать подобное с Open LDAP. Но насколько я понял аттрибут uSNChanged может отсутствовать или вообще не поддерживаться. И это зависит от конфигурации конкретного Open LDAP сервера.

Вопросы:
Зависит ли uSNChanged в Open LDAP от конфигурации сервера или всегда есть?
Можно ли заменить uSNChanged в Open LDAP, чем либо другим?
Какие варианты версионирования есть в Open LDAP?

Дополнительный вопрос:
Помогите настроить тестовый Open LDAP сервер. Какой free софт можно заюзать? Как это лучше сделать? смотрел в сторону Amazon EC2 но нифига не разобрался еще.

ЗЫ Работаю под винду.
Название: Re: Версии объектов в Open LDAP
Отправлено: egor от 31 Январь 2013, 02:26:40
Здравствуйте!
Работаю над тулой для синхронизации с LDAP серверами.
Существует проблема с производительностью.
В Opensource LDAP-серверах (по крайней мере, в OpenLDAP и ApacheDS) проблема синхронизации (репликации) решается применением технологии SyncRepl, описанной в RFC4533 (http://pro-ldap.ru/tr/rfc/rfc4533.html). Скорее всего лучшим решением для Вас будет сразу браться за реализацию этой технологии, чем изобретать велосипед (как, например, Вы собираетесь отслеживать удалённые из каталога записи?), тем более в Интернет можно найти уже написанные кем-то реализации на разных языках.

Зависит ли uSNChanged в Open LDAP от конфигурации сервера или всегда есть?
В OpenLDAP такого атрибута нет, это майкросовтовская схема данных.

Можно ли заменить uSNChanged в Open LDAP, чем либо другим?
Какие варианты версионирования есть в Open LDAP?
Отметки времени изменения  в OpenLDAP помещаются в атрибуты entryCSN (для каждой записи) и contextCSN (для всего DIT, атрибут находит в корневой записи DIT). Концепция Change Sequence Number (CSN) описана в том же RFC4533 (http://pro-ldap.ru/tr/rfc/rfc4533.html#appendix-A).


Помогите настроить тестовый Open LDAP сервер. Какой free софт можно заюзать? Как это лучше сделать? смотрел в сторону Amazon EC2 но нифига не разобрался еще.
ЗЫ Работаю под винду.
Если Вы хотите развернуть OpenSource сервер каталогов под Windows, то, наверное, Вам больше подойдёт ApacheDS (http://pro-ldap.ru/tr/zytrax/ch4/apacheds.html), поскольку OpenLDAP установить под Windows не так просто (http://pro-ldap.ru/tr/zytrax/ch4/win2k.html#win2k), да и версии будут староваты (многие возможности нереализованы).

Егор
Название: Re: Версии объектов в Open LDAP
Отправлено: Max от 31 Январь 2013, 12:50:34
Цитировать
В OpenLDAP такого атрибута нет, это майкросовтовская схема данных.
Admin guide (http://www.openldap.org/doc/admin24/OpenLDAP-Admin-Guide.pdf), стр 222. “USN” overlay (plugin) используемый для “Maintain usnCreated and usnChanged attrs similar to Microsoft AD”.
Что это тогда за USN плагин? Зачем он нужен? Можно ли его юзать для поддержки usnChanged?

Цитировать
В Opensource LDAP-серверах (по крайней мере, в OpenLDAP и ApacheDS) проблема синхронизации (репликации) решается применением технологии SyncRepl, описанной в RFC4533.
Спасибо, смотрю.
Название: Re: Версии объектов в Open LDAP
Отправлено: egor от 31 Январь 2013, 13:55:51
Здравствуйте!
Admin guide (http://www.openldap.org/doc/admin24/OpenLDAP-Admin-Guide.pdf), стр 222. “USN” overlay (plugin) используемый для “Maintain usnCreated and usnChanged attrs similar to Microsoft AD”.
Что это тогда за USN плагин? Зачем он нужен? Можно ли его юзать для поддержки usnChanged?

Этот модуль помечен как "not yet released", ни в одном официальном релизе его не  было. Если интересно, можете скачать с git-репозитория, собрать и поэкспериментировать.

Егор
Название: Re: Версии объектов в Open LDAP
Отправлено: tioteath от 05 Февраль 2013, 14:33:11
... тем более в Интернет можно найти уже написанные кем-то реализации на разных языках.
А не подскажете какие-нибудь варианты, кроме http://lsc-project.org
Название: Re: Версии объектов в Open LDAP
Отправлено: Max от 05 Февраль 2013, 15:23:20
Добрый день.

Вообщем начал попытки реализации LDAP Sync for Open directory. Пишу на .net. Накопал, что для Open LDAP при запросе синхронизации используется LDAP control с OID "1.3.6.1.4.1.4203.1.9.1.1" http://www.oid-info.com/get/1.3.6.1.4.1.4203.1.9.1.1 (http://www.oid-info.com/get/1.3.6.1.4.1.4203.1.9.1.1). Пытаюсь сделать реквест и получаю след ошибку: "The server does not support the control. The control is critical.". Может кто то подскажет чего ...

Пока нашел то, что на моем тестовом сервере в списке supported controls только это:
        LDAP Proxied Authorization Control
   ManageDsaIT Control
   Subentries in LDAP
   Simple Paged Results Manipulation Control Extension
   Matched Values Control
   Post-Read Controls
   Pre-Read Controls
   Assertion Control
Следовательно, надо найти и доставить что ли ...
Название: Re: Версии объектов в Open LDAP
Отправлено: Max от 05 Февраль 2013, 17:10:46
Last news:

Подскажите плиз, как мне включить этот контрол?
Название: Re: Версии объектов в Open LDAP
Отправлено: egor от 06 Февраль 2013, 06:13:55
Здравствуйте!
А не подскажете какие-нибудь варианты, кроме http://lsc-project.org

Точно знаю, что есть API для python (http://www.python-ldap.org/doc/html/ldap-syncrepl.html), наверняка есть и реализации, надо поискать, а на этой странице (http://blog.normation.com/tag/apacheds/) представлена реализация на Java и ссылки на два разных Java-API. А вообще, google знает всё =) .

Подскажите плиз, как мне включить этот контрол?

В OpenLDAP нужно применить наложение syncprov к той БД, которую Вы собираетесь синхронизировать (http://pro-ldap.ru/tr/admin24/replication.html#Set%20up%20the%20provider%20slapd) (возможно, придётся ещё подгрузить модуль syncprov.la (http://pro-ldap.ru/tr/zytrax/ch6/#moduleload)). Если Вы настраиваете через динамическую конфигурацию, то посмотрите здесь (http://pro-ldap.ru/tr/zytrax/ch6/slapd-config.html#use-overlays).

Егор
Название: Re: Версии объектов в Open LDAP
Отправлено: Max от 06 Февраль 2013, 13:49:41
Большое спасибо за советы. Модуль подключил, Sync Request Control виден в списке supportedControls. К сожалению пока получаю exceptions "A protocol error occured". Копаю дальше ... Если можете подсказать, то было бы неплохо понять, как включить логирование для Open LDAP.
Название: Re: Версии объектов в Open LDAP
Отправлено: Max от 06 Февраль 2013, 14:02:50
В целом я начал потихоньку разбираться, где собственно находится конфигурация а как можно ее менять. Честно скажу, это дикий ад ... :)
Название: Re: Версии объектов в Open LDAP
Отправлено: egor от 06 Февраль 2013, 14:22:04
Весь наш сайт так или иначе посвящён проблеме настройки OpenLDAP =) . Если коротко, есть конфигурация динамическая и статическая, вторая -- проще и понятнее для новичков, но в целом обе не так сложны, как кажется на первый взгляд. Описание почти всех директив конфигурации можно найти на этой странице (http://pro-ldap.ru/tr/zytrax/ch6/), конкретно про журналирование -- здесь (http://pro-ldap.ru/tr/zytrax/ch6/#loglevel).

Егор
Название: Re: Версии объектов в Open LDAP
Отправлено: Max от 07 Февраль 2013, 12:03:31
Егор, большое спасибо.

Я включил LDAP Sync Control для своего сервера. Все вроде ок, но при отправке запроса с контролом 1.3.6.1.4.1.4203.1.9.1.1 я получаю exception "A protocol error occured". И собственно пока не совсем понятно откуда ноги растут.
Название: Re: Версии объектов в Open LDAP
Отправлено: egor от 08 Февраль 2013, 09:39:02
Здравствуйте! Ошибка протокола -- она, как говорится, и в Африке ошибка протокола. Значит Ваш запрос неправильно сформирован. Самому, правда, не приходилось писать такие низкоуровневые вещи, и с API для .net я не знаком, поэтому могу лишь высказать теоретическое предложение. Поскольку syncrepl -- расширение операции Search, неплохо было бы для начала отработать простой поисковый запрос, без элементов управления. А когда сервер будет возвращать данные, можно навесить на SearchRequest Message элемент управления Sync Request Control.

Егор.