【问题标题】:Changing Distinguished Name Using Java Naming使用 Java 命名更改专有名称
【发布时间】:2016-05-08 05:08:57
【问题描述】:

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

而且每次我得到这个错误:

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

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

【问题讨论】:

    标签: java active-directory naming ldap-query


    【解决方案1】:

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

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

    我希望这会有所帮助。

    【讨论】:

    • 感谢您帮助我,我认为重命名也不会奏效。我试试这个 ctx.rename("distinguishedName='"+DN1+"'", "distinguishedName='"+DN2+"'");但我仍然遇到同样的错误。
    • 您能否更具体一些并提供这些值?
    • 官方JNDI教程也可能有帮助docs.oracle.com/javase/jndi/tutorial/basics/naming/rename.htmlctx.rename(DN1, DN2)
    猜你喜欢
    • 2017-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-11
    相关资源
    最近更新 更多