Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

450
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda