Directory Services - LDAP, JNDI Seminar: Verteilte Informationssysteme Fachbereich Mathematik -...

23
Directory Services - LDAP, JNDI Seminar: Verteilte Informationssysteme Fachbereich Mathematik - Fachgebiet Informatik Philipps Universität Marburg, September 2000 Thomas Friese Directories allgemein Beziehung zu Datenbanken LDAP LDIF JNDI

Transcript of Directory Services - LDAP, JNDI Seminar: Verteilte Informationssysteme Fachbereich Mathematik -...

Page 1: Directory Services - LDAP, JNDI Seminar: Verteilte Informationssysteme Fachbereich Mathematik - Fachgebiet Informatik Philipps Universität Marburg, September.

Directory Services - LDAP, JNDI

Seminar: Verteilte InformationssystemeFachbereich Mathematik - Fachgebiet InformatikPhilipps Universität Marburg, September 2000

Thomas Friese

Directories allgemein

Beziehung zu Datenbanken

LDAP LDIF JNDI

Page 2: Directory Services - LDAP, JNDI Seminar: Verteilte Informationssysteme Fachbereich Mathematik - Fachgebiet Informatik Philipps Universität Marburg, September.

Beispiele• Telefonbuch• Fernsehzeitung• Versandhauskatalog

• Kundenkartei• Lieferantenkartei

Gemeinsame Eigenschaften

Was sind Directories?

• Änderungen der Einträge sind seltener als Abfragen

• Es sind Sammlungen von Einträgen

• Es erfolgen häufig Anfragen nach bestimmten Einträgen

• Die Einträge sollten sinnvoll gegliedert sein

Page 3: Directory Services - LDAP, JNDI Seminar: Verteilte Informationssysteme Fachbereich Mathematik - Fachgebiet Informatik Philipps Universität Marburg, September.

Elektronische DirectoriesOftmals auch als „on-line“-Directories bezeichnet, bieten sie einige Vorteile gegenüber klassischen Directories:

Suche: Durch den Computereinsatz kann die Suche erheblichvereinfacht und beschleunigt werden.

Flexibilität: Information kann jederzeit aktualisiert werden.

Anwendungsnähe: Die Information kann leichter mit dem Computer verarbeitet werden.

Wiederverwendbarkeit: EIN Datenbestand kann für vieleAnwendungen verwendet werden.

Sicherheit: Es ist leichter eine einheitliche Sicherheitspolitik miteinem (zentralen) elektronischen Directory durchzusetzen.

Page 4: Directory Services - LDAP, JNDI Seminar: Verteilte Informationssysteme Fachbereich Mathematik - Fachgebiet Informatik Philipps Universität Marburg, September.

Beispiele elektronischer Directories

DNS - Das Domain Name System des InternetEiner der ältesten und größten Directory Dienste.Untrennbar mit dem Internet verknüpft.Speichert in vielen verteilten VerzeichnissenInformationen über IP-Adressen und Host-/Domain-Namen.

NIS+ - Network Information System von SunDirectory Dienst von Solaris (ursprünglich SunOS).Ein zentraler Server verwaltet Informationen über diein einer NIS-Domain zusammengefassten Rechner.NIS ist inzwischen Bestandteil fast jeder UNIX-Variante.

NDS - Novell Directory ServicesWindows-Unix-Integration, Corporate Directory, implementiert LDAP.

Page 5: Directory Services - LDAP, JNDI Seminar: Verteilte Informationssysteme Fachbereich Mathematik - Fachgebiet Informatik Philipps Universität Marburg, September.

Das Verhältnis zwischen Datenbanken und Directories

Man kann Directories als spezielle Datenbankanwendungen betrachten. Die Speicherung der Daten eines Directories wirdtypischerweise von einem Datenbank-Backend erledigt.

Unterschiede zwischen Directories und Datenbanken

+ Verhältnis zwischen Schreib- und Lesezugriffen

+ Erweiterbarkeit (Typdefinitionen, „schemas“ etc.)

+ Verteilte Information (Ausnutzen der hierarchischen Gliederung)

+ Replikation (Zuverlässigkeit, Verfügbarkeit, Lokalität, Leistung)

+ Standardisierung (LDAP)

• Leistung (kleinere Datensätze, dafür mehr Anfragen bei Directories)

- Directories unterstützen keine Transaktionen

- Directories sind nicht gedacht für komplexe Anfragen (Joins...)

Page 6: Directory Services - LDAP, JNDI Seminar: Verteilte Informationssysteme Fachbereich Mathematik - Fachgebiet Informatik Philipps Universität Marburg, September.

Leightweight Directory Access Protocol

Neben dem Zugriffsprotokoll auf ein Directory werden von LDAPvier „Modelle“ definiert, die bei der Planung und Implementierung von Directory-Diensten helfen. Diese LDAP-Modelle sind:

• Information Model• Naming Model

• Functional Model• Security Model

LDAP wird immer häufiger unterstützt und verwendet.

Ist wesentlich einfacher als das früher definierte X.500 DAP(deswegen auch „Leightweight“ im Namen).

Anders als beispielsweise HTTP und SMTP arbeitet es aber nicht mit leicht für Menschen verständlichen Befehlen, sondern Befehlscodes.

Der aktuelle Standard beschreibt LDAP Version 3 (LDAPv3).

Page 7: Directory Services - LDAP, JNDI Seminar: Verteilte Informationssysteme Fachbereich Mathematik - Fachgebiet Informatik Philipps Universität Marburg, September.

LDAP Information Model

Directory

Eintrag (entry)

• Ein Directory besteht aus Einträgen.

Attribut

• Ein Eintrag besteht aus einem oder mehreren Attributen.

Typ Wert

• Ein Attribut hat einen Typ und einen oder mehrere Werte.

Page 8: Directory Services - LDAP, JNDI Seminar: Verteilte Informationssysteme Fachbereich Mathematik - Fachgebiet Informatik Philipps Universität Marburg, September.

LDAP Information ModelEinzelne Einträge können einer oder mehreren Objektklassen zugeordnet werden.Diese beschreiben, welche Attribute ein Eintrag haben mußund welche er haben kann.

Informationen über Attributtypen und Objektklassen werden in „schemas“ festgelegt.

Viele sinnvolle Attributtypen und Objektklassen sind bereits durchdie IETF und verschiedene Hersteller von Directory-Software wieNetscape und Microsoft definiert worden.

Beispiele: cn - Common Namedc - Domain Componentsn - Surnameuid - User ID

Attributtypen

personorganizationuidObjectsimpleSecurityObject

Objektklassen

Page 9: Directory Services - LDAP, JNDI Seminar: Verteilte Informationssysteme Fachbereich Mathematik - Fachgebiet Informatik Philipps Universität Marburg, September.

Schema-DefinitionVerschiedene Standards und LDAP Implementierungen verwenden sehrunterschiedliche Formate zur Schemabeschreibung. LDAPv3 fordert, daß Directoryserver unterstützte schemas mittels LDAPübertragen können - und möglichst auch verändern lassen.

Attributtypen

(<oid> NAME <name>[DESC <desc>][SUP <supoid>][EQUALITY <equalitymatchoid>][ORDERING <ordmatchoid>][SUBST <submatchoid>][SYNTAX <synoid>][SINGLE-VALUE])

Objekt-ID und Name (eindeutig)Beschreibung (String in Hochkommata)

Vatertyp (ID des Typs aus, dem abgeleitet wird)

IDs der Methoden zumStringvergleich und fürdie verwendete Syntax.

Ein Attribut ist „multi-valued“solange nicht anders gefordert.

Page 10: Directory Services - LDAP, JNDI Seminar: Verteilte Informationssysteme Fachbereich Mathematik - Fachgebiet Informatik Philipps Universität Marburg, September.

Objektklassen

( <oid> NAME <name>[DESC] <desc>[SUP] <oid>[ABSTRACT | AUXILIARY | STRUCTURAL][MUST <attributeset>][MAY <attributeset>] )

Objekt-ID und Name (eindeutig)Beschreibung (String in Hochkommata)

Superklasse (ID der Klasse, aus der abgeleitet wird)

Erforderliche....

...mögliche Attribute

Format für „attributeset“:

( <name | oid> $ <name | oid> $ ... )

Objekt-IDs können voneinander abgeleitet werden. Jeder, der eine OID besitzt, kann eine neue vergeben, indem er sie „erweitert“ und dies registriert.Es sind Folgen von durch Punkte getrennte Zahlen.Beispiel: 1.3.6.1.4.250.1 ist die OID für Attributtypen der Universität von Michigan (1.3.6.1.4.250.1.1 wäre dann der erste Typ ....250.1.2 der zweite Typ usw.)

Page 11: Directory Services - LDAP, JNDI Seminar: Verteilte Informationssysteme Fachbereich Mathematik - Fachgebiet Informatik Philipps Universität Marburg, September.

Beispieleattributetype ( 2.5.4.41 NAME 'name'

EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatchSYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )

attributetype ( 2.5.4.3 NAME ( 'cn' 'commonName' ) SUP name )

objectclass ( 2.5.6.4 NAME 'organization' SUP top STRUCTURALMUST oMAY ( userPassword $ searchGuide $ seeAlso $

businessCategory $ x121Address $ registeredAddress $ destinationIndicator $preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $ telephoneNumber $internationaliSDNNumber $ facsimileTelephoneNumber $ street $ postOfficeBox $ postalCode $ postalAddress $ physicalDeliveryOfficeName $ st $ l $ description ) )

Page 12: Directory Services - LDAP, JNDI Seminar: Verteilte Informationssysteme Fachbereich Mathematik - Fachgebiet Informatik Philipps Universität Marburg, September.

LDAP Naming Model

Um jeden Eintrag eines Directories ansprechen zu können,wird ihm ein eindeutiger Name zugeordnet, der „Distinguished Name“ (DN).

Man nutzt hier die hierarchische Struktur eines Directories aus und beschreibt den Pfad vom Eintrag bis zur Wurzel desDirectories.

Den am Anfang dieser - durch Komma getrennten - Liste stehenden Eintrag bezeichnet man als: „Relative Distinguished Name“ (RDN).

Hieraus erkennt man leicht, daß der RDN für zwei Einträge mitidentischem übergeordneten Eintrag nicht gleich sein darf.

Page 13: Directory Services - LDAP, JNDI Seminar: Verteilte Informationssysteme Fachbereich Mathematik - Fachgebiet Informatik Philipps Universität Marburg, September.

dn: dc=uni-mr, dc=de

o: Uni-Marburg.de

dn: dc=mathematik, dc=uni-mr, dc=de

dc: mathematik

dn: dc=physik, dc=uni-mr, dc=de

dc: physik

dn: ou=people, ou=mathematik, dc=uni-mr, dc=de

ou: people

dn: ou=devices, ou=mathematik, dc=uni-mr, dc=de

ou: devices

dn: uid=friese, ou=people, ou=mathematik, dc=uni-mr, dc=de

cn: Thomas Friese

sn: Friese

dn: cn=spitzweg, ou=devices, ou=mathematik, dc=uni-mr, dc=de

cn: spitzweg

resolution: 1200

description: LaserJet 4000N in Raum D4416

Beispiel

Page 14: Directory Services - LDAP, JNDI Seminar: Verteilte Informationssysteme Fachbereich Mathematik - Fachgebiet Informatik Philipps Universität Marburg, September.

LDAP Functional Model

Es beschreibt eine Reihe von Operationen, die in drei Klasseneingeteilt werden:Interrogation operations

dienen dazu, Informationen im Directory zu suchen oderaus dem Directory abzufragen.

Update operations

erlauben es, Daten zu verändern, löschen, verschieben oder hinzuzufügen.

Authentication operations

ermöglichen es einem Client, sich beim Directoryserverzu authentifizieren und so das Verhalten während einerSession zu steuern.

Page 15: Directory Services - LDAP, JNDI Seminar: Verteilte Informationssysteme Fachbereich Mathematik - Fachgebiet Informatik Philipps Universität Marburg, September.

LDAP Security Model

• Die Verbindungsorientiertheit des Protokolls wird ausgenutzt.

• Prinzipiell authentifiziert sich ein Client nach dem Aufbau einerVerbindung und verwendet dann diese Verbindung für alle folgenden Operationen.

• LDAP bis Version 2 erlaubt nur Kerberos- und eine einfache Authentifizierung.

• Ab Version 3 besteht die Möglichkeit mittels des SASL Frameworks (Simple Authentication and Security Layer)auch andere Mechanismen zu integrieren.

• LDAP selbst definiert (noch) keinen Mechanismus zur Verwaltung von Zugriffsrechten.

Page 16: Directory Services - LDAP, JNDI Seminar: Verteilte Informationssysteme Fachbereich Mathematik - Fachgebiet Informatik Philipps Universität Marburg, September.

LDIF - LDAP Data Interchange FormatWird verwendet, um große Mengen von Einträgen textuellzu repräsentieren.

[<id>]dn: <distinguished name>objectClass: <object class>objectClass: <object class>...<attribute type>[;lang-TAG]:<attribute value><attribute type>[;lang-TAG]:<attribute value>...

Format:

Mehrere Einträge in einer LDIF-Datei werden durch Leerzeilengetrennt.

Page 17: Directory Services - LDAP, JNDI Seminar: Verteilte Informationssysteme Fachbereich Mathematik - Fachgebiet Informatik Philipps Universität Marburg, September.

Verteilte DirectoriesOftmals erscheint es sinnvoll, die Informationen nicht ineinem einzigen, sondern mehreren verbundenen Servernzu speichern.

Hierzu nutzt man oft die hierarchische Anordnung der Einträge aus.

Auch die Netzwerktopologie oder organisatorische sowietopographische Aufteilung einer Organisation können hier füreine Aufteilung sprechen.

Man betrachtet oft den gesamten „Directory Information Tree“ und teilt diesen dann in Partitionen auf, die auf verschiedeneServer verteilt werden können.

Daneben kann man ein Directory auf mehreren Servern in identischen Kopien speichern (Replikation).

Page 18: Directory Services - LDAP, JNDI Seminar: Verteilte Informationssysteme Fachbereich Mathematik - Fachgebiet Informatik Philipps Universität Marburg, September.

Beispiele

ou=mathematik

dc=uni-marburg, dc=de

ou=physik ou=HRZ

ou=personen ou=geräte

dc=company dc=com

dc=america dc=europe

dc=afrika

ou=people ou=devices ou=people ou=devices

Page 19: Directory Services - LDAP, JNDI Seminar: Verteilte Informationssysteme Fachbereich Mathematik - Fachgebiet Informatik Philipps Universität Marburg, September.

Verbindung zwischen den Directories

Server 1

Server 3Server 2

Client

Verbindung mittels „Referral“

Kann ein Server die Anfrageeines Clients nicht beantworten,leitet er ihn an einen anderen Server weiter, der die Antwortgeben kann, oder weiterleitet...

Server 1

Server 3Server 2

Client

Verbindung mittels „Chaining“

Kann ein Server die Anfrageeines Clients nicht beantworten,befragt er einen anderen Servervon dem er eine Antwort erwartet,oder der genauso „weiter fragt“...

Page 20: Directory Services - LDAP, JNDI Seminar: Verteilte Informationssysteme Fachbereich Mathematik - Fachgebiet Informatik Philipps Universität Marburg, September.

Typische Anwendungen

„White Pages“

„Ich suche Adresse und Telefonnummer von....“

„Yellow Pages“

„Ich brauche eine Liste aller Drucker....“

„Attribute Mapping“

„Welche e-Mail-Adresse hat der Benutzer mit UID....“„Welche IP-Adresse hat der Rechner pc12345.mathematik....“

Adressregister und die Unterstützung von Netzwerk-Betriebssystemensind die häufigsten Anwendungen.

Page 21: Directory Services - LDAP, JNDI Seminar: Verteilte Informationssysteme Fachbereich Mathematik - Fachgebiet Informatik Philipps Universität Marburg, September.

Directory Server - „nur die halbe Miete“

Neben den eigentlichen „Directory Services“ - also der Softwareauf einem (oder mehreren) Servern, müssen auch die Clients mitdem Directory in Kontakt treten können!

Hier ist LDAP als Standard hilfreich. Viele Applikationensind schon „directory aware“.

Die Hersteller von Server-Software bieten (meist kostenlos) für alle gängigen Programmiersprachen SDKs an. Damit istes relativ einfach eigene Applikationen mit Directory-Unterstützung zu entwickeln.

Für JAVA gibt es das „Java Naming and Directory Interface“(JNDI). Aber das JNDI ist mehr als ein simples LDAP-SDK!

Page 22: Directory Services - LDAP, JNDI Seminar: Verteilte Informationssysteme Fachbereich Mathematik - Fachgebiet Informatik Philipps Universität Marburg, September.

JNDI - Java Naming and Directory Interface

JAVA Applikation

JNDI Naming Manager

LDAP NDS

JNDI API

JNDI SPI

SPI - Service Provider Interface

Page 23: Directory Services - LDAP, JNDI Seminar: Verteilte Informationssysteme Fachbereich Mathematik - Fachgebiet Informatik Philipps Universität Marburg, September.

Wichtige Interfaces und Methoden

Context repräsentiert einen Namensraum und stellt damit daswichtigste Interface des JNDI dar.

lookup(String/Name) schlägt einen Eintrag des Directoriesnach.

bind(Name,Object) bindet Objekt an Namen.

DirContext erweitert Context um Eigenschaften, die für denUmgang mit Directories typisch sind.

search(...) erlaubt suche im Directory.

bind(Name,Object,Attributes) bindet Objekt an Namenunter berücksichtigung derAttribute.

getSchema(String/Name)ermittelt das Schema, welches mit dem Objekt assoziiert ist.

Name Interface zur Repräsentation eines generischen Namens.