How to change LDAP password via JNDI

I am trying to change the user password via JNDI, but I am getting the error below.

javax.naming.directory.SchemaViolationException: [LDAP: error code 65 - record uid = yiwei, ou = Administrator, o = SID, dc = QuizPortal cannot be changed because the resulting record violated the server diagram: record uid = yiwei, ou = Administrator, o = SID, dc = QuizPortal violates the configuration of the directory server schema because it includes an attribute user password that is not allowed by any of the object classes defined in this entry];

Below is the code.

public class ModifyAtt { public static String INITCTX = "com.sun.jndi.ldap.LdapCtxFactory"; public static String MY_HOST = "ldap://KhooGP-Comp1:1389/dc=QuizPortal"; public static String MGR_DN = "cn=Directory Manager"; public static String MGR_PW = "password"; public static void main(String[] args) { //Identify service provider to use Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, INITCTX); env.put(Context.PROVIDER_URL, MY_HOST); env.put(Context.SECURITY_AUTHENTICATION, "simple"); env.put(Context.SECURITY_PRINCIPAL, MGR_DN); env.put(Context.SECURITY_CREDENTIALS, MGR_PW); try { // Create the initial directory context InitialDirContext initialContext = new InitialDirContext(env); DirContext ctx = (DirContext)initialContext; System.out.println("Context Sucessfully Initialized"); ModificationItem[] mods = new ModificationItem[1]; Attribute mod0 = new BasicAttribute("user password", "a"); mods[0] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, mod0); ctx.modifyAttributes("uid=yiwei,ou=Administrator,o=SID", mods); } catch(Exception e) { System.err.println(e); } } } 

Any idea why? Thank you very much in advance.

Kevin

+6
java passwords ldap jndi
source share
2 answers

Ah .. there should not be any interval for the user password.

need to change

 Attribute mod0 = new BasicAttribute("user password", "a"); 

to

 Attribute mod0 = new BasicAttribute("userpassword", "a"); 
+11
source share
Attribute

should be in one word without a space.

+1
source share

All Articles