O OpenLDAP precisa conhecer o DN base para poder escolher de qual banco de dados ler. Não encontrei nenhum suporte para pesquisa "global" em todos os bancos de dados.
No entanto, você pode adicionar um novo banco de dados com um DN base vazio. Com o backend relay
, ele pode encaminhar todas as consultas para o banco de dados principal. Veja slapd-relay (5) para exemplos mais elaborados (incluindo até reescrevendo), mas o uso geral é:
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
(Além disso, gostaria de saber se o Spring realmente usa a base vazia para todas pesquisas? Alguns programas obtêm o DSE raiz dessa maneira (localizado na base "", escopo "base"), para descobrir automaticamente os DNs reais e / ou os recursos do servidor.)
Após a atualização, parece que o problema real é o Spring usando um filtro ruim . Não faz sentido apenas enviar um DN como um filtro, porque você realmente acabará procurando por um cn
que contenha someUsername,ou=something,dc=something
.
Em vez disso, o Spring deve ter usado o DN como base :
base: cn=someUsername,ou=something,ou=something,dc=oh,dc=my,dc=god
scope: base
filter: (objectClass=*)
Se algum dia for necessário filtrar por DN , acredito que uma maneira de trabalhar seria (entryDN=dn)
, por exemplo, (entryDN=cn=foo,ou=bar,ou=baz)
, embora varie entre servidores (entryDN é específico de OpenLDAP, enquanto AD tem distinguishedName e assim por diante).