Communardo Software GmbH, Kleiststraße 10 a, D-01129 Dresden
+49 (0) 351/8 33 82-0

Ldap Schnittstelle mit Spring und iBatis

Die Realisierung einer Schnittstelle zu einem Ldap Respository ist nach wie vor mit einem erheblichen Implementierungsaufwand verbunden und gestaltet sich oft als sehr unflexibel z.B. gegenüber Änderungen am Ldap Schema.

Beispiel für ein Ldap Schema und einen Ldap Eintrag:

Im Folgenden wird eine Lösung vorgestellt, wie sich mit Hilfe eines Jdbc-Ldap Treibers und einem Persistenzframework relativ schnell eine flexible Ldap Schnittstelle realisieren lässt.

Kern der hier vorgestellten Lösung ist der Jdbc-Ldap Treiber. Dieser Treiber simuliert der Anwendung einen Jdbc konformen Treiber und erlaubt SQL ähnliche Anfragen bei der Abfrage des Ldap Servers. Basierend auf dem Treiber können anschließend Persistenzframeworks eingesetzt werden, welche den Treiber für die Abfragen nutzen und die zurückgegebenen Daten in Java Objekte übersetzen.

Verwendete Bibliotheken

Jdbc-Ldap Treiber 2.1 Download

iBatis Persistenzframework 2.3.4 Download

Springframework 2.5.6

Quellcode

Für das Auslesen der Nutzer aus dem Ldap Repository benötigen wir zunächst einmal eine Klasse die unseren Nutzer repräsentiert.

Als nächstes implementieren wir für das Auslesen der Nutzer ein Data Access Objekt (DAO).

Das Interface UserDao definiert nur eine Methode listAllUser. Diese gibt alle User als Liste zurück.

Die Klasse UserDaoImpl nutzt für den Zugriff auf die Nutzerdaten das iBatis Framework. Das Springframework bietet dafür Hilfsklassen an, wovon eine hier als Oberklasse verwendet wird (SqlMapClientDaoSupport).

Für die Konfiguration des iBatis Frameworks benötigen wir zwei Konfigurationsdateien (SqlMapConfig.xml und SqlMap.xml) in denen die SQL Statements und Objektmappings hinterlegt werden.

SqlMapConfig.xml

SqlMap.xml

Die Datei SqlMap.xml enthält die Definition des LDAP-SQL Statements mit dem die Nutzerdaten aus dem Ldap Repository ausgelesen werden und legt unsere User Klasse als Ergebnistyp fest.

Am Ende benötigen wir noch die Spring- und Datenbank Konfiguration um unsere Demo Applikation ausführen zu können.

Spring Application Context

database.properties

In der Datei database.properties werden für den Jdbc-Ldap Treiber die notwendigen Parameter hinterlegt.

Führt man nun die Anwendung aus und ruft die Methode listAllUser des UserDao aus wird eine Liste aller Nutzer des Ldap Repositories zurückgegeben.

Vorteile der Lösung:

  • Änderungen am Ldap Schema lassen sich einfach in den iBatis Konfigurationsdateien nachziehen
  • Einfaches Mapping der Ldap Einträge auf Java Objekte
  • SQL ähnliche Ldap Abfragen
  • Java Quellcode ist von dem zugrunde liegendem Ldap Repository unabhängig, d.h. ein Schwenk von einem Ldap Repository hin zu einer Datenbank wäre ohne großen Aufwand problemlos möglich

Nachteile:

Neben den aufgeführten Vorteilen der Lösung darf ein gravierender Nachteil der hier aufgezeigten Lösung aber nicht unerwähnt bleiben. Nach genauerem Test des hier verwendeten Jdbc-Ldap Treibers erwies er sich leider nicht als fehlerfrei. Base64 kodierte Ldap Attribute werden von dem hier verwendetem Treiber nicht korrekt dekodiert so dass er sich leider nicht für einen produktiven Einsatz verwenden lies.

Kompletter Quellcode der Demoanwendung: Demo Quellcode

Kommentar hinterlassen


Pin It on Pinterest