OpenLDAP slapo-unique schlägt mit UID fehl

OpenLDAP slapo-unique schlägt mit UID fehl

Ich habe mehrere Zweige in meinem LDAP-Verzeichnis, die alle ein UID-Attribut als Teil des DN verwenden. Vor Kurzem wurde mir die Aufgabe übertragen, die Eindeutigkeit des UID-Attributs auf ganzer Linie sicherzustellen, sodass die UID nicht von einem Teilbaum zum anderen passen kann.

Die Verwendung von slapo-unique funktioniert bis zu einem gewissen Punkt. Das Problem tritt auf, wenn ich einen Benutzer hinzufüge, das UID-Attribut jedoch nicht explizit im LDIF oder in der Anwendung definiere, die den Import ausführt.

Nehmen wir zunächst an, dass ich die folgende Regel definiert habe:

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

Nehmen wir als Beispiel an, ich habe einen bestehenden Benutzer, dessen DN "uid=userj,ou=People,dc=domain,dc=com" ist.

Ich füge dann das folgende ldif hinzu:

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

Wie zu erwarten, erhalte ich eine Fehlermeldung bezüglich der Eindeutigkeit der UID. Das Problem tritt jetzt auf, wenn ich die UID nicht explizit einschließe, sondern darauf verlasse, dass sie beim Import über slapd festgelegt wird, da sie als Distinguished Name definiert ist:

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

Und das ist zulässig. Nachdem Sie dies hinzugefügt haben, werden bei einer Suche mit dem Suchfilter "(uid=userj)" die beiden DNs angezeigt:

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

Und beide zeigen, dass sie ein UID-Attribut haben, das auf „userj“ eingestellt ist. Wenn ich mir die Debugprotokolle für slapd anschaue, zeigen die Protokolle, dass LDAP nie nach diesem UID-Attribut abgefragt wird, wenn ich die UID im ldif nicht explizit einstelle (was nicht notwendig sein sollte, da es aus dem neuen DN impliziert wird).

Hat also jemand einen Vorschlag, wie ich dieses Problem umgehen könnte? Natürlich habe ich den Leuten vorgeschlagen, das UID-Attribut immer und implizit zu definieren, auch wenn es Teil des DN ist, aber manche Leute sind stur und suchen gerne nach Möglichkeiten, Einschränkungen zu verletzen.

Dank im Voraus;

verwandte Informationen