使用Java命名更改可分辨名称

时间:2016-05-08 05:08:57

标签: java active-directory naming ldap-query

我正在尝试使用Java命名包更改组可分辨名称 但每次我得到相同的错误信息

        Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
    env.put(Context.PROVIDER_URL, url);
    env.put(Context.SECURITY_AUTHENTICATION, "simple");
    env.put(Context.SECURITY_PRINCIPAL, user);
    env.put(Context.SECURITY_CREDENTIALS, password);
    env.put(Context.REFERRAL, "follow");
    DirContext ctx = new InitialDirContext(env);
    ModificationItem[] roleMods = new ModificationItem[]
            {
                    new ModificationItem(DirContext.REPLACE_ATTRIBUTE, new BasicAttribute("distinguishedName",DN2))
            };
    ctx.modifyAttributes(DN1,roleMods);

每次我收到此错误:

  

线程中的异常" main" javax.naming.directory.InvalidAttributeValueException:[LDAP:错误代码19 - 000020B1:AtrErr:DSID-030F04A3,#1:       0:000020B1:DSID-030F04A3,问题1005(CONSTRAINT_ATT_TYPE),数据0,Att 31(distinguishedName)

如果是,我该怎么做才能改变DN?

1 个答案:

答案 0 :(得分:2)

通常,在LDAP中重命名不是修改,因为更改适用于DN(专有名称)。当您查找重命名或修改DN /修改RDN操作时,您经常会找到示例。

以下是example如何使用JNDI LDAP提供程序重命名。

我希望这会有所帮助。