2010-07-29 31 views
2

我有這個錯誤,這是什麼意思?Spring LDAP 1.3.0澄清

org.springframework.ldap.NameNotFoundException: [LDAP: error code 32 - 0000208D: NameErr: DSID-031001A8, problem 2001 (NO_OBJECT), data 0, best match of: 
    '' 
]; nested exception is javax.naming.NameNotFoundException: [LDAP: error code 32 - 0000208D: NameErr: DSID-031001A8, problem 2001 (NO_OBJECT), data 0, best match of: 
    '' 
]; remaining name '/' 
    org.springframework.ldap.support.LdapUtils.convertLdapException(LdapUtils.java:172) 
    org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:306) 
    org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:237) 
    org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:624) 
    org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:535) 
    org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:462) 
    org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:483) 
    org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:503) 
    org.springframework.ldap.core.LdapTemplate.authenticate(LdapTemplate.java:1424) 
    org.springframework.ldap.core.LdapTemplate.authenticate(LdapTemplate.java:1386) 
    com.spsetia.iss.services.ISSServiceImpl.login(ISSServiceImpl.java:92) 
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    java.lang.reflect.Method.invoke(Method.java:597) 
    org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307) 
    org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182) 
    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149) 
    org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89) 
    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) 
    org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) 
    $Proxy55.login(Unknown Source) 
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    java.lang.reflect.Method.invoke(Method.java:597) 
    org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307) 
    org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182) 
    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149) 
    org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106) 
    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) 
    org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) 
    $Proxy56.login(Unknown Source) 
    com.spsetia.iss.services.UserDetailsServiceImpl.loadUserByUsername(UserDetailsServiceImpl.java:70) 
    com.spsetia.iss.services.UserDetailsAuthenticationProvider.retrieveUser(UserDetailsAuthenticationProvider.java:26) 
    org.springframework.security.providers.dao.AbstractUserDetailsAuthenticationProvider.authenticate(AbstractUserDetailsAuthenticationProvider.java:121) 
    org.springframework.security.providers.ProviderManager.doAuthentication(ProviderManager.java:188) 
    org.springframework.security.AbstractAuthenticationManager.authenticate(AbstractAuthenticationManager.java:46) 
    org.springframework.security.ui.webapp.AuthenticationProcessingFilter.attemptAuthentication(AuthenticationProcessingFilter.java:82) 
    org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(AbstractProcessingFilter.java:258) 
    org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) 
    org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) 
    org.springframework.security.context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionContextIntegrationFilter.java:235) 
    org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) 
    org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) 
    org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:175) 
    org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:236) 
    org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) 

我試圖做到這一點

filter.and(new EqualsFilter("objectclass", "user")).and(new EqualsFilter("mail", username)); 
    return ldapTemplate.authenticate(DistinguishedName.EMPTY_PATH, filter.toString(), password); 

回答

0

LDAP 32就像是eDirectory的-601和AD的(啊我忘記了密碼)。

基本上找不到對象。我想知道你提供的綁定DN是不是正確的?由於您正在進行搜索,並且在搜索中找不到的對象應該只會返回空的搜索結果。

2

我有兩個版本的代碼,一個使用Spring LDAP 1.2.1,另一個使用1.3.0。 1.2.1版本的工作原理,1.3.0版本給出了上述錯誤。

這兩個版本之間有很小的差異。 1.3.0版本禁用連接池並使用SingleContextSource。 (太避免ldap連接池,這會混淆Active Directory中分頁結果的檢索)

所以我覺得1.3.0引入了一個bug。