Lightweight Directory Access ProtokollSuchen in LDAP • Ziel Suchanfrage: Auffinden von Einträgen,...

25
LDAP Lightweight Directory Access Protokoll Access Protokoll Desanka Bogicevic 1121621 Michael Wenig 1220567 Rupert Eisl 1220225

Transcript of Lightweight Directory Access ProtokollSuchen in LDAP • Ziel Suchanfrage: Auffinden von Einträgen,...

Page 1: Lightweight Directory Access ProtokollSuchen in LDAP • Ziel Suchanfrage: Auffinden von Einträgen, die bestimmte Kriterien erfüllen • Suche benötigt zunächst DN des Eintrages,

LDAPLightweight Directory

Access ProtokollAccess Protokoll

Desanka Bogicevic 1121621

Michael Wenig 1220567

Rupert Eisl 1220225

Page 2: Lightweight Directory Access ProtokollSuchen in LDAP • Ziel Suchanfrage: Auffinden von Einträgen, die bestimmte Kriterien erfüllen • Suche benötigt zunächst DN des Eintrages,

LDAP

• Was ist LDAP?

• Was sind Verzeichnisdienste?• Was sind Verzeichnisdienste?

• Was ist ein Verzeichnis?

Page 3: Lightweight Directory Access ProtokollSuchen in LDAP • Ziel Suchanfrage: Auffinden von Einträgen, die bestimmte Kriterien erfüllen • Suche benötigt zunächst DN des Eintrages,

Geschichte

http://directory.apache.org/apacheds/basic-ug/1.2-some-background.html

Page 4: Lightweight Directory Access ProtokollSuchen in LDAP • Ziel Suchanfrage: Auffinden von Einträgen, die bestimmte Kriterien erfüllen • Suche benötigt zunächst DN des Eintrages,

Vorteile von LDAPim Vergleich zur relationalen SQL Datenbank

• Optimiert auf Lesen

• Erweiterte Suchfunktionen

• Erweiterbare Datenstrukturen

• Standardkompatibilität

• Verteilte Daten

Page 5: Lightweight Directory Access ProtokollSuchen in LDAP • Ziel Suchanfrage: Auffinden von Einträgen, die bestimmte Kriterien erfüllen • Suche benötigt zunächst DN des Eintrages,

Struktur von Verzeichnissen

Organization (o) orDomain

Component (dc)

dc=unisalzburg, dc=at

Person Node (cn)

Organization Unit (ou)

ou=studenten

cn=Desanka Bogicevic

cn=Michael Wenig

ou=professoren

cn=Rupert Eisl

Page 6: Lightweight Directory Access ProtokollSuchen in LDAP • Ziel Suchanfrage: Auffinden von Einträgen, die bestimmte Kriterien erfüllen • Suche benötigt zunächst DN des Eintrages,

Namen

• RDN:

cn=Rupert Eisl

dc=unisalzburg, dc=at

• DN:

cn=Rupert Eisl, ou=professoren, dc=unisalzburg, dc=at

ou=studenten

cn=Desanka Bogicevic

cn=Michael Wenig

ou=professoren

cn=Rupert Eisl

Page 7: Lightweight Directory Access ProtokollSuchen in LDAP • Ziel Suchanfrage: Auffinden von Einträgen, die bestimmte Kriterien erfüllen • Suche benötigt zunächst DN des Eintrages,

OIDs (Object Identifiers)

Verwaltung1.2.34.50

Dienste.1

Verzeichnisdienst.1

Kommunikation.2

Sicherheit.3

Parteienvertreter.2

Notar.1

Rechtsanwalt.2

Page 8: Lightweight Directory Access ProtokollSuchen in LDAP • Ziel Suchanfrage: Auffinden von Einträgen, die bestimmte Kriterien erfüllen • Suche benötigt zunächst DN des Eintrages,

Das Schema

• Speicherung von Daten in einem Verzeichnis in Form von Einträgen

• Schema eines Verzeichnisses legt fest, wie gültige Einträge aufgebaut sindaufgebaut sind

• LDAP-Schema besteht aus folgenden Bestandteilen:

a) Attribute (Attributes)b) Objektklassen(Object Classes)c) Syntaxregeln(Syntaxes)d) Vergleichsregeln(Matching

Rules)

Page 9: Lightweight Directory Access ProtokollSuchen in LDAP • Ziel Suchanfrage: Auffinden von Einträgen, die bestimmte Kriterien erfüllen • Suche benötigt zunächst DN des Eintrages,

Attribute

• Bildung von Einträgen in einem Verzeichnis aus Paaren von Attributen und Werten

• Beschreibung der erlaubten Eigenschaften von Einträgen

• Jedes Attribut besitzt Name und OID• Weitere Informationen, z.B. • Weitere Informationen, z.B.

Beschreibung des Attributes

• Betriebsattribute: für interne Verwaltungszwecke

• Beispiel: Zeitpunkt des Anlegens u. Der letzten Änderung eines Eintrags

• Werden normalerweise nur vom Server angelegt

Page 10: Lightweight Directory Access ProtokollSuchen in LDAP • Ziel Suchanfrage: Auffinden von Einträgen, die bestimmte Kriterien erfüllen • Suche benötigt zunächst DN des Eintrages,

Objektklassen

• Legen benötigte(<<must>>) und erlaubte (<<may>) Attribute eines Verzeichnis-Eintrags fest

• Jede Objektklasse im Schema ist von anderer Objektklasse abgeleitet

• Ausnahme: Oberklasse top• Jeder Eintrag vom Typ einer • Jeder Eintrag vom Typ einer

Unterklasse ist auch Typ der Oberklasse!

• --> Kann erlaubte Attribute des Obertyps implementieren

• --> Muss benötigte Attribute des Obertyps implementieren

• Objektklassen können weiter unterteilt werden

Page 11: Lightweight Directory Access ProtokollSuchen in LDAP • Ziel Suchanfrage: Auffinden von Einträgen, die bestimmte Kriterien erfüllen • Suche benötigt zunächst DN des Eintrages,

Objektklassen Unterteilung

• Es gibt drei Arten von Objektklassen:

a. Abstrakte Klassenb. Strukturelle Klassenc. Hilfsklassen

• Einträge können nicht aus • Einträge können nicht aus abstrakten Klassen gebildet werden

• Andere Klassen werden von abstrakten Klassen abgeleitet

• Strukturelle Klassen dienen zur Erzeugung konkreter Einträge

• Hilfsklassen werden als "Schnittstelle" für unterschiedliche Objektklassen verwendet

Page 12: Lightweight Directory Access ProtokollSuchen in LDAP • Ziel Suchanfrage: Auffinden von Einträgen, die bestimmte Kriterien erfüllen • Suche benötigt zunächst DN des Eintrages,

Syntaxregeln

• Syntax legt fest, welche Werte ein Attribut annehmen darf

• Analogie: Regeln für Datentypen in Java• Beispiel: Regeln für Strings, Zahlen etc.• Spezifische Syntaxregeln für Zertifikate,

Telefonnummern usw.• Standardmäßig besitzt jedes Attribut • Standardmäßig besitzt jedes Attribut

eine Syntax• Sinn von Syntaxregeln:a. Client erfährt, welche Werte er bei

Anfrage erwarten kannb. Regeln wichtig bei Vergleichsregeln des

Schemas

Page 13: Lightweight Directory Access ProtokollSuchen in LDAP • Ziel Suchanfrage: Auffinden von Einträgen, die bestimmte Kriterien erfüllen • Suche benötigt zunächst DN des Eintrages,

Vergleichsregeln

• Vergleichsregeln legen fest, wie Attribute verglichen werden

• Drei Kategorien: equality, ordering und substring

• Equality: Sind zwei Attribute gleich?• Ordering: Ist ein Attribut größer/kleiner

als das andere?• Substring: Ist ein Attributwert Teilstring • Substring: Ist ein Attributwert Teilstring

eines anderen Attributwerts?• Sinn von Vergleichsregeln:

Attributvergleiche können trotz gleicher Syntax unterschiedlich interpretiert werden

• Beispiel: Personennamen und Passwörter• --> Unterscheidung Groß-/Kleinschreibung

bei Passwörtern zwingend erforderlich!• Aber: nicht unbedingt bei Personennamen

Page 14: Lightweight Directory Access ProtokollSuchen in LDAP • Ziel Suchanfrage: Auffinden von Einträgen, die bestimmte Kriterien erfüllen • Suche benötigt zunächst DN des Eintrages,

Suchen in LDAP

• Ziel Suchanfrage: Auffinden von Einträgen, die bestimmte Kriterien erfüllen

• Suche benötigt zunächst DN des Eintrages, von dem aus die Suche erfolgen soll

• --> Suche im Teilbaum ab diesem Eintrag

• --> Suche im Teilbaum ab diesem Eintrag

• Ausmaß der durchsuchten Knoten wird durch Scope-Parameter eingeschränkt

• Drei mögliche Werte für Scope:a. BaseObject: nur die Base selbstb. SingleLevel: alle Kinder der Basec. WholeSubtree: Durchsuchen des

gesamten Teilbaums

Page 15: Lightweight Directory Access ProtokollSuchen in LDAP • Ziel Suchanfrage: Auffinden von Einträgen, die bestimmte Kriterien erfüllen • Suche benötigt zunächst DN des Eintrages,

Suchfilter

• Jede Suchanfrage benötigt sog. Filterausdruck

• Filterausdruck gibt Kriterium an, das auf Attributwerten basiert

• Erfassen aller Einträge, die

!(a) → (!(a))

(x) & (y) & (z) • Erfassen aller Einträge, die

das Kriterium erfüllen• Filterausdruck besteht aus

einer Komposition von Bedingungen und den boolschen Operatoren AND, OR und NOT

• Ausdruck in Präfix-Notation

(x) & (y) & (z) → (& (x) (y) (z))

(!(x)) & ((y) | (z)) → (& ((!a)) (| (b) (c))

Page 16: Lightweight Directory Access ProtokollSuchen in LDAP • Ziel Suchanfrage: Auffinden von Einträgen, die bestimmte Kriterien erfüllen • Suche benötigt zunächst DN des Eintrages,

Suchfilter Operatoren

Filter Operator Beispiel Attribute

Vorhandensein =* (email=*) Attribut kommt mindestens einmal vor

Gleichheit = (sn=Wenig) Attribute hat exakt Gleichheit = (sn=Wenig) Attribute hat exakt diesen Wert

Teil-String = (sn=We*) Attribut passt auf das Muster

Ordnung <=, >= (sn>=W) Attribut entspricht der Ordnung

Ähnlichkeit ~= (sn~=Weinig) Attribut ähnelt dem Argument

Page 17: Lightweight Directory Access ProtokollSuchen in LDAP • Ziel Suchanfrage: Auffinden von Einträgen, die bestimmte Kriterien erfüllen • Suche benötigt zunächst DN des Eintrages,

LDAP-OperationenName Funktion

Bind Beginn einer Sitzung

Unbind Ende einer Sitzung

Search Suche

Add Einfügen eines EintragsAdd Einfügen eines Eintrags

Delete Löschen eines Eintrags

Modify Ändern von Attributen eines Eintrags

Modify DN Umbenennen/Verschieben eines Eintrags

Compare Test eines Attributwerts eines Eintrags

Abandon Abbrechen einer Operation

Extended Aufruf serverspezifischer Operationen

Page 18: Lightweight Directory Access ProtokollSuchen in LDAP • Ziel Suchanfrage: Auffinden von Einträgen, die bestimmte Kriterien erfüllen • Suche benötigt zunächst DN des Eintrages,

Server & ClientServer & Clientauf einem Linux Rechnersystem

Page 19: Lightweight Directory Access ProtokollSuchen in LDAP • Ziel Suchanfrage: Auffinden von Einträgen, die bestimmte Kriterien erfüllen • Suche benötigt zunächst DN des Eintrages,

Software & Installation

• Ubuntu 12.04 LTS

• OpenLDAP v2.4.38

– ./configure

– make depend– make depend

– make

– sudo make install

• Apache Directory Studio 2.0.0

– Download & Execute

Page 20: Lightweight Directory Access ProtokollSuchen in LDAP • Ziel Suchanfrage: Auffinden von Einträgen, die bestimmte Kriterien erfüllen • Suche benötigt zunächst DN des Eintrages,

Server Konfiguration - slapd.config

• Include /usr/lo…..ap/schema/core.schema….Include /usr/lo…..ap/schema/java.schema

• Database bdbsuffix "dc=example,dc=com" Database bdbsuffix "dc=example,dc=com" rootdn "cn=Manager,dc=example,dc=com" rootpw {SSHA}ObQkxj1JGPaaPNbByq6Wef3GZlrbWoGu

• access to * by dn.exact="cn=Manager,dc=example,dc=com" writeby * read

Page 21: Lightweight Directory Access ProtokollSuchen in LDAP • Ziel Suchanfrage: Auffinden von Einträgen, die bestimmte Kriterien erfüllen • Suche benötigt zunächst DN des Eintrages,

Server:

• Boot:

– /usr/local/libexec/slapd

• Shutdown:• Shutdown:

– sudo kill -INT `cat /usr/local/var/run/slapd.pid`

Page 22: Lightweight Directory Access ProtokollSuchen in LDAP • Ziel Suchanfrage: Auffinden von Einträgen, die bestimmte Kriterien erfüllen • Suche benötigt zunächst DN des Eintrages,

Hierarchie

Page 23: Lightweight Directory Access ProtokollSuchen in LDAP • Ziel Suchanfrage: Auffinden von Einträgen, die bestimmte Kriterien erfüllen • Suche benötigt zunächst DN des Eintrages,

Hierarchie

suffix

organizational unit

person

Page 24: Lightweight Directory Access ProtokollSuchen in LDAP • Ziel Suchanfrage: Auffinden von Einträgen, die bestimmte Kriterien erfüllen • Suche benötigt zunächst DN des Eintrages,

VIDEOVIDEO

Page 25: Lightweight Directory Access ProtokollSuchen in LDAP • Ziel Suchanfrage: Auffinden von Einträgen, die bestimmte Kriterien erfüllen • Suche benötigt zunächst DN des Eintrages,

Quellen

• Stefan Zörner: „LDAP für Java-Entwickler Einstieg und Integration“ entwickler.press, Frankfurt am Main 2013, 978-3-86802-094-6

• http://www.mitlinx.de• http://www.galileocomputing.de• http://www.galileocomputing.de• http://www.bsi.bund.de• http://www.ubuntu.com/• https://www.virtualbox.org/• http://directory.apache.org/studio/• http://www.openldap.org/• AVS Video Editor