inchorus LDAP Plugin Dokumentation

Author: Thomas Gertler
Publication Date: 2021-12-13

1 Einführung

Das LDAP-Plugin bietet Ihnen die wesentlichsten LDAP Funktionen, wie das Suchen von Objekten im Verzeichnis und das Ändern von dessen Attributen.

Folgende Funktionalitäten stehen zur Verfügung:

  • Verbindungsaufbau mit der Möglichkeiten der SSL Verschlüsselung (LDAPS)

  • Suche im Verzeichnis

  • Konstruktion von komplexen Such-Filtern

  • Ändern und Löschen von LDAP Attributen

  • Setzen und Ändern von Passwörtern

2 Wie wird das Plugin verwendet?

Die wesentlichen Klassen, die die Operationen im LDAP Verzeichnis bereitstellen, sind LDAPDirectory zum Verwalten der Verbindung, LDAPDirectorySearch zum Suchen von Objekten im Verzeichnis und LDAPDirectoryModify zum Ändern von Attributen der Objekte im Verzeichnis. Als Daten-Strukturen stehen die Klassen LDAPAttribute, LDAPObject, LDAPFilter und LDAPFilterGroup zur Verfügung. Im Folgenden wird die grundlegende Verwendung dieser Klassen beschrieben, die Dokumentation der einzelnen Klassen finden Sie in der API Dokumentation.

Plugin einbinden

Öffnen Sie die Datei pom.xml Ihres inchorus Gadget Projektes und ergänzen Sie folgende Zeilen im Abschnitt "dependencies":

<dependency>
	<groupId>de.guh.plugin</groupId>
	<artifactId>inchorus-ldap-plugin</artifactId>
	<version>2.0.2</version>
</dependency>

Verbindungsaufbau

Die Verbindung zum LDAP Server wird beim Instanziieren eines LDAPDirectory Objekts aufgebaut:

LDAPDirectory ldapDir = new LDAPDirectory(
	"ldap.guh-systems.de",
	636,
	"cn=TestBenutzer,ou=User,o=GUH",
	"passwort!",
	true,
	"c:\\pfad\\zum\\.keystore",
	"changeit",
	true
);

// Operationen auf dem Verzeichnis...

ldapDir.closeConnection();

Mit dieser Instanziierung wird die Verbindung zum LDAP Server ldap.guh-systems.de am Port 636 für den User mit dem DN (Distinguished Name) cn=TestBenutzer,ou=User,o=GUH und dem Passwort passwort! hergestellt. Das erste true gibt an, dass die Verbindung mit SSL aufgebaut werden soll, der Pfad gibt den Pfad zum Keystore an und changeit ist das dazugehörige Passwort. Der letzte Boolean in der Parameterliste gibt an, ob ein Keystore automatisch erzeugt werden soll, wenn er nicht am angegeben Pfad existiert. Damit die .keystore Datei erzeugt werden kann, muss der angegebene Pfad existieren.

Nach dem Ausführen der benötigten Operationen über den LDAP Server, sollte die Verbindung mit einem Aufruf von closeConnection() geschlossen werden. Die einzelnen Parameter und alternative Initialisierungsvarianten finden Sie in der API Dokumentation.

Suchen und Filtern

Suchen von Objekten mit Filtern geschieht über die Klasse LDAPDirectorySearch:

LDAPObject objectUser = new LDAPObject("user");
LDAPAttribute attributeName = new LDAPAttribute("name");
objectUser.addAttribute(attributeName);

LDAPFilter filterName = new LDAPFilter(
	attributeName,
	LDAPFilter.expression_EQUAL,
	"TestBenutzer"
);

LDAPDirectorySearch search = new LDAPDirectorySearch(
	ldapDir,
	objectUser,
	LDAPScope.SUB,
	"O=GUH"
);

search.addLDAPFilter(filterName);

XML xmlResult = search.getXML("users", "user");

Als erstes wird das LDAPObject definiert, nach dem gesucht werden soll. In diesem Fall hat es die Klasse user, die anhand des Attributes name gefiltert werden soll. Dafür wird dem Objekt ein LDAPAttribute mit dem Namen name zugewiesen und ein LDAPFilter wird erstellt, der nach dem Attribut name filtert, dessen Wert "TestBenutzer" entsprechen soll. Als nächstes kann das LDAPDirectorySearch Objekt erstellt werden, welches das Verzeichnis, in dem gesucht werden soll, und das Objekt übergeben bekommt. Außerdem wird der Scope und die Basis für die Suche definiert. Anschließend kann der Filter der Suche hinzugefügt und die Suche ausgeführt werden. In diesem Fall wird das Ergebnis der Suche als XML Objekt angefordert, das als Wurzelknoten <users> besitzt und als Kindknoten <user>, welche die Attribute der Suchergebnisse als weitere Knoten enthalten.

Mit getResultCode() lässt sich im Anschluss an die Suche der Statuscode abfragen. Statt die Ergebnisse als XML zu erhalten, können einzelne Werte des Suchergebnisses mit getArray(name) als String Array abgefragt werden oder mit getString(name), wenn nur ein einzelnes Ergebnis erwartet wird. Wird "objectdn" als name eingetragen, erhält man die Objekt-DNs als Ergebnis, wählt man als name einen Attributnamen, bekommt man den Wert dieses Attributs.

Mit LDAPFilterGroup können Filtergruppen erstellt werden, die eine Kombination (AND/OR) aus mehrere Filtern oder weiteren Filtergruppen darstellen und zur Suche hinzugefügt werden können. Genauere Informationen dazu finden Sie in den Beispielen und der API Dokumentation.

Modifizieren von Attributen

Das Modifizieren von Attributen der Objekte im Verzeichnis geschieht über die Klasse LDAPDirectoryModify:

LDAPObject objectUser = new LDAPObject("user", "cn=TestBenutzer,ou=User,o=GUH");
LDAPAttribute attributeName = new LDAPAttribute("name");

LDAPDirectoryModify modify = new LDAPDirectoryModify(ldapDir, objectUser);

Boolean success = modify.modifyAttribute(attributeName, "NeuerName", false);

Als erstes wird das Objekt definiert, welches geändert werden soll. Wichtig ist hier, dass der eindeutige DN angegeben wird, damit das betroffene Objekt im Verzeichnis gefunden werden kann. Danach wird das Attribut definiert, welches geändert werden soll, in diesem Fall das Attribut name. Das LDAPDirectoryModify Objekt wird mit dem betroffenen Verzeichnis und Objekt erzeugt, um darauf die Modifikation auszuführen. Im letzten Schritt wird das Attribut im angegebenen Objekt (TestBenutzer) auf den neuen Wert NeuerName gesetzt. Der Rückgabewert ist ein Indikator, ob das Umbenennen erfolgreich war. Das letzte Boolean-Attribut der Methode modifyAttribute() gibt an, ob eine auxiliary class, die dem neuen Attribut zugeordnet ist, automatisch dem Objekt hinzugefügt werden soll, fall dieses dort noch nicht existiert. In diesem Beispiel hat das Attribut keine auxiliary class, daher kann der Wert auf false gesetzt werden.

Auf die gleich Weise werden die Methoden zum Löschen von Attributen deleteAttribute(attr) und zum Setzen und Ändern von Passwörtern setPassword("newPassword") bzw. modifyPassword("oldPassword", "newPassword") verwendet.

3 Weitere Informationen

Nähere Informationen zu den Klassen und Methoden finden sie in der API Dokumentation.

Beispiele finden Sie im Ordner Beispiele.

Bei Fragen und Anregungen nutzen Sie unser inchorus Forum.

Dieses Dokument erhalten sie hier auch als PDF.

4 Ihr Kontakt

G+H Systems GmbH

Professionell, effizient und zuverlässig.

Ludwigstraße 8

63067 Offenbach am Main

Deutschland

Telefon: +49 (0) 69 85 00 02 - 0

Fax: +49 (0) 69 85 00 02 - 51

Email: info@guh-systems.de

Web: www.guh-systems.de

5 Rechtliche Hinweise

Die G+H Systems leistet keinerlei Gewähr bezüglich des Inhaltes oder Gebrauchs dieser Dokumentation. Insbesondere werden keine ausdrücklichen oder stillschweigenden Gewährleistungen hinsichtlich der handelsüblichen Qualität oder Eignung für einen bestimmten Zweck übernommen. Die G+H Systems behält sich weiterhin das Recht vor, diese Dokumentation zu revidieren und ihren Inhalt jederzeit und ohne vorherige Ankündigung zu ändern.

Des Weiteren übernimmt die G+H Systems für Software keinerlei Haftung und schließt insbesondere jegliche ausdrücklichen oder impliziten Gewährleistungsansprüche bezüglich der Marktfähigkeit oder der Eignung für einen bestimmten Zweck aus. Außerdem behält sich die G+H Systems das Recht vor, G+H Software ganz oder teilweise jederzeit inhaltlich zu ändern, ohne dass für die G+H Systems die Verpflichtung entsteht, Personen oder Organisationen von diesen Überarbeitungen oder Änderungen in Kenntnis zu setzen.

Copyright © inchorus ist ein Produkt der G+H Systems GmbH

Ohne ausdrückliche, schriftliche Genehmigung des Herausgebers darf kein Teil dieser Veröffentlichung reproduziert, fotokopiert, übertragen oder in einem Speichersystem verarbeitet werden.

Print this page