Verteilte Anwendungen - Lehrstuhl für Angewandte Informatik

Werbung
Technische Universität München, Informatik XI
Angewandte Informatik / Kooperative Systeme
Verteilte Anwendungen:
LDAP
Dr. Wolfgang Wörndl
07.05.2004
Technische Universität München, Informatik XI
Angewandte Informatik / Kooperative Systeme
Überblick

Architektur
– Client-Server Modell


Verzeichnisdienst
LDAP
–
–
–
–
–
Motivation
LDAP Datenmodell
Architektur, Protokoll
Beispiel
Austauschformat (LDIF)
© Dr. Wolfgang Wörndl, 07.05.2004
2
Technische Universität München, Informatik XI
Angewandte Informatik / Kooperative Systeme
Einleitung

Namensdienst (WH)
– Abbildung Name -> Adresse
– ID als eindeutiger Name
– Bsp.: DNS

Verzeichnisdienst (directory service)
– Speicherung zusätzlicher Attribute
– Erweiterte Queries (Pattern matching)
– Spezielle Datenbank
© Dr. Wolfgang Wörndl, 07.05.2004
3
Technische Universität München, Informatik XI
Angewandte Informatik / Kooperative Systeme
Verzeichnis

Verzeichnis (directory):
Liste von (sortierten) Objekten mit
beschreibender Information (Metadaten)

Unterschied Verzeichnis – Datenbank
– Verzeichnis hat (deutlich) mehr Lese- als
Schreib-Anfragen
– Keine Transaktionen
– Unterschiedliche Anfragesprachen (SQL bei
Datenbanken)
© Dr. Wolfgang Wörndl, 07.05.2004
4
Technische Universität München, Informatik XI
Angewandte Informatik / Kooperative Systeme
Verzeichnisdienst

Verzeichnisdienst (directory service):
Namensdienst mit Objektnamen und
Metadaten

Anfragemöglichkeiten
– „White Pages“: Zugriff mit Namen
– „Yellow Pages“: Zugriff mit Metadaten

LDAP (Lightweight Directory Access
Protocol) als Beispiel
© Dr. Wolfgang Wörndl, 07.05.2004
5
Technische Universität München, Informatik XI
Angewandte Informatik / Kooperative Systeme
LDAP Motivation

X.500
– ITU Empfehlung, ISO Standard
– Aufwendig und komplex


Benötigt alle 7 ISO/OSI-Schichten
Namen und Daten basieren auf ASN.1
– Zugriffsprotokoll (DAP)

LDAP
– Definiert Protokoll auf Basis von TCP/IP
– Vereinfachtes Datenmodell
– Verzeichnisdienst selbst wird nicht
festgelegt
© Dr. Wolfgang Wörndl, 07.05.2004
6
Technische Universität München, Informatik XI
Angewandte Informatik / Kooperative Systeme
Modelle

Informationsmodell
– Grundlegende Datentypen und
Basiseinheiten

Namensmodell
– Referenzierung der Objekte (DN)

Funktionales Modell
– Protokoll, Operationen

Sicherheitsmodell
– Rahmen, um den Zugriff auf das
Verzeichnis zu kontrollieren
© Dr. Wolfgang Wörndl, 07.05.2004
7
Technische Universität München, Informatik XI
Angewandte Informatik / Kooperative Systeme
X.500 Informationsmodell
Kontext
Eintrag
Alias
Attribut Attribut ...
© Dr. Wolfgang Wörndl, 07.05.2004
8
Technische Universität München, Informatik XI
Angewandte Informatik / Kooperative Systeme
LDAP Einträge


Einträge setzen sich aus Attributen
zusammen
Attribut objectClass
– Legt Attribut-Typen fest (z.B. „person“)
– Optionale und verpflichtende Attribute

Attribut
– Typ (z.B. bin, ces, cis, tel, dn)
– Ein oder mehrere Werte
– Einschränkungen möglich
© Dr. Wolfgang Wörndl, 07.05.2004
9
Technische Universität München, Informatik XI
Angewandte Informatik / Kooperative Systeme
LDAP Namensmodell (I)


Einträge hierarchisch als Directory
Information Tree (DIT) geordnet
Jeder Eintrag hat (eindeutigen)
Distinguished Name (DN)
– Alle RDN´s von der Wurzel aus (ohne
Wurzel selber)

Relative Distinguished Name (RDN)
– Besteht aus den Werten ein oder mehrerer
Attribute
– Bsp.: „cn=woerndl“
© Dr. Wolfgang Wörndl, 07.05.2004
10
Technische Universität München, Informatik XI
Angewandte Informatik / Kooperative Systeme
LDAP Namensmodell (II)



DN-Beispiel:
„cn=woerndl, ou=users, dc=in,
dc=tum, dc=de“
Alias-Namen möglich
Verteilung des DIT auf mehrere Server
möglich (z.B. Aufteilung nach
organisatorischen Einheiten)
© Dr. Wolfgang Wörndl, 07.05.2004
11
Technische Universität München, Informatik XI
Angewandte Informatik / Kooperative Systeme
DIT Beispiel
Directory
Root
c=DE
o = TUM
tel = 089-289-01
ou = Informatik
c=US
o=IBM
cn: John Smith
mail: [email protected]
o=IBM
ou = sales
cn = John
(alias)
cn: Ernst Mayr
mail: [email protected]
© Dr. Wolfgang Wörndl, 07.05.2004
12
Technische Universität München, Informatik XI
Angewandte Informatik / Kooperative Systeme
LDAP Client Server
application client
LDAP server
receive message
access directory
return reply
application
request
reply
LDAP client
TCP/IP
TCP/IP
request message
directory
reply message
© Dr. Wolfgang Wörndl, 07.05.2004
13
Technische Universität München, Informatik XI
Angewandte Informatik / Kooperative Systeme
LDAP Protokoll

Aufbau einer Verbindung
BindRequest
– TCP-Port 389

Authentifizierung
– Bind

OpRequest
Operationen
– ...
OpResponse
Abmelden
...

BindResponse
– Unbind
UnbindRequest
Client
© Dr. Wolfgang Wörndl, 07.05.2004
Server
14
Technische Universität München, Informatik XI
Angewandte Informatik / Kooperative Systeme
Operationen

Search: Einträge suchen
– Variante ohne/mit Timeout






Modify: Attribute modifizieren
Add: Neuen Eintrag ergänzen
Del: Eintrag löschen
ModifyRDN: Letzten Namensteil
löschen
CompareDN: Vergleichen
AbandonRequest: Abbruch Anfrage
© Dr. Wolfgang Wörndl, 07.05.2004
15
Technische Universität München, Informatik XI
Angewandte Informatik / Kooperative Systeme
Suchanfrage

ldap_search_s
–
–
–
–
–
–
–

LDAP *ld
char *base
int scope
char *filter
char *attrs[]
bool attrsonly
LDAPMessage *res
ldap_search_st (Timeout)
© Dr. Wolfgang Wörndl, 07.05.2004
16
Technische Universität München, Informatik XI
Angewandte Informatik / Kooperative Systeme
Filter



<attr> <typ> <value>
Wildcard *
Filtertypen
– „present“, „substring“
– equal, approx, greater, less

Kombination möglich
– and, or, not


Präfixnotation
Beispiel:
(&(cn=schmi*)(!(c=de))(mail~=abc))
© Dr. Wolfgang Wörndl, 07.05.2004
17
Technische Universität München, Informatik XI
Angewandte Informatik / Kooperative Systeme
Code Beispiel
#define SEARCHBASE "o=TUM,c=DE";
LDAP *ld;
char *User = NULL;
char *Passwd = NULL;
/* open a connection */
if ((ld = ldap_open("ldapserver.in.tum.de", LDAP_PORT)) == NULL)
exit(1);
/* authenticate as nobody */
if (ldap_simple_bind_s(ld, User, Passwd) != LDAP_SUCCESS) {
ldap_perror(ld, "ldap_simple_bind_s");
exit(1); }
/* search the database */
char searchfilter[] = "cn=Wörndl";
LDAPMessage *res;
if (ldap_search_s(ld, SEARCHBASE, LDAP_SCOPE_SUBTREE, searchfilter,
NULL, 0, res) != LDAP_SUCCESS) { ... }
...
/* close and free connection resources */
ldap_unbind(ld);
© Dr. Wolfgang Wörndl, 07.05.2004
18
Technische Universität München, Informatik XI
Angewandte Informatik / Kooperative Systeme
LDIF



LDAP Data Interchange Format (LDIF)
Zum Import und Export von Daten
Beispiel im Skript
© Dr. Wolfgang Wörndl, 07.05.2004
19
Technische Universität München, Informatik XI
Angewandte Informatik / Kooperative Systeme
Fazit



Verzeichnisdienst zentraler Baustein
verteilter Anwendungen
LDAP als Beispiel
Hohe Verbreitung
– (relativ einfache) Standards
– Zahlreiche Implementierungen, z.B.
www.openldap.org

Ausblick Montag 
– Web Services
– Remote Prozedure Call (RPC) Einleitung
© Dr. Wolfgang Wörndl, 07.05.2004
20
Herunterladen