I am trying to add an entry to an LDAP server using JNDI. I could successfully read the entries from the LDAP server. But when I try to add a new record, I get errors. I checked different ways, but could not.
private String getUserAttribs (String searchAttribValue) throws NamingException{ SearchControls ctls = new SearchControls(); ctls.setSearchScope(SearchControls.OBJECT_SCOPE); Attributes matchAttrs = new BasicAttributes(true); matchAttrs.put(new BasicAttribute("uid", searchAttribValue)); NamingEnumeration answer = ctx.search("ou=People,ou=ABCLdapRealm,dc=abcdomain",matchAttrs); SearchResult item =(SearchResult) answer.next();
This worked correctly.
Then I took a step forward and tried to add a record. The code is as follows.
public static void bindEntry(DirContext dirContext)throws Exception{ Attributes matchAttrs = new BasicAttributes(true); // uid userpassword description objectclass wlsmemberof sn cn matchAttrs.put(new BasicAttribute("uid", "defaultuser")); matchAttrs.put(new BasicAttribute("userpassword", "password")); matchAttrs.put(new BasicAttribute("description", "defaultuser")); matchAttrs.put(new BasicAttribute("cn", "defaultuser")); matchAttrs.put(new BasicAttribute("sn", "defaultuser")); matchAttrs.put(new BasicAttribute("objectclass", "top")); matchAttrs.put(new BasicAttribute("objectclass", "person")); matchAttrs.put(new BasicAttribute("objectclass", "organizationalPerson")); matchAttrs.put(new BasicAttribute("objectclass","inetorgperson")); matchAttrs.put(new BasicAttribute("objectclass", "wlsUser")); String name="uid=defaultuser"; InitialDirContext iniDirContext = (InitialDirContext)dirContext; iniDirContext.bind(name,dirContext,matchAttrs); }
But with that, I get an exception.
Exception in thread "main" javax.naming.OperationNotSupportedException: [LDAP: error code 53 - Unwilling To Perform]; remaining name 'uid=defaultuser'
I'm definitely breaking something. Any idea on this?
source share