OpenLDAP slapo-unique терпит неудачу с UID

OpenLDAP slapo-unique терпит неудачу с UID

У меня есть несколько ветвей в моем каталоге LDAP, которые все используют атрибут UID как часть DN. Недавно мне было поручено обеспечить уникальность атрибута UID по всем направлениям, чтобы UID не мог совпадать из одного поддерева в другое.

Использование slapo-unique работает, до определенного момента. Проблема возникает, когда я добавляю пользователя, но явно не определяю атрибут UID в LDIF или приложении, выполняющем импорт.

Во-первых, предположим, что у меня определено следующее правило:

olcUniqueURI: ldap:///dc=domain,dc=com?uid?sub?(objectClass=inetOrgPerson)

Теперь, в качестве примера, предположим, что у меня есть существующий пользователь, DN которого — «uid=userj,ou=People,dc=domain,dc=com».

Затем я добавляю следующий ldif:

dn: uid=userj,ou=OtherPeople,dc=domain,dc=net
givenName: Joe
objectClass: inetOrgPerson
cn: Joe User
sn: User
uid: userj
mail: [email protected]

Как и следовало ожидать, я получаю ошибку об уникальности для uid. Проблема возникает теперь, когда я не включаю UID явно, а полагаюсь на то, что он будет установлен через slapd при импорте, поскольку он определен как отличительное имя:

dn: uid=userj,ou=OtherPeople,dc=domain,dc=net
givenName: Joe
objectClass: inetOrgPerson
cn: Joe User
sn: User
mail: [email protected]

И это разрешено. После добавления этого, поиск с использованием фильтра поиска "(uid=userj) вытащит два DN:

uid=userj,ou=People,dc=domain,dc=com и uid=userj,ou=OtherPeople,dc=domain,dc=net

И оба они покажут, что у них атрибут UID установлен на "userj". Если посмотреть на журналы отладки для slapd, когда я явно не устанавливаю UID в ldif (что не должно быть необходимым, поскольку подразумевается из нового DN), журналы показывают, что он никогда не запрашивает LDAP для этого атрибута UID.

Итак, у кого-нибудь есть предложение, как обойти эту проблему? Очевидно, я предлагал людям всегда и неявно определять атрибут UID, даже если он является частью DN, но некоторые люди упрямы и любят искать способы нарушить ограничения.

Заранее спасибо;

Связанный контент