OpenLDAP slapo-unique が UID で失敗する

OpenLDAP slapo-unique が UID で失敗する

私の LDAP ディレクトリには、DN の一部として UID 属性を使用するブランチがいくつかあります。最近、UID がサブツリー間で一致しないように、UID 属性の一意性を全体的に確保する任務を負っています。

slapo-unique の使用は、ある程度までは機能します。問題は、ユーザーを追加したが、LDIF またはインポートを実行するアプリケーションで UID 属性を明示的に定義していない場合に発生します。

まず、次のルールが定義されていると仮定します。

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)」を使用した検索で、次の 2 つの DN が取得されます。

uid=userj、ou=People、dc=domain、dc=com および uid=userj、ou=OtherPeople、dc=domain、dc=net

そして、どちらも UID 属性が "userj" に設定されていることがわかります。slapd のデバッグ ログを見ると、ldif で UID を明示的に設定していない場合 (新しい DN から暗示されるため、これは必要ないはずです)、ログには、その UID 属性について LDAP を照会しないことがわかります。

それで、この問題を回避する方法について誰か提案がありますか? もちろん、DN の一部であるにもかかわらず、UID 属性を常に暗黙的に定義するように人々に提案しましたが、頑固な人もいて、制約に違反する方法を見つけたい人もいます。

前もって感謝します;

関連情報