使用 Java 命名更改专有名称

Changing Distinguished Name Using Java Naming

我正在尝试使用 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);

而且每次我收到此错误时:

Exception in thread "main" javax.naming.directory.InvalidAttributeValueException: [LDAP: error code 19 - 000020B1: AtrErr: DSID-030F04A3, #1: 0: 000020B1: DSID-030F04A3, problem 1005 (CONSTRAINT_ATT_TYPE), data 0, Att 31 (distinguishedName)

是否可以更改 DN,如果可以,我应该怎么做?

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

这里是example如何使用 JNDI LDAP 提供程序进行重命名。

希望对您有所帮助。