Was sind die Hauptunterschiede zwischen diesen beiden Implementierungen des LDAP-Protokolls? Was ist besser für eine heterogene Umgebung? Irgendwelche guten Webseiten zu diesem Thema?Active Directory vs OpenLDAP
Antwort
Für heterogene Umgebungen möchten Sie einen universellen Server wie OpenLDAP verwenden. Der Vorteil von AD besteht normalerweise darin, dass es bereits Benutzerkonten für Ihre internen Benutzer enthält. Diese können mit separaten LDAP-Servern synchronisiert werden, was jedoch die Komplexität erhöht.
Soweit die Besonderheiten des Protokolls gehen, haben die Dokumente für Oracle Virtual Directory eine ziemlich gute Zusammenfassung. (OVD ist ein Produkt, das Proxy-AD verwendet werden können, und einige seiner Macken in eine Standard-Schnittstelle übersetzen.):
http://download.oracle.com/docs/html/E10286_01/app_bundled_plugins.htm#CHDGDBBG
Ranging Attribute Attribute in Active Directory und ADAM mit mehr dann werden 1000 Werte zurückgegeben 1000 unter eine Zeit mit einem Namen, der den Wertebereich enthält, der zurückgegeben wurde (oder 1500 für Windows 2003). Der Bereich ist an den Client in Form zurückgegeben: Mitglied; 1-1000: somevalue Um die nächsten tausend Einträge zu erhalten, die Client-Anwendung muss irgendwie wissen die Abfrage zu wiederholen und fordern Sie die Attributelement 1001 -2000. Diese erfordert Anwendungen zu behandeln Microsoft Active Directory in einem spezielle Weise im Vergleich zu anderen Verzeichnis-Produkte.
Passwort Updates Microsoft Active Directory und ADAM haben spezielle Regeln um, wie das Kennwort eines Benutzer kann unter Verwendung von LDAP aktualisiert werden:
- Passwörter nur über eine sichere SSL-Verbindung aktualisiert werden.
- Wenn ein Benutzer sein eigenes Kennwort aktualisiert, muss das ursprüngliche Kennwort in einem Änderungsdelete mit enthalten sein. Das neue Kennwort ist ein Änderungsadresscode in derselben Änderungsoperation.
- Nur ein Administrator darf das Kennwort eines Benutzers zurücksetzen, ohne das vorherige Kennwort zu kennen.
- Aktive Directroy nicht das Attribut userpassword verwenden, verwendet es die unicodePwd Attribut (die quoted-UTF16-hex-padded-base64 encoded ist).
Object Mapping Die meisten LDAP Verzeichnisse verwenden die inetOrgPerson und groupOfUniqueNames Klassen für Benutzer und Gruppen widersprechen. Microsoft Active Directory verwendet die Benutzer- und Gruppen object mit Attributen spezifischen zu Active Directory NOS Anforderungen von Microsoft.“
Dies sind einige der wichtigsten sind, aber es gibt andere.
Hier sind einige Unterschiede, die ich von meinem Kopf kenne. OpenLDAP kann als generischer LDAP-Server bezeichnet werden, vergleichbar mit den LDAP-Servern anderer Anbieter (Fedora DS 389, Oracle Internet Directory, IBM Tivoli Directory Server). Active Directory ist ein bisschen mehr für eine Microsoft-Produktsuite angepasst (dh: eine Microsoft-Domäne ausführen). Es gibt Vor- und Nachteile von jedem.
OpenLDAP ist nach der Installation leer und hat keine Struktur (DIT genannt). Es hat nicht einmal einen Root-Eintrag aus der Box. AD wird mit einer Basisstruktur ausgeliefert und verfügt über die GUI-Tools, mit denen Sie beginnen können, Benutzer zu füllen. OpenLDAP und andere erwarten von Ihnen, dass Sie das DIT von Hand erstellen, so dass Sie eine Struktur entwerfen müssen. Sie müssen also planen, wo Sie Ihre Benutzer, Gruppen und Rollen ablegen und sich Gedanken über ACLs oder Zweigdelegationen machen, wenn Ihr Projekt solche Dinge beinhaltet. Zum Beispiel haben Sie vielleicht eine Domain für widgets.com. In AD wird die verschifft Struktur wie folgt aussehen:
+ dc=widgets,dc=com
|-- cn=Computers
|-- cn=Users
|-- cn=Groups
in OpenLDAP (oder andere Vanille-Implementierungen) können Sie Ihr DIT in vielerlei Hinsicht entwerfen. Sie können der Konvention der Domain-Komponente (dc = foo, dc = bar) folgen oder Sie können etwas verwenden, das nach geografischen Regionen organisiert ist (o = foo, c = bar). Es spielt keine große Rolle, aber Sie sollten mit dem einen oder anderen gehen. AD verwendet die DC-Konvention und gibt Ihnen keine Wahl, aber andere LDAP-Server können einer der beiden Konventionen folgen. Wenn Sie versuchen, in eine große MS-Domäne zu passen, würde ich bei DC Convention für Konsistenz und einfache Integration bleiben. Aber für dieses Beispiel werden wir unsere Unternehmensorganisation (o) in einem Land (c) vorgeben, ohne Regionen oder Einheiten (ou):
+ o=widgets,c=us
|-- cn=Machines
|-- cn=People
|-- cn=Groups
|-- cn=Roles
Dann können Sie Ihr Schema erweitern, wenn es sein muss. Wenn Sie Ihr AD-Schema erweitern möchten, müssen Sie über das Active Directory-Schema-Editor-MMC-Konsolen-Plug-In Schema-Elemente hinzufügen (eine benutzerdefinierte MMC erstellen). Danach ist es ziemlich einfach. Definieren Sie zuerst Ihre Attribute und dann Ihre Objektklassen. OpenLDAP erfordert, dass Sie einen LDIF schreiben (erfordert auch zuerst Attribute und dann Objektklassen). Oder verwenden Sie Apache Directory Studio mit OpenLDAP, welches ein großartiges GUI- und Admin-Tool ist und OpenLDAP in der Nähe von AD benutzerfreundlich macht.
AD lässt Sie nicht alles auf 389 anonym abfragen. Wenn Sie Schemainformationen erhalten möchten (Katalog genannt), müssen Sie bei 3289 abfragen und authentifizieren. Das erinnert mich an LDAP's DIB vs DIT-Verstecken, aber ich weiß nicht, ob AD hier dasselbe versucht.
AD hat eine Standardabfrage von 10.000. Wenn Sie alles auf einmal aufnehmen möchten, müssen Sie auf Ihrem Client oder in Ihrem Code Paging-Steuerelemente verwenden oder das Standard-Abfrage-Limit auf dem Domänencontroller ändern, den Sie suchen. Beachten Sie, dass Paging-Steuerelemente problematisch sein können. Ich hatte sie in Java mit den Netscape-Bibliotheken arbeiten lassen, aber einige LDAP-Clients scheinen nicht richtig zu funktionieren, obwohl sie behaupten, dass sie Paging-Steuerelemente (YMMV) unterstützen.
AD Authentifizierung ist ein wenig seltsam. Sie können sich als E-Mail-formatierter Benutzername (-D Benutzername @ Domäne) authentifizieren oder den vollständigen Benutzer-DN verwenden. Wenn es einen Weg gibt, dies in OpenLDAP zu tun, weiß ich nicht, wie es geht, aber ich würde mich nicht darum kümmern. Dies ist im Vergleich zu anderen LDAP-Servern seltsam. Einfaches LDAP folgt normalerweise dem DN-Format (cn = Benutzername, cn = Benutzer, o = Widgets, c = us).
Ich denke, kurz gesagt, AD ist eigenmächtig und OpenLDAP ist generisch. Und deshalb ist AD leicht aufzustehen, aber OpenLDAP kann flexibler sein.