Upload
irmalinda-schumacher
View
109
Download
0
Embed Size (px)
Citation preview
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
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
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.
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.
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...)
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).
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.
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
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.
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.)
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 ) )
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.
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
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.
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.
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.
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).
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
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“...
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.
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!
JNDI - Java Naming and Directory Interface
JAVA Applikation
JNDI Naming Manager
LDAP NDS
JNDI API
JNDI SPI
SPI - Service Provider Interface
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.