【问题标题】:LDAP entire subtree copyLDAP 整个子树副本
【发布时间】:2008-09-30 09:56:12
【问题描述】:

我实际上是这个论坛的新手,我一直在尝试几天来找到一种将整个 LDAP 子树复制到另一棵树的简单方法。由于我找不到任何有用的东西,所以我也想在这里提出一个问题。有人知道如何以编程方式执行此操作吗?

对于添加、删除、搜索等常规操作,我一直在使用 Spring LDAP。

非常感谢!

【问题讨论】:

    标签: ldap copy subtree


    【解决方案1】:

    我实际上并不了解 Spring LDAP,但如果您的 LDAP 接口没有提供任何高级抽象来移动/重命名或复制整个子树,则您必须递归地移动/重命名或复制所有子树节点。 LDAP API 没有直接提供这样的选项。

    以下是伪代码:

    function copySubtree(oldDn, newDn)
    {
        copyNode(oldDn, newDn); // the new node will be created here
        if (nodeHasChildren(oldDn) { 
            foreach (nodeGetChildren(oldDn) as childDn) {
                childRdn=getRdn(childDn); // we have to get the 'local' part, the so called RDN 
                newChildDn=childRdn + ',' + newDn; // the new DN will be the old RDN concatenated with the new parent's DN
                copySubtree(childDn, newChildDn); // call this function recursively
            }  
        }
    }
    

    【讨论】:

      【解决方案2】:

      将其转储为 LDIF,通过搜索和替换(或通过脚本)编辑 DN,然后导入新的 LDIF。

      Spring 可能不是执行此操作的工具。是否有必要使用 Spring 操作目录?我认为 OpenLDAP 的 ldapsearch 和 ldapadd 应该适用于任何服务器,它们会转储/加载 LDIF。

      【讨论】:

      • 当在所述DN特别CARACTERES,它可以像这样编码DN :: Y249MDYwMDAwMTYzLG91PTA2MDAwMDE2MyxvdT0wNixvdT1Qcm92ZW5jZS1BbHBlcy0gQ8O0dGUgZCdBenVyLG91PURHUyxvdT1ER1N2MyxvPWVwaWNvbmNlcHQsYz1mcg ==和我不能改变anaything 跨度>
      • 只是Base64..cn=060000163,ou=060000163,ou=06,ou=Provence-Alpes-Côte d'Azur,ou=DGS,ou=DGSv3,o=epiconcept,c= FR
      【解决方案3】:

      请注意,密码很难复制。您可能无法通过 LDAP API 读取它们。这将取决于您使用的 LDAP 实现。

      因此,复制到新位置可能无法获得您想要或需要的一切。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-18
        • 1970-01-01
        • 2012-07-27
        • 2022-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-29
        相关资源
        最近更新 更多