我正在尝试开发一个应用程序(C#)来查询LDAP服务器。我不知道命名为查询的实际服务器 - 有没有办法找到使用标准的Windows工具或.net中的东西?
我也听说有传言说只要我的查询字符串中有dc = domain,dc = com,就不一定需要服务器名称(ldap:// server /),但我是这样的远远不能用这种方式工作。
任何提示?
由于
答案 0 :(得分:94)
AD在其DNS服务器中注册服务位置(SRV)资源记录,您可以查询该记录以获取域中负责的LDAP服务器的端口和主机名。
只需在命令行上尝试:
C:\> nslookup
> set types=all
> _ldap._tcp.<<your.AD.domain>>
_ldap._tcp.<<your.AD.domain>> SRV service location:
priority = 0
weight = 100
port = 389
svr hostname = <<ldap.hostname>>.<<your.AD.domain>>
(前提是您的名称服务器是AD名称服务器,应该是AD正常运行的情况)
有关详细信息,请参阅Active Directory SRV Records和Windows 2000 DNS white paper 。
答案 1 :(得分:15)
如果您正在使用AD,则可以使用serverless binding找到默认域的域控制器,然后使用LDAP:// rootDSE获取有关目录服务器的信息,如链接文章中所述。< / p>
答案 2 :(得分:12)
如果您所在的计算机是AD域的一部分,则应将其名称服务器设置为AD名称服务器(或者希望使用最终将解析AD域的DNS服务器路径)。使用dc = domain,dc = com的示例,如果在AD名称服务器中查找domain.com,它将返回每个AD控制器的IP列表。来自我公司的示例(w /域名已更改,但除此之外是一个真实示例):
mokey 0 /home/jj33 > nslookup example.ad Server: 172.16.2.10 Address: 172.16.2.10#53 Non-authoritative answer: Name: example.ad Address: 172.16.6.2 Name: example.ad Address: 172.16.141.160 Name: example.ad Address: 172.16.7.9 Name: example.ad Address: 172.19.1.14 Name: example.ad Address: 172.19.1.3 Name: example.ad Address: 172.19.1.11 Name: example.ad Address: 172.16.3.2
注意我实际上是从非AD机器进行查询,但我们的unix名称服务器知道将AD域(example.ad)的查询发送到AD DNS服务器。
我确信有一种超级光滑的窗口方式可以做到这一点,但我喜欢在需要从非Windows服务器上找到LDAP服务器时使用DNS方法。