У меня есть несколько веток в моем каталоге 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: userj@domain.com
Как и следовало ожидать, я получаю сообщение об уникальности uid. Проблема возникает сейчас, когда я явно не включаю UID, но полагаюсь на то, что он будет установлен через slapd при импорте, потому что он определен как отличительное имя:
dn: uid=userj,ou=OtherPeople,dc=domain,dc=net
givenName: Joe
objectClass: inetOrgPerson
cn: Joe User
sn: User
mail: userj@domain.com
И это разрешено. После добавления этого запроса поиск с использованием фильтра поиска "(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, но некоторые люди упрямы и любят находить способы нарушить ограничения.
Заранее спасибо;