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