2009-04-14 3 views
34

Ich versuche eine Anwendung (C#) zu entwickeln, um einen LDAP-Server abzufragen. Ich kenne den Server nicht, der zur Abfrage aufgerufen wird. Gibt es eine Möglichkeit, die Standard-Windows-Tools oder etwas in .net zu finden?Wie kann ich herausfinden, welcher Server LDAP in meiner Windows-Domäne hostet?

Ich habe Gerüchte gehört, dass der Server-Name (ldap: // server /) nicht immer benötigt wird, solange ich dc = domain, dc = com in meiner Abfrage-Zeichenfolge habe, aber ich habe Bisher konnte ich damit arbeiten.

Irgendwelche Tipps?

Dank

Antwort

15

Wenn Sie AD verwenden können Sie serverless binding verwenden, um einen Domänencontroller für die Standard-Domäne zu finden, dann LDAP verwenden: // rootDSE Informationen über den Verzeichnisserver zu erhalten, wie es in dem verlinkten Artikel beschrieben .

12

Wenn die Maschine, auf der Sie sich befinden, Teil der AD-Domäne ist, sollten die Namenserver auf die AD-Nameserver eingestellt sein (oder hoffentlich einen DNS-Serverpfad verwenden, der Ihre AD-Domänen auflöst). Wenn Sie in Ihrem Beispiel für dc = domain, dc = com, domain.com in den AD-Nameservern nachschlagen, wird eine Liste der IPs jedes AD-Controllers zurückgegeben. Beispiel aus meiner Firma (w/den Domain-Namen geändert, aber ansonsten ist es ein echtes Beispiel):

 
    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 

Hinweis Ich bin tatsächlich die Abfrage von einer Nicht-AD-Maschine machen, aber unser Unix-Nameserver kennen zu schicken Abfragen für unsere AD-Domäne (example.ad) über die AD DNS-Server.

Ich bin sicher, es gibt eine super-slick Windows-Möglichkeit, dies zu tun, aber ich mag die Verwendung der DNS-Methode, wenn ich die LDAP-Server von einem Nicht-Windows-Server finden muss.

93

AD registriert SRV-Ressourceneinträge in seinem DNS-Server, die Sie abfragen können, um den Port und den Hostnamen des zuständigen LDAP-Servers in Ihrer Domäne abzurufen.

Probieren Sie dies auf der Kommandozeile:

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>> 

(vorausgesetzt, dass Ihr Name-Server der AD-Name-Server ist das der Fall sein sollte für die AD richtig funktionieren)

Bitte sehen Active Directory SRV Records und Windows 2000 DNS white paper für mehr Informationen.

+0

zu klären, die << your.AD.domain >> ist wahrscheinlich der Teil nach dem @ in Ihrer E-Mail-Adresse. – icfantv

+0

Sie könnten auch den Domain-Namen weglassen, um alle verfügbaren Domains abrufen: C: \> nslookup > Settypen = alle > _ldap._tcp _ldap._tcp << >> your.AD.domain1 SRV Service Lage.: Priorität = 0 Gewicht = 100 port = 389 svr hostname = << >> ldap.hostname1. << >> your.AD.domain1 _ldap._tcp. << >> your.AD.domain2 SRV Service-Standort : Priorität = 0 Gewicht = 100 port = 389 svr hostname = << >><< ldap.hostname1 your.AD.domain2 –

+0

es ist 'type = all', Typen nicht – deltree

Verwandte Themen