Автор Тема: Версии объектов в Open LDAP  (Прочитано 39443 раз)

Max

  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Версии объектов в Open LDAP
« : 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 но нифига не разобрался еще.

ЗЫ Работаю под винду.
« Последнее редактирование: 30 Январь 2013, 15:31:23 от Max »

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: Версии объектов в Open LDAP
« Ответ #1 : 31 Январь 2013, 02:26:40 »
Здравствуйте!
Работаю над тулой для синхронизации с LDAP серверами.
Существует проблема с производительностью.
В Opensource LDAP-серверах (по крайней мере, в OpenLDAP и ApacheDS) проблема синхронизации (репликации) решается применением технологии SyncRepl, описанной в RFC4533. Скорее всего лучшим решением для Вас будет сразу браться за реализацию этой технологии, чем изобретать велосипед (как, например, Вы собираетесь отслеживать удалённые из каталога записи?), тем более в Интернет можно найти уже написанные кем-то реализации на разных языках.

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

Можно ли заменить uSNChanged в Open LDAP, чем либо другим?
Какие варианты версионирования есть в Open LDAP?
Отметки времени изменения  в OpenLDAP помещаются в атрибуты entryCSN (для каждой записи) и contextCSN (для всего DIT, атрибут находит в корневой записи DIT). Концепция Change Sequence Number (CSN) описана в том же RFC4533.


Помогите настроить тестовый Open LDAP сервер. Какой free софт можно заюзать? Как это лучше сделать? смотрел в сторону Amazon EC2 но нифига не разобрался еще.
ЗЫ Работаю под винду.
Если Вы хотите развернуть OpenSource сервер каталогов под Windows, то, наверное, Вам больше подойдёт ApacheDS, поскольку OpenLDAP установить под Windows не так просто, да и версии будут староваты (многие возможности нереализованы).

Егор

Max

  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: Версии объектов в Open LDAP
« Ответ #2 : 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.
Спасибо, смотрю.

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: Версии объектов в Open LDAP
« Ответ #3 : 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-репозитория, собрать и поэкспериментировать.

Егор

tioteath

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Версии объектов в Open LDAP
« Ответ #4 : 05 Февраль 2013, 14:33:11 »
... тем более в Интернет можно найти уже написанные кем-то реализации на разных языках.
А не подскажете какие-нибудь варианты, кроме http://lsc-project.org

Max

  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: Версии объектов в Open LDAP
« Ответ #5 : 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. Пытаюсь сделать реквест и получаю след ошибку: "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
Следовательно, надо найти и доставить что ли ...
« Последнее редактирование: 05 Февраль 2013, 15:35:02 от Max »

Max

  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: Версии объектов в Open LDAP
« Ответ #6 : 05 Февраль 2013, 17:10:46 »
Last news:

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

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: Версии объектов в Open LDAP
« Ответ #7 : 06 Февраль 2013, 06:13:55 »
Здравствуйте!
А не подскажете какие-нибудь варианты, кроме http://lsc-project.org

Точно знаю, что есть API для python, наверняка есть и реализации, надо поискать, а на этой странице представлена реализация на Java и ссылки на два разных Java-API. А вообще, google знает всё =) .

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

В OpenLDAP нужно применить наложение syncprov к той БД, которую Вы собираетесь синхронизировать (возможно, придётся ещё подгрузить модуль syncprov.la). Если Вы настраиваете через динамическую конфигурацию, то посмотрите здесь.

Егор

Max

  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: Версии объектов в Open LDAP
« Ответ #8 : 06 Февраль 2013, 13:49:41 »
Большое спасибо за советы. Модуль подключил, Sync Request Control виден в списке supportedControls. К сожалению пока получаю exceptions "A protocol error occured". Копаю дальше ... Если можете подсказать, то было бы неплохо понять, как включить логирование для Open LDAP.

Max

  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: Версии объектов в Open LDAP
« Ответ #9 : 06 Февраль 2013, 14:02:50 »
В целом я начал потихоньку разбираться, где собственно находится конфигурация а как можно ее менять. Честно скажу, это дикий ад ... :)

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: Версии объектов в Open LDAP
« Ответ #10 : 06 Февраль 2013, 14:22:04 »
Весь наш сайт так или иначе посвящён проблеме настройки OpenLDAP =) . Если коротко, есть конфигурация динамическая и статическая, вторая -- проще и понятнее для новичков, но в целом обе не так сложны, как кажется на первый взгляд. Описание почти всех директив конфигурации можно найти на этой странице, конкретно про журналирование -- здесь.

Егор

Max

  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: Версии объектов в Open LDAP
« Ответ #11 : 07 Февраль 2013, 12:03:31 »
Егор, большое спасибо.

Я включил LDAP Sync Control для своего сервера. Все вроде ок, но при отправке запроса с контролом 1.3.6.1.4.1.4203.1.9.1.1 я получаю exception "A protocol error occured". И собственно пока не совсем понятно откуда ноги растут.

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: Версии объектов в Open LDAP
« Ответ #12 : 08 Февраль 2013, 09:39:02 »
Здравствуйте! Ошибка протокола -- она, как говорится, и в Африке ошибка протокола. Значит Ваш запрос неправильно сформирован. Самому, правда, не приходилось писать такие низкоуровневые вещи, и с API для .net я не знаком, поэтому могу лишь высказать теоретическое предложение. Поскольку syncrepl -- расширение операции Search, неплохо было бы для начала отработать простой поисковый запрос, без элементов управления. А когда сервер будет возвращать данные, можно навесить на SearchRequest Message элемент управления Sync Request Control.

Егор.