Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

449
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda