将用户添加到ldap时Ldap错误代码32

时间:2016-09-14 15:04:16

标签: java ldap spring-ldap

我需要在ldap中添加一个新的用户条目。以下是我的代码:

     javax.naming.Name name = new DistinguishedName("cn=" + userName +",ou=Users,dc=wso2,dc=org");


     Attribute objectClass = new BasicAttribute("objectClass");
        {
         objectClass.add("top");
         objectClass.add("inetOrgPerson");
         objectClass.add("person");
         objectClass.add("organizationalPerson");
        }
        Attributes userAttributes = new BasicAttributes();
        userAttributes.put(objectClass);
        userAttributes.put("cn", userName);
        userAttributes.put("sn", "abctest");
        userAttributes.put(ATTRIBUTE_USER_PASSWORD, password);
        LdapTemplate ldapTemplate = (LdapTemplate) SpringBeanFactory
                .getBean("ldapTemplate");
        ldapTemplate.bind(name, null, userAttributes);

虽然执行这段代码时我得到以下异常:

 org.apache.cxf.interceptor.Fault: [LDAP: error code 32 - No Such Object];       
 nested exception is javax.naming.NameNotFoundException: 
 [LDAP: error code 32 -      No Such Object]; remaining name 'cn=myname,ou=Users,dc=wso2,dc=org'

我正在关注代码http://kaustuvmaji.blogspot.in/2014/12/simple-example-of-spring-ldap.html处指定的示例。有人可以帮助我理解这个错误或正确代码的根本原因。

1 个答案:

答案 0 :(得分:1)

此处的问题是您的LDAP树中不存在路径ou=Users,dc=wso2,dc=org,因此您无法在该路径中创建子项。

如果您为代码中的所有DN指定了ContextSource的基本路径,则所有路径都将相对于指定的基数。