C# 通过LDAPS检索可访问的外部Active Directory服务器上的所有用户帐户

C# 通过LDAPS检索可访问的外部Active Directory服务器上的所有用户帐户,c#,active-directory,ldap,C#,Active Directory,Ldap,我需要连接到我可以访问但只能通过LDAP访问的外部LDAP服务器 我有可用的信息是用户名、服务器、密码。我需要查询和检索所有用户的列表。详细信息的格式是 用户名:域\用户名 密码:{Password} 域:远程。{Domain}.net.au 我编写的以下代码将成功验证我的用户帐户,但我现在需要枚举我遇到问题的所有用户。理想情况下,这将是目录中的所有用户,而不是特定OU中的所有用户。同样,我没有此服务器的任何OU的完全限定路径。服务器有一个自签名证书,这就是为什么在我的示例中我特别告诉它接受

我需要连接到我可以访问但只能通过LDAP访问的外部LDAP服务器

我有可用的信息是用户名、服务器、密码。我需要查询和检索所有用户的列表。详细信息的格式是

  • 用户名:域\用户名
  • 密码:{Password}
  • 域:远程。{Domain}.net.au
我编写的以下代码将成功验证我的用户帐户,但我现在需要枚举我遇到问题的所有用户。理想情况下,这将是目录中的所有用户,而不是特定OU中的所有用户。同样,我没有此服务器的任何OU的完全限定路径。服务器有一个自签名证书,这就是为什么在我的示例中我特别告诉它接受证书的原因

        int port = secured ? 636 : 389;

        LdapConnection connection = new LdapConnection(new LdapDirectoryIdentifier(ldapServer, port, false, false));

        if (secured)
        {
            connection.SessionOptions.ProtocolVersion = 3;
            connection.SessionOptions.SecureSocketLayer = true;
        }


        connection.Credential = new NetworkCredential(username, password);
        connection.AuthType = AuthType.Basic;
        connection.SessionOptions.VerifyServerCertificate += (conn, cert) => { return true; };
        connection.Bind();

        return connection;
因此,答案是System.DirectoryServices.Protocols(S.DS.p)简介的示例,其中包括:


我描述了使用C#访问Active Directory的三种方法。你真的需要使用System.DirectoryServices.Protocols吗?@JPBlanc我不管怎么做,只要它能工作就行。使用LdapConnection是迄今为止我能够使LDAPS与此服务器一起工作的唯一方法,我相信这是由于它的证书错误。如果它是标准的LDAP,那就不会有问题,因为我有大量的工作代码直接与我的AD服务器对话。然而,这是另一个组织,我们只能通过LDAPS与它交谈。非常感谢@JPBlanc。非常感谢。
// create a search filter to find all objects
string ldapSearchFilter = "(&(objectCategory=person)(objectClass=user))";