如何在C#中编写跨林LDAP查询?

如何在C#中编写跨林LDAP查询?,c#,active-directory,ldap,C#,Active Directory,Ldap,我正在尝试编写一个高效的LDAP查询,返回来自另一个林/域的结果。目前还没有一个双向信任。没有条件转发器。我所拥有的是一个经过验证的网络连接、一个IP地址、一个服务帐户和密码 这是我通常使用的基本LDAP代码 DirectoryEntry deParent = new DirectoryEntry("LDAPS://000.0.000.00/DC=bob,DC=earl,DC=john,DC=whatever"); deParent.Username = "Dom

我正在尝试编写一个高效的LDAP查询,返回来自另一个林/域的结果。目前还没有一个双向信任。没有条件转发器。我所拥有的是一个经过验证的网络连接、一个IP地址、一个服务帐户和密码

这是我通常使用的基本LDAP代码

        DirectoryEntry deParent = new DirectoryEntry("LDAPS://000.0.000.00/DC=bob,DC=earl,DC=john,DC=whatever");
        deParent.Username = "Domain\\UserName";
        deParent.Password = "Password";
        deParent.AuthenticationType = AuthenticationTypes.Secure;            
        DirectorySearcher ds = new DirectorySearcher(deParent, qry, columns, SearchScope.Subtree);
我知道这有点广谱,但是有很多相互矛盾的信息。所以

  • 执行跨林查询是否需要信任?仅查询,除服务帐户外,无需登录
  • 像上面这样的基本DirectoryEntry调用是否有效
  • 任何人都可以用c#提供一个跨林查询的示例吗

  • 那么有错误吗?LDAP和IP的组合可能会出现问题,因为证书无效。在这种情况下,我还希望您的AuthN类型应该是Basic

    1.执行跨林查询是否需要信任?仅查询,除服务帐户外,无需登录

    不,执行跨林查询不需要信任

    2.像上面这样的基本DirectoryEntry调用是否有效? 一点也不。如果涉及到适当的信任,标准目录条目方法将/可能起作用

    3.任何人都可以用c#提供一个跨林查询的示例吗?

    以防万一,如果您没有林FQDN的dns条目,只需更新主机文件以将其指向正确的位置

    还有更多的信息。 如果您的搜索请求非常慢(约48-60秒),请务必关闭转介追踪

        connection.SessionOptions.ReferralChasing = ReferralChasingOptions.None;
    

    在这种情况下,我需要在本地域上使用条件转发器来解析实际名称?e、 g.LDAPS://bobs.happy.little.forest而不是LDAPS://123.123.123.123?使用全局目录也会有所帮助(端口3268)。GC包含林的只读副本,因此通常不需要重定向。复制副本只包含某些值,因此如果您正在搜索任何异常的内容,这将不起作用。在这种情况下,端口3268不对我们开放。随着时间的推移,为了提高性能,我会记住这一点。