OpenLDAP должен знать базовый DN, чтобы он мог выбирать, из какой базы данных читать. Я не смог найти поддержки для "глобального" поиска по всем базам данных.
Однако вы можете добавить новую базу данных с пустым базовым DN. С relay
он может пересылать все запросы в вашу основную базу данных. Смотрите slapd-relay(5) для более сложных примеров (включая даже переписывание), но общее использование:
database relay
suffix ""
relay "dc=nullroute,dc=eu,dc=org"
dn: olcDatabase=relay,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcSuffix:
olcRelay: dc=nullroute,dc=eu,dc=org
(Кроме того, мне интересно, действительно ли Spring использует пустую базу для всех поисков? Некоторые программы получают Root DSE таким образом (расположенный в базе "", область действия "база"), чтобы автоматически обнаруживать реальные базовые DN и / или возможности сервера.)
После обновления кажется, что настоящая проблема заключается в том, что Spring использует плохой фильтр. Не имеет смысла просто отправлять DN как фильтр, потому что на самом деле вы в конечном итоге будете искать cn
который содержит someUsername,ou=something,dc=something
.
Вместо этого Spring должен был использовать DN в качестве базы:
base: cn=someUsername,ou=something,ou=something,dc=oh,dc=my,dc=god
scope: base
filter: (objectClass=*)
Если когда-нибудь возникнет необходимость отфильтровать по DN, я думаю, что рабочий способ будет (entryDN=dn)
, например (entryDN=cn=foo,ou=bar,ou=baz)
, хотя это зависит от сервера (entryDN - OpenLDAP- конкретный, пока AD имеет отличительное имя и т. д.).