
Ich habe Code geschrieben, um Benutzerinformationen von einem Active Directory-Server abzurufen. Angenommen, der Active Directory-Server hat Knoten, von denen jeder eine andere Active Directory-Installation an einem anderen geografischen Standort ist. Beispiel: ein AD-Server in den USA und ein anderer in Australien mit einem Root-AD-Server in den USA, wobei die beiden ersteren als Knoten dienen.
Würden die Filterabfragen, die ich für die Suche nach Benutzern an verschiedenen geografischen Standorten schreibe, funktionieren, wenn ich sie auf dem Stamm-AD-Server ausführe? Die Abfrage, die ich verwende, ist
(|(objectClass=user)(objectClass=person)(objectClass=inetOrgPerson))
Ich kann dieses Szenario nicht wirklich testen, muss aber wissen, was hier passieren wird.
Antwort1
Das AD ist eine verteilte Multimaster-Datenbank. Grundsätzlich können Sie bei jedem Domänencontroller eine Abfrage zu einem Benutzer durchführen und erhalten in jedem DC (Knoten) die gleiche Antwort.
In AD können Sie die Replikation von Datenänderungen zwischen Servern konfigurieren. Wenn also ein Benutzer in Australien ein Attribut ändert und Sie Daten vom Server in New York abfragen, erhalten Sie möglicherweise unterschiedliche Antworten. Der Domänenadministrator kann Ihnen Informationen zur zeitlichen Replikation in der Domäne geben.
Sobald die Replikation erfolgt ist, verfügen Sie in jedem DC über dieselben Informationen. Normalerweise dauert die Replikation einige Minuten, in manchen Fällen ist sie jedoch nur ein- oder zweimal täglich möglich.
Ich hoffe, dies beantwortet Ihre Frage.
Antwort2
Ihre Terminologie in Bezug auf Active Directory ist nicht präzise. Ich sehe zwei Bedenken bei Ihnen:
- Abfrage der nächstgelegenen Replik des AD
- Das Verhalten von Abfragen in einer Multi-Domain-Umgebung verstehen
Der globale Katalog verwaltet eine Teilmenge des Inhalts aller Domänen in der Gesamtstruktur. Wenn Sie den Begriff „Knoten“ auf unterschiedliche Domänen beziehen, können Sie mit Abfragen an den globalen Katalog alle Domänen in der Gesamtstruktur in einer einzigen Abfrage abfragen (vorausgesetzt, die gesuchten Attribute sind Teil der in den GC replizierten Teilmenge).
Die Lokalisierung eines physisch nahegelegenen Domänencontrollers erfolgt über eine Kombination aus DNS- und LDAP-Abfragen. Eine Gooooogle-Suche nach „dns ldap find closest domain controller“ liefert einige gute erste Schritte (Suchen des nächstgelegenen Domänencontrollers über LDAP).
Wenn Sie unter Windows entwickeln, können Sie den Domänencontrollerstandort „kostenlos“ abrufen, indem Sie die ADSI-API verwenden.
Antwort3
Was hier nicht klar ist, ist, was Sie mit dem Begriff „Knoten“ meinen.
- Eine einzelne Active Directory-Domäne mit mehreren geografisch verteilten Domänencontrollern?
- Eine einzelne Domäne mit Organisationseinheiten, die Benutzer und Computer für jeden geografischen Standort enthalten?
- Mehrere Domänen, die verschiedene regionale Niederlassungen des Unternehmens repräsentieren?
Solange Sie Domänencontroller abfragender gleichen Domäneerhalten Sie die gleiche Antwortauf die gleiche Abfragevon jedem von ihnen (abgesehen von Replikationsproblemen).
Wenn Sie jedoch über mehrere Domänen verfügen oder bestimmte Teilbäume (OUs) einer bestimmten Domäne abfragen möchten, erhalten Sie unterschiedliche Antworten.
Antwort4
Sind Sie sicher, dass Sie den Operator „ODER“ „|“ in der Abfrage haben möchten? Das ergibt keinen Sinn. Setzen Sie Knoten außerdem mit Domänen gleich?
außerdem erhalten Sie im Folgenden ein Beispiel, bei dem Sie zum Testen keinen Code benötigen.
dsquery * domainroot -filter (|(Objektklasse=Benutzer)(Objektklasse=Person)(Objektklasse=inetOrgPerson))" -attr *
aber wie gesagt, der „ODER“-Operator ergibt keinen Sinn.
seltsamerweise habe ich einen Fehler im Antwortcode von Serverfaults gefunden. Es wäre komisch, wenn dieser danach verschwindet