Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

446
Views
Generador de consultas Spring LDAP PartialResultException

Estoy tratando de obtener todos los usuarios de mi servidor LDAP, haciendo la búsqueda desde la base, este es mi código:

 public LdapTemplate ldapTemplate() { LdapContextSource ctxSrc = new LdapContextSource(); ctxSrc.setUrl("ldap://127.0.0.1:389/"); ctxSrc.setBase("dc=test,dc=com"); ctxSrc.setUserDn("admin"); ctxSrc.setPassword("password"); ctxSrc.afterPropertiesSet(); LdapTemplate lt = new LdapTemplate(ctxSrc); return lt; } private LdapTemplate ldapTemplate = ldapTemplate(); public List<User> getAllUsers() { LdapQuery query= query().base("").where("objectclass").is("user"); return ldapTemplate.search(query, new UserAttributesMapper()); }

Este es el error:

 10:07:09.406 [main] DEBUG oslcsAbstractContextSource - AuthenticationSource not set - using default implementation 10:07:09.413 [main] DEBUG oslcsAbstractContextSource - Not using LDAP pooling 10:07:09.416 [main] DEBUG oslcsAbstractContextSource - Trying provider Urls: ldap://127.0.0.1:389/dc=test,dc=com 10:07:09.548 [main] DEBUG oslcsAbstractContextSource - Got Ldap context on server 'ldap://127.0.0.1:389/dc=test,dc=com' Exception in thread "main" org.springframework.ldap.PartialResultException: Unprocessed Continuation Reference(s); nested exception is javax.naming.PartialResultException: Unprocessed Continuation Reference(s); remaining name '/' at org.springframework.ldap.support.LdapUtils.convertLdapException(LdapUtils.java:216) at org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:385) at org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:309) at org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:616) at org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:586) at org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:1651) at ldap.example.UserRepositoryImpl.getAllUsers(UserRepositoryImpl.java:81) at ldap.example.test.LdapApp.main(LdapApp.java:23) Caused by: javax.naming.PartialResultException: Unprocessed Continuation Reference(s); remaining name '/' at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2914) at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2888) at com.sun.jndi.ldap.AbstractLdapNamingEnumeration.getNextBatch(AbstractLdapNamingEnumeration.java:148) at com.sun.jndi.ldap.AbstractLdapNamingEnumeration.hasMoreImpl(AbstractLdapNamingEnumeration.java:217) at com.sun.jndi.ldap.AbstractLdapNamingEnumeration.hasMore(AbstractLdapNamingEnumeration.java:189) at org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:365) ... 6 more BUILD FAILED (total time: 1 second)

Cuando filtro por ou funciona, pero necesito filtrar desde la raíz.

about 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Escribes en el comentario de la pregunta que cambiar el puerto ayuda. Pero cambiar de puerto no soluciona este problema. El puerto 3268 apunta al lugar especial de Active Directory - Catálogo global. Hay un conjunto de todos los objetos, pero cada uno de ellos tiene solo un pequeño subconjunto de atributos (por ejemplo, distinguidoNombre , cn , sAMAccountName ...). Entonces, funciona hasta que no necesita atributos más específicos.

Análisis del problema

La excepción ocurre porque AD, como resultado de su consulta, devuelve objetos de referencia :

[Active Directory] (...) genera referencias en respuesta a consultas que solicitan datos sobre objetos que existen en el bosque, pero que no están contenidos en el servidor de directorio que maneja la solicitud. Se denominan referencias cruzadas internas porque se refieren a dominios, esquemas y contenedores de configuración dentro del bosque.

Y si la búsqueda de referencias está deshabilitada:

Si la búsqueda de referencias no está habilitada y se realiza una búsqueda de subárbol, la búsqueda devolverá todos los objetos dentro del dominio especificado que cumplan con los criterios de búsqueda. La búsqueda también devolverá referencias a cualquier dominio subordinado que sea descendiente directo del dominio del servidor de directorio. El cliente debe resolver las referencias vinculándose a la ruta especificada por la referencia y enviando otra consulta .

Puede habilitar la búsqueda de referencias, pero cuesta, ralentiza la aplicación, puede leer sobre esto aquí . Y creo que no es necesario en la mayoría de los casos.

Solución 1:

A veces, la solución suficiente es asignar un método baseDN - ctxSrc.setBase() más específico en su pregunta. Tal vez todos sus usuarios estén dentro de la ruta interna, por ejemplo, "ou=user,dc=department,dc=test,dc=com" .

Lea más en esta respuesta .

Solución 2:

En Spring LdapTemplate también puede ignorar esta excepción con el método setIgnorePartialResultException() :

 ldapTemplate.setIgnorePartialResultException(true);

Lea más en esta respuesta .

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!