modifyAttributes doesn't work with relative DN
Hi all,
I am trying to add an account into a group in Active Directory using Java. If I use full DN, It works. However, it gives error if I use relative DN. In my case, I have to use relative DN. Can someone help me? The relative DN works fine when uses ldapCtx.getAttributes("CN=s3120246,CN=Users", {"memberOf"}); to get existing groups the user belong to.
======== Code uses full DN. This one works
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://129.94.154.22:389/");
env.put(Context.SECURITY_CREDENTIALS, "password");
env.put(Context.SECURITY_PRINCIPAL, "username");
LdapContext ldapCtx = new InitialLdapContext(env, null);
ModificationItem mi[] = new ModificationItem[1];
mi[0] = new ModificationItem(DirContext.ADD_ATTRIBUTE, new BasicAttribute("member", "CN=s3120246,CN=Users,DC=actd,DC=admin,DC=misk,DC=com,DC=au"));
ldapCtx.modifyAttributes("CN=MIST Staff GG All Staff,CN=Users,DC=actd,DC=admin,DC=misk,DC=com,DC=au", mi);
======== Code uses relative DN
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://129.94.154.22:389/DC=actd,DC=admin,DC=misk,DC=com,DC=au");
env.put(Context.SECURITY_CREDENTIALS, "password");
env.put(Context.SECURITY_PRINCIPAL, "username");
LdapContext ldapCtx = new InitialLdapContext(env, null);
ModificationItem mi[] = new ModificationItem[1];
mi[0] = new ModificationItem(DirContext.ADD_ATTRIBUTE, new BasicAttribute("member", "CN=s3120246,CN=Users"));
ldapCtx.modifyAttributes("CN=MIST Staff GG All Staff,CN=Users", mi);
-
After executing the code, it give errors as following:
javax.naming.NameNotFoundException: [LDAP: error code 32 - 00000525: NameErr: DSID-031A0F80, problem
2001 (NO_OBJECT), data 0, best match of:
''
]; remaining name 'CN=MIST Staff GG All Staff,CN=Users'
at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:2942)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2863)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2669)
at com.sun.jndi.ldap.LdapCtx.c_modifyAttributes(LdapCtx.java:1387)
at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_modifyAttributes(ComponentDirContext.java:
255)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.modifyAttributes(PartialCompositeDirC
ontext.java:172)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.modifyAttributes(PartialCompositeDirC
ontext.java:161)
at javax.naming.directory.InitialDirContext.modifyAttributes(InitialDirContext.java:146)
at au.edu.unsw.bsds.idm.LDAPLookup.addMember(LDAPLookup.java:387)
at au.edu.unsw.bsds.idm.LDAPLookup.main(LDAPLookup.java:94)
Thank you very much
Tara

