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)를 사용하여 검색하면 두 개의 DN이 표시됩니다.

uid=userj,ou=People,dc=도메인,dc=com 및 uid=userj,ou=OtherPeople,dc=도메인,dc=net

그리고 둘 다 UID 속성이 "userj"로 설정되어 있음을 보여줍니다. slapd에 대한 디버깅 로그를 보면 ldif에 UID를 명시적으로 설정하지 않은 경우(새 DN에서 암시되므로 필요하지 않음) 해당 UID 속성에 대해 LDAP를 쿼리하지 않는다는 것이 로그에 표시됩니다.

그렇다면 이 문제를 어떻게 해결할 수 있는지 제안해 주실 분 계신가요? 분명히 나는 ​​사람들에게 UID 속성이 DN의 일부이더라도 항상 암시적으로 정의하도록 제안했지만 일부 사람들은 완고하고 제약 조건을 위반하는 방법을 찾는 것을 좋아합니다.

미리 감사드립니다.

관련 정보