如何使用C ++中的LDAP连接到Active Directory?

时间:2019-03-30 07:35:18

标签: c++ active-directory ldap windows-server-2019

我在Windows Server 2019上设置了Active Directory。我试图使用LDAP从Windows客户端连接到Active Directory。我使用了这段代码,但对Microsoft文档进行了一些修改:

newResult[arg.key] = counts
return newResult

我是Active Directory的新手,以前从未使用过Windows服务器。

  1. 如何在此LDAP查询中连接到Active Directory?是否在代码的主机名中传递服务器名或Active Directory域名?

  2. 我也收到服务器名称未解析的错误。我应该在Windows服务器或本地局域网中使用dns服务来摆脱此错误吗?

这是来自Microsoft docs的代码的链接:
here

1 个答案:

答案 0 :(得分:1)

  
      
  1. 如何在此LDAP查询中连接到Active Directory?是否在代码的主机名中传递服务器名或Active Directory域名?
  2.   

根据code sample shared by you in the question,文档明确指出可以通过以下方式执行代码: (i)将服务器名称作为命令行参数传递, (ii)或在没有参数的情况下执行无服务器绑定尝试。

来自Microsoft DOCS on Serverless Binding and RootDSE

  

如果可能,请勿硬编码服务器名称。此外,在大多数情况下   在这种情况下,绑定不应不必要地绑定到单个   服务器。 Active Directory域服务支持无服务器绑定,   这意味着可以将Active Directory绑定到默认目录   域,而不指定域控制器的名称。对于   普通应用程序,这通常是已登录的域   用户。对于服务应用程序,这是   服务登录帐户或该服务的客户端帐户   冒充。

由于您是Active Directory的新手,因此建议您尝试通过传递您的AD域名(例如domain.local,corp.org等)来运行代码。

  
      
  1. 我也收到服务器名称未解析的错误。我应该在Windows服务器或本地局域网中使用dns服务来摆脱此错误吗?
  2.   

如果没有更多信息,这将很难回答。默认情况下,名称解析首先由etc / hosts文件完成,或者如果无法通过前者进行DNS解析则由DNS完成!您应该主要依靠后者,即正确的DNS设置。

您需要调查为什么对您提供的主机名的查找失败。您可以通过在命令提示符下检查命令nslookup yourADServerHostNamenslookup yourADServerFQDN的输出,并检查其是否解析为预期的IP地址来进行简单的测试。


注意:请确保您正在执行代码的系统的网络设置中使用的DNS服务器条目正确。