2009-05-19 19 views
58

Ich habe in vielen Projekten, mit denen ich in Berührung gekommen bin, Kontakt zu LDAP gehabt, aber die Wahrheit ist, ich verstehe es nicht wirklich. Ich dachte, es wäre nur ein Personenverzeichnis, aber nachdem ich entdeckt habe, dass es irgendwelche Objekte in einer hierarchischen Struktur enthalten kann.Was löst LDAP?

Ich installierte openldap in meiner Box und ich fand viele Tutorials nur für die Installation.

Was ist LDAP? In welchen Szenarien ist LDAP die richtige Wahl? Was sind die LDAP-Konzepte, die ich kennen sollte, um damit zu arbeiten? Was sind die Vorteile von LDAP? Wird es nur verwendet, weil alte Anwendungen es benutzt haben? Gibt es irgendwo im Internet ein gutes Dokument, das all diese Fragen erklärt?

UPDATE: Ergänzend zu den Antworten, die ich this link gefunden, die für die LDAP-Neuling wie ich eine Kurzanleitung enthält.

Antwort

38

Was ist LDAP? In welchen Szenarien ist LDAP die richtige Wahl?

Im Kern ist LDAP ein Protokoll für den Zugriff auf Objekte, die für die Speicherung in einem Verzeichnis geeignet sind.Ob etwas "geeignet" ist, ist eine völlig subjektive Bestimmung, die den Implementierern überlassen bleibt, aber typischerweise bedeutet dies Sammlungen von vielen Objekten, die selten (oder nie) aktualisierte Daten haben, wobei jedes Objekt eine offensichtliche oder kanonische Art hat, betrachtet zu werden up:

  • ein Telefonbuch (suchen nach Name oder nach der Telefonnummer)
  • Titel in einer Bibliothek (aufblicken nach Titel, Autor, etc.)
  • Mieter in einem Gebäude (aufblicken von Stock, Suite, Name, etc.)

und so weiter.

Beachten Sie, dass LDAP selbst nur ein Protokoll ist und keinen tatsächlichen Speicher zur Verfügung stellt - in ähnlicher Weise bedeutet HTTP nichts darüber, ob Sie Apache, Jetty, Tomcat, Mongrel usw. verwenden . als ein Webserver. (Ein Problem bei der LDAP im Allgemeinen ist die verwirrende Wiederverwendung von Namen verschiedene Dinge zu bedeuten. Wikipedia hat a good section zu diesem Thema.)

2

LDAP ist nur ein Protokoll, der Wikipedia-Artikel erklärt es angemessen http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol

Es ist ein Weg, um eine darunter liegende Organisationsstruktur wie Microsoft Active Directory abzufragen. Sie können LDAP-Abfragen verwenden, um alle Arten von Informationen über Benutzer zu erhalten, verwenden sie Anwendungsrechte für die Einstellung usw.

9

LDAP hat O (1) Leseleistung, im Austausch für O (etwas schlechter) Schreibleistung. Es ist ideal für Daten, auf die häufig zugegriffen wird, die aber selten geändert werden - Verzeichnisse von Personen, Rechnernamen und Adressen und so weiter. (daher das Akronym: Lightweight Directory Access Protocol.)

LDAP ist die richtige Wahl, wenn der Aufwand für die Verwendung einer Datenbank, die nicht relational ist, in Bezug auf verringerte Vertrautheit mit dem Entwickler und merkwürdigen Leistungsmerkmalen, geringer ist als der Nutzen von blendend schneller Lesezugriff.

+5

Bitte laden Sie Ihre O () ist richtig. Sie meinen nicht, was Sie denken – Javier

+1

zu klären: was ich meinte war, dass Abruf Zeiten nicht von der Anzahl der Elemente im Datenspeicher abhängen (d. h. Abfragen werden nicht langsamer, je größer die Tabelle ist). Bei den meisten LDAP-Implementierungen sind dies jedoch Einsätze. –

+1

Jeder ldap-Server, dessen Wert sich auszahlt, behält einen Index für den dn (auch Primärschlüssel genannt) bei und ermöglicht die Definition zusätzlicher Indizes zur Optimierung häufiger Abfragen. – dwarring

2

LDAP ist ein Zugriffsprotokoll; Es stellt nur eine API für die zugrunde liegende Technologie bereit, für die Sie nach Anwendungen suchen - a directory service. OpenLDAP ist einer der Open-Source-Verzeichnisdienste; Sun hat eine andere Implementierung namens OpenDS. Active Directory und Novell NDS sind zwei weitere, die häufig in diesem Bereich zu finden sind.

Das Verzeichnis kann zum Speichern von Informationen über beliebige Ressourcen und die Beziehungen zwischen den Ressourcen verwendet werden, z. B. die Rechte eines Benutzers für ein Verzeichnis, einen Drucker oder ein Netzwerkzugriffsgerät.

1

In einem meinen alten Arbeitsplätzen wir LDAP als unser primäres Benutzerauthentifizierungssystem verwendet.

Dies wiederum zur Verfügung gestellt unserer verschiedenen Systeme mit Informationen, die Dept. sie gehörten zu, wo sie ihre Home-Verzeichnisse, Kontaktinformationen, Mitarbeiterverwaltung montieren sollten.

Nicht unbedingt von LDAP gesteuert, aber andere Dinge, die wir gemischt hatten, um über LDAP zu arbeiten, waren die Existenz von SQL-Benutzern, K4, Samba und E-Mail-Kontoerstellung.

3

Ich arbeite Teilzeit und Vollzeit-Student. Mein Lehrplan fördert (lesen erfordert) viele Gruppenprojekte.

Ich habe openLdap und phpLdapAdmin verwendet, um den Zugriff auf meine Subversion und Mercurial Repos, Trac Projekte, Hudson, etc. zu kontrollieren. Es war nicht einfach zu installieren, aber die Zeit in der Verwaltung war ein Gott senden.

Wenn Sie Projekte haben, in denen Sie viele Gruppen von Menschen haben, die verschiedene Ressourcen verwenden müssen, ist es ein gutes Werkzeug.

+0

Je nach Umfang und Umfang der Benutzerbasis reichen manchmal Dateien aus. Manchmal eine DB, manchmal LDAP. Es hängt oft von der Skalierung ab. LDAP-Server im Allgemeinen für diese Verwendung optimiert, skalieren oft besser. Weniger klarer Schnitt eines Gehäuses mit kleineren Anwendungsfällen. – geoffc

13

DITs sind ein hierarchisches Beschreibungsschema, das sich sehr gut für B-Tree-Algorithmen eignet, was in den meisten Fällen zu einer enormen Suchleistung führt. Directory Server wie OpenDS geben indexierte Suchen in Mikrosekunden zurück, während RDBMS-Systeme viel langsamer sind. Verzeichnisserver (oft als LDAP-Server bezeichnet) tauschen Ressourcen (RAM, CPU) für eine schnelle Leseantwort aus. RDBMS-Systeme bieten eine größere Funktionalität hinsichtlich der Verwaltung der fraglichen Daten. Brauchen Sie Geschwindigkeit mit wenigen oder gar keinen Updates, Einfachheit und kleinem Netzwerkprotokoll? Verwenden Sie einen Verzeichnisserver. Benötigen Sie Datenmanagement- und Mining-Funktionen und/oder eine hohe Änderungsrate der Datenbank mit relationalen Aspekten, die zwischen Daten definiert sind? Verwenden Sie ein RDBMS (MySQL ist Ihre beste Wette hier).

+0

Gute Kombination aus beschreibenden und präskriptiven. Willkommen bei SO! –

5

Eine Perspektive, auf die ich gerne eingehe: LDAP ist eine App auf einem Persistenzspeicher und eine Datenbank ist ein Persistenzspeicher. Beide können zum Speichern von Benutzerinformationen verwendet werden.

LDAP gibt Ihnen eine Hierarchie, die in einer Datenbank schwieriger ist. Sie können eine Hierarchie in einer Datenbank erstellen, aber es ist schwieriger, Dinge wie Delegierung (diese Zeilen gehören nur Ihnen) oder ACLs in Zeilen zu erledigen. Es ist also einfacher, Sicherheitsprobleme aus der Datenbank zu entfernen, wenn Sie LDAP zum Speichern von Benutzeridentitäten verwenden. Der Versuch, es in der Datenbank zu lösen, ist komisch.

Zur gleichen Zeit, LDAP ist schrecklich für die Berichterstattung gegen (Umwandlung von LDAP in eine DB für die Berichterstattung). Das Speichern von Attributen tief in der Struktur, die schnell gesucht werden müssen, kann für die Performance problematisch sein (tun Sie dies nicht, haben Sie eine DB auf der Seite oder versuchen Sie, die Abfrage durch Redesign Ihrer DIT zu reduzieren). Das Speichern von Attributen überall in einem wirklich tiefen DIT ist nur ein schlechtes LDAP- oder Systemdesign, aber manchmal ist es unvermeidlich, wenn Sie an ein Herstellerprodukt oder eine Legacy-App gebunden sind.

1

Gibt es irgendwo im Internet ein gutes Dokument, das all diese Fragen erklärt?

IBM hat ein ausgezeichnetes Red Book über LDAP veröffentlicht. Der Titel lautet: Understanding LDAP - Design and Implementation.

Es kann vom vorherigen Link heruntergeladen werden.