2015-05-13 2 views
-2

Здесь, в этом коде, я не могу добавить одного пользователя в группу. Здесь uid - пользователь. Здесь cn = граждане, cn = doit, o = evault - это групповое полное DN, а также вместо члена, которого я пытался с memberOf. Но все же он показывает такое же Исключение.javax.naming.directory.SchemaViolationException: [LDAP: код ошибки 65 - нарушение класса объекта];

 Hashtable env = new Hashtable(); 
     env.put(Context.INITIAL_CONTEXT_FACTORY, initctx); 
     env.put(Context.PROVIDER_URL, myhost); 
     env.put(Context.SECURITY_PRINCIPAL, mgrdn); 
     env.put(Context.SECURITY_CREDENTIALS, mgrpw); 
     System.out.println("Connect"); 
     String entryDN = "uid=datta,cn=doit,o=evault"; 

     // entry's attributes 
     BasicAttribute cn = new BasicAttribute("cn", "datta"); 
     BasicAttribute sn = new BasicAttribute("sn", "kumar"); 
     BasicAttribute mail = new BasicAttribute("mail", "[email protected]"); 
     BasicAttribute phone = new BasicAttribute("telephoneNumber", "9704763492"); 
     BasicAttribute uid = new BasicAttribute("uid", "datta"); 
     BasicAttribute member = new BasicAttribute("member", "cn=citizens,cn=doit,o=evault"); 

     BasicAttribute oc = new BasicAttribute("objectClass"); 
     oc.add("top"); 
     //oc.add("person"); 
     oc.add("groupOfNames"); 

     ((javax.naming.directory.Attribute) oc).add("organization"); 
     // ((javax.naming.directory.Attribute) oc).add("inetOrgPerson"); 
     ((javax.naming.directory.Attribute) oc).add("groupOfNames"); 

     DirContext ctx = new InitialDirContext(env); 

     // build the entry 
     BasicAttributes entry = new BasicAttributes(); 
     entry.put(cn); 
     entry.put(sn); 
     entry.put(mail); 
     entry.put(phone); 
     entry.put(uid); 
     entry.put(member); 
     entry.put(oc); 


     // Add the entry 
     ctx.createSubcontext(entryDN, (javax.naming.directory.Attributes) entry); 

Здесь он показывает ошибки, как:

javax.naming.directory.SchemaViolationException: [LDAP: error code 65 - Object Class Violation]; remaining name 'uid=datta,cn=doit,o=evault' 

ответ

0

Вы, кажется, совершенно запутались, является ли вы добавлением пользователя, группы, организации или пользователя в группу.

Непосредственная проблема заключается в том, что groupOfNames не распространяется organization или наоборот, и они оба структурных классов объектов, так что вы не можете указать их обоих в одном объекте. Это нарушение схемы, как говорится в сообщении.

NB Вам не нужно бросить BasicAttribute в Attribute.

+0

Thks для Ответить .... может у плз скажите мне, что я должен изменить в этом коде ... @ EJP –

+0

Может у плз опубликовать часть код, в который этот пользователь добавляется в группу. –

+0

Вы должны удалить либо 'groupOfNames', либо' organization'. Неужели это очевидно? Я не понимаю ваш второй вопрос. – EJP