【问题标题】:Java, LDAP, ADAM - How do I create a container with a forward slash in the nameJava、LDAP、ADAM - 如何创建名称中带有正斜杠的容器
【发布时间】:2010-01-27 12:09:27
【问题描述】:

我在编写一些 Java 代码时遇到问题,这将在 ADAM 中创建一个容器/文件夹,其中容器名称和可识别名称包含正斜杠。
例如
cn=测试/测试
dn=CN=test/test,CN=TestStore,DC=MyCompany,DC=COM

LdapContext _ctx = getNewContext(valid_userName, valid_userName, valid_userName);
  // uses InitialLdapContext under the hood 

String containerDN = "dn=CN=test/test,CN=TestStore,DC=MyCompany,DC=COM"
_ctx.createSubcontext(containerDN, attrs); // assume attrs is valid javax.naming.directory.Attributes

我正在努力从 Java 字符串对象中转义正斜杠,但允许 InitialLdapContext 创建具有名称的容器。

从 ADAM Adsi Edit 应用程序,我可以创建带有正斜杠的文件夹,所以我认为这个过程也可以通过代码完成。

在此先感谢...

【问题讨论】:

    标签: java ldap jndi


    【解决方案1】:

    重读 LDAPContext 和 DirContext 的 JavaDocs API ... createSubContext() 提供的重载方法:

    public DirContext createSubcontext(Name name, Attributes attrs) throws NamingException
    

    Name 接口,具体类 CompositeName 为我处理特殊字符的转义/取消转义...

    非常感谢 JRL!

    【讨论】:

      【解决方案2】:

      来自Technet,可能有用:

      如果组织单位的名称 包含正斜杠字符 (/),系统需要转义 反斜杠形式的字符 () 区分转发 分隔元素的斜线 规范名称和正斜杠 这是组织的一部分 单位名称。规范的名称 出现在 Active Directory 用户和 计算机属性页面显示 立即转义字符 在正斜杠之前 组织单位的名称。为了 例如,如果一个名字 组织单位是 促销/东北和名称 域是 Reskit.com, 规范名称显示为 Reskit.com/Promotions/Northeast

      【讨论】:

      • 谢谢,我一直在阅读:java.sun.com/products/jndi/tutorial/beyond/names/syntax.html 并且一直在尝试各种反斜杠转义:String containerDN = "dn=CN=test/test..."; String containerDN = "dn=CN=test\/test; \\errorInvaliudEscapeChar String containerDN = "dn=CN=test\\/test"; String containerDN = "dn=CN=test\\\\/test;字符串 containerDN = "dn=CN=test\\\\\\/test";字符串 containerDN = "dn=CN=test\\\\\\\\/test";一切都无济于事......
      • @DeclanWilson:在您提供的链接中,它谈到了复合名称......这可能与它有关吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-05
      • 1970-01-01
      • 1970-01-01
      • 2016-11-09
      相关资源
      最近更新 更多