2016-09-14 2 views
0

새 사용자 항목을 LDAP에 추가해야합니다. 다음은 내 코드입니다 :ldap에 사용자를 추가하는 동안 Ldap 오류 코드 32가 발생했습니다

 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

여기서 문제는 LDAP 트리에 ou=Users,dc=wso2,dc=org 경로가 존재하지 않기 때문에 해당 경로에서 하위를 만들 수 없다는 것입니다.

코드의 모든 DN에서 생략해야하는 ContextSource의 기본 경로를 지정하면 모든 경로가 지정된 기준에 상대적입니다.

+0

Apache Directory Studio를 사용하여 LDAP 트리 자체에서 경로를 선택했습니다. 예 : 다른 기존 항목은 DN = "cn = newName, ou = Users, dc = wso2, dc = org"입니다. 경로의 용어 (대문자/소문자)가 문제가 될 수 있습니까? 경로를 확인할 수있는 방법이 있습니까? –

+0

기본 경로의 팁이 업데이트되었습니다. – marthursson

+0

Thanks @marthursson !! DN에서 기본 경로를 제거하면 효과가있었습니다. –

관련 문제