2009-04-14 28 views
34

我想開發一個應用程序(C#)來查詢LDAP服務器。我不知道名爲查詢的實際服務器 - 有沒有辦法找到使用標準的Windows工具或.NET中的東西?我怎樣才能找到我的Windows域的服務器主機LDAP?

我也聽說有服務器名稱(ldap:// server /)並不總是需要的,只要我在我的查詢字符串中有dc = domain,dc = com,但我已經迄今爲止能夠以這種方式進行工作。

任何提示?

感謝

回答

15

如果你使用AD可以使用serverless binding找到爲默認域的域控制器,然後使用LDAP:// RootDSE的,以獲取有關目錄服務器的信息,如鏈接的文章中描述。

12

如果您對該機是AD域的一部分,它應該有它的名字服務器設置爲AD名稱服務器(或希望使用將最終解決您的AD域的DNS服務器的路徑)。使用您的DC =域,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式的方式來做到這一點,但我喜歡使用DNS方法時,我需要找到從非Windows服務器的LDAP服務器。

93

AD登記服務位置(SRV)在其DNS服務器資源記錄,您可以查詢得到的端口和負責任的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正常工作的情況下,廣告域名服務器)

請參閱Active Directory SRV RecordsWindows 2000 DNS white paper瞭解更多信息。

+0

爲了澄清,<< your.AD.domain >>可能是您電子郵件地址後面的部分。 – icfantv 2011-09-01 18:01:52