Note that there are some explanatory texts on larger screens.

plurals
  1. POHow to search LDAP by person's name?
    text
    copied!<p>I'm getting this error message</p> <pre><code> org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.ldap.NameNotFoundException: [LDAP: error code 32 - No Such Object]; nested exception is javax.naming.NameNotFoundException: [LDAP: error code 32 - No Such Object]; remaining name 'cn=Kirsi' org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:659) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552) javax.servlet.http.HttpServlet.service(HttpServlet.java:617) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:143) org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237) org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) org.jasig.cas.client.session.SingleSignOutFilter.doFilter(SingleSignOutFilter.java:110) org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) </code></pre> <p><strong>root cause</strong></p> <pre><code>org.springframework.ldap.NameNotFoundException: [LDAP: error code 32 - No Such Object]; nested exception is javax.naming.NameNotFoundException: [LDAP: error code 32 - No Such Object]; remaining name 'cn=Kirsi' 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) fi.utu.userdetails.LdapManager.findByNameWildCard(LdapManager.java:43) net.viralpatel.spring3.controller.ResearcherController.addresearcher(ResearcherController.java:40) 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.web.bind.annotation.support.HandlerMethodInvoker.doInvokeMethod(HandlerMethodInvoker.java:710) org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:167) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:414) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:402) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552) javax.servlet.http.HttpServlet.service(HttpServlet.java:617) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:143) org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237) org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) org.jasig.cas.client.session.SingleSignOutFilter.doFilter(SingleSignOutFilter.java:110) org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) </code></pre> <p><strong>root cause</strong></p> <pre><code>javax.naming.NameNotFoundException: [LDAP: error code 32 - No Such Object]; remaining name 'cn=Kirsi' com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3066) com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2987) com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2794) com.sun.jndi.ldap.LdapCtx.searchAux(LdapCtx.java:1826) com.sun.jndi.ldap.LdapCtx.c_search(LdapCtx.java:1749) com.sun.jndi.toolkit.ctx.ComponentDirContext.p_search(ComponentDirContext.java:368) com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:338) javax.naming.directory.InitialDirContext.search(InitialDirContext.java:257) org.springframework.ldap.core.LdapTemplate$3.executeSearch(LdapTemplate.java:231) org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:293) 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) fi.utu.userdetails.LdapManager.findByNameWildCard(LdapManager.java:43) net.viralpatel.spring3.controller.ResearcherController.addresearcher(ResearcherController.java:40) 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.web.bind.annotation.support.HandlerMethodInvoker.doInvokeMethod(HandlerMethodInvoker.java:710) org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:167) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:414) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:402) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552) javax.servlet.http.HttpServlet.service(HttpServlet.java:617) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:143) org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237) org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) org.jasig.cas.client.session.SingleSignOutFilter.doFilter(SingleSignOutFilter.java:110) org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) </code></pre> <p>By googling I found out that this is because configured dn. I tried to remove it from my <code>contextSource</code>, but no help. <code>ContextSource</code> is orginally</p> <pre><code>&lt;bean id="contextSource" class="org.springframework.ldap.core.support.LdapContextSource"&gt; &lt;property name="url" value=" ldap://ldap.utu.fi " /&gt; &lt;property name="base" value="dc=utu,dc=fi" /&gt; &lt;property name="userDn" value="uid=sysbind,ou=special users,dc=utu,dc=fi" /&gt; &lt;property name="password" value="footogsEp2" /&gt; &lt;/bean&gt; </code></pre> <p>And class:</p> <pre><code>package fi.utu.userdetails; import java.util.List; import javax.naming.NamingException; import javax.naming.directory.Attributes; import org.springframework.ldap.core.AttributesMapper; import org.springframework.ldap.core.DirContextOperations; import org.springframework.ldap.core.DistinguishedName; import org.springframework.ldap.core.LdapTemplate; import org.springframework.ldap.core.support.AbstractContextMapper; import org.springframework.ldap.filter.AndFilter; import org.springframework.ldap.filter.EqualsFilter; import org.springframework.ldap.filter.OrFilter; public class LdapManager { private LdapTemplate ldap; private final static String[] PERSON_ATTRS = new String[]{"uid", "mail", "givenName", "sn","cn"}; public LdapManager(LdapTemplate template) { this.ldap = template; } public List&lt;Person&gt; findByNameWildCard(String fullname) { DistinguishedName dn = new DistinguishedName(); dn.add("cn", fullname); AndFilter andFilter = new AndFilter(); andFilter.and(new EqualsFilter("objectclass", "person")); OrFilter affiliationFilter = new OrFilter(); return ldap.search(dn, andFilter.encode(), new PersonContextMapper()); } private class PersonAttributesMapper implements AttributesMapper { public Object mapFromAttributes(Attributes attrs) throws NamingException { String uid = (String) attrs.get("uid").get(); String mail = (String) attrs.get("mail").get(); String lastname = (String) attrs.get("sn").get(); String firstname = (String) attrs.get("givenName").get(); String fullname = (String) attrs.get("cn").get(); //String status = (String) attrs.get("inetUserStatus").get(); Person person = new Person(); person.setLname(lastname); person.setFname(firstname); person.setEmail(mail); person.setUsername(uid); person.setFullname(fullname); return person; } } private static class PersonContextMapper extends AbstractContextMapper { @Override protected Object doMapFromContext(DirContextOperations context) { Person person = new Person(); person.setUsername(context.getStringAttribute("uid")); person.setEmail((context.getStringAttribute("mail"))); person.setLname((context.getStringAttribute("sn"))); person.setFname(context.getStringAttribute("givenName")); person.setFname(context.getStringAttribute("cn")); return person; } } } </code></pre> <p>What is wrong?</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload