尝试在ActiveDirectory中使用spring-data-ldap

问题描述:

我尝试将Spring-Data-Ldap与ActiveDirectory一起使用。 我想列出用户并找到特定用户。尝试在ActiveDirectory中使用spring-data-ldap

我的主类:

@SpringBootApplication 
@EnableDiscoveryClient 
@EnableLdapRepositories 
public class Application { 

    public static void main(String[] args) { 
     SpringApplication.run(Application.class, args); 
    } 
} 

的UserRepo:

public interface UserRepo extends LdapRepository<User> { 
    List<User> findByFullNameContains(String name); 
} 

的application.yml

spring: 
    ldap: 
     urls: ldap://fr-dc1.groupefdi.priv:389 
     base: DC=groupefdi,DC=priv 
     username: CN=user,CN=Users,DC=groupefdi,DC=priv 
     password: ****** 

部分我得到的错误:

2017-09-06 14:42:34,551 [ERROR] --- [http-nio-6546-exec-6] o.a.c.c.C.[.[.[.[dispatcherServlet]:181 - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.ldap.PartialResultException: Unprocessed Continuation Reference(s); nested exception is javax.naming.PartialResultException: Unprocessed Continuation Reference(s); remaining name '/'] with root cause 
javax.naming.PartialResultException: Unprocessed Continuation Reference(s) 
    at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2914) ~[na:1.8.0_65] 
    at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2888) ~[na:1.8.0_65] 
    at com.sun.jndi.ldap.LdapCtx.searchAux(LdapCtx.java:1846) ~[na:1.8.0_65] 
    at com.sun.jndi.ldap.LdapCtx.c_search(LdapCtx.java:1769) ~[na:1.8.0_65] 
    at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_search(ComponentDirContext.java:392) ~[na:1.8.0_65] 
    at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:358) ~[na:1.8.0_65] 
    at javax.naming.directory.InitialDirContext.search(InitialDirContext.java:276) ~[na:1.8.0_65] 
    at org.springframework.ldap.core.LdapTemplate$3.executeSearch(LdapTemplate.java:303) ~[spring-ldap-core-2.3.1.RELEASE.jar:2.3.1.RELEASE] 
    at org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:363) ~[spring-ldap-core-2.3.1.RELEASE.jar:2.3.1.RELEASE] 
    at org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:309) ~[spring-ldap-core-2.3.1.RELEASE.jar:2.3.1.RELEASE] 
    at org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:642) ~[spring-ldap-core-2.3.1.RELEASE.jar:2.3.1.RELEASE] 
    at org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:578) ~[spring-ldap-core-2.3.1.RELEASE.jar:2.3.1.RELEASE] 
    at org.springframework.ldap.core.LdapTemplate.find(LdapTemplate.java:1840) ~[spring-ldap-core-2.3.1.RELEASE.jar:2.3.1.RELEASE] 
    at org.springframework.ldap.core.LdapTemplate.findAll(LdapTemplate.java:1806) ~[spring-ldap-core-2.3.1.RELEASE.jar:2.3.1.RELEASE] 
    at org.springframework.ldap.core.LdapTemplate.findAll(LdapTemplate.java:1814) ~[spring-ldap-core-2.3.1.RELEASE.jar:2.3.1.RELEASE] 
    at org.springframework.data.ldap.repository.support.SimpleLdapRepository.findAll(SimpleLdapRepository.java:190) ~[spring-data-ldap-1.0.6.RELEASE.jar:na] 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_65] 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_65] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_65] 
    at java.lang.reflect.Method.invoke(Method.java:497) ~[na:1.8.0_65] 
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.executeMethodOn(RepositoryFactorySupport.java:504) ~[spring-data-commons-1.13.6.RELEASE.jar:na] 
    ..... 

我不知道我是否必须在Active Directory的application.yml上添加一些特殊的内容,或者我在某处犯了什么错误。

发送请求之前尝试添加:

ldapTemplate.setIgnorePartialResultException(true);

+0

感谢。它删除异常。但是当我尝试userRepo.findAll()时,结果是空的 – BokC

+0

@BokC,用户名:CN = user,CN = Users,DC = groupefdi,DC = priv。你为什么要两次定义CN? –

+0

第一个是登录 – BokC