Формулировка проблемы: Во многих LDAP-серверах
присутствует лимит на количество одновременно выдаваемых по запросу
записей. Например, в Microsoft Active Directory по умолчанию он
составляет 1000 записей[14]. Этот лимит предохраняет LDAP-сервер от чрезмерной
перегрузки. Для того, чтобы можно было получить любое количество
записей по запросу, разработан механизм
LDAP Control Extension for Simple Paged Results Manipulation
[15], который поддерживается большинством LDAPv3-совместимых
серверов, в том числе OpenLDAP[16].
Модуль синхронизации пользователей и групп Arta Synergy с каталогом LDAP (ни старый, ни новый[17]) на данный момент не поддерживает этот механизм, ввиду чего обработать количество записей LDAP сверх вышеописанного лимита невозможно.
Решение:
В обоих механизмах синхронизации
с LDAP (старом и новом, configuration version=2
)
необходимо реализовать поддержку возможности постраничной выборки
результатов. Для этого в секцию
<item><sync/></item>
необходимо
добавить параметр <page-size/>
:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <configuration xmlns="http://www.arta.kz/xml/ns/as/ldap-sync" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.arta.kz/xml/ns/as/ldap-sync ldap-sync_2.xsd" version="2"> <!-- version="2" присутствует в новом механизме синхронизации --> <item> <!-- ... Другие параметры ... --> <sync> <!-- Параметр включает постраничную выборку из LDAP и определяет, сколько записей должно быть в одной странице. Если параметр отсутствует либо значение в нём равно -1 (по умолчанию), постраничная загрузка не используется. --> <page-size>100</page-size> <!-- ... --> </sync> </item> </configuration>
Если на сервере не поддерживается расширение
LDAP Control Extension for Simple Paged Results Manipulation
[18] или ему подобное[19], то механизм синхронизации должен переключиться на
старое поведение, уведомив об этом соответствующим предупреждающим
сообщением в логе сервера.