Architektur/Methoden 27.10.2010 - 13:11
Schlagwörter: LDAP
Nicht immer ist es einfach, Server-Anwendungen auf LDAP-Basis so umzusetzen, dass das eigentlich asynchron arbeitende Protokoll tatsächlich effizient arbeitet. Eine Erweiterung namens "Proxied Authorization Control" mag helfen, und Java-Entwickler erhalten seit letztem Jahr mit dem LDAP SDK der Firma Unbound ID eine einfach einzusetzende API.
Directory-Services mit LDAP kommen ziemlich häufig beim Speichern von Benutzerdaten zum Einsatz. Dadurch sind viele Entwickler mit der Aufgabe konfrontiert, Code zu schreiben, der auf die LDAP-Server zugreift. Hierfür gibt es einige APIs, die ihnen das Leben erleichtern. Zwar ist LDAP als asynchrones Protokoll sehr effizient, bedauerlicherweise gibt es jedoch einige Stolpersteine für Entwickler und in deren Folge nicht selten eine auf Benutzerdaten zugreifende Applikation, die schlecht skaliert oder schlichtweg viel zu langsam arbeitet.
In der "Kennzeichen S(icherheit)"-Kolumne setzen sich die Analysten des Unternehmens KuppingerCole mit Themen wie Identity- und Access Management sowie IT-Governance aus Softwareentwicklungsperspektive auseinander. Es geht vor allem um die Frage, wie man Sicherheit für Anwendungen standardisieren und externalisieren kann, um Sicherheit und Nachvollziehbarkeit bei optimiertem Entwicklungsaufwand zu erreichen.
Wenn schon von mehreren Operationen auf einer Verbindung die Rede ist, führt man diese am liebsten gleichzeitig aus. Da LDAP ein asynchrones Protokoll ist, ist es ohne weiteres möglich, mehrere Anfragen zu senden und die Resultate asynchron abzuarbeiten, wann immer sie ankommen. Gerade im Hinblick auf Multithreaded-Applikationen ist das sinnvoll. Auch bei Applikationen, die Abfragen über eine Anzahl von Nutzern ausführen müssen, kann das einen enormen Geschwindigkeitsvorteil bringen.
Oftmals ist es jedoch notwendig, LDAP-Operationen mit unterschiedlichen Befugnissen auszuführen, beispielsweise Operationen von Benutzern, die sich bei der Applikation angemeldet haben. Das wird oftmals so programmiert, dass bei jeder Anmeldung eines Benutzers eine neue Verbindung zum LDAP-Server hergestellt wird und danach die Operationen des Benutzers über diese Verbindung gesendet werden. Es gibt jedoch eine durch den RFC 4370 spezifizierte Erweiterung namens "Proxied Authorization Control", mit der sich auf einer Verbindung unterschiedliche Operationen unter den Credentials unterschiedlicher Benutzer ausführen lassen – und das natürlich asynchron. Voraussetzung dafür ist die Konfiguration eines bestimmten System-Accounts, der das darf, – und eines LDAP-Servers, der das unterstützt. Das kann fast jeder LDAP-Server – mit Ausnahme von Microsofts Active Directory, das leider bei dieser Neuerung im LDAP-Bereich nicht mitgehalten hat.
Nun ist es zwar einfach, über bessere Praktiken bei der Entwicklung von LDAP-Code zu schreiben, letztlich muss es aber auch APIs geben, die es erlauben, die Praktiken leicht umzusetzen. Hierin sah es in Vergangenheit nicht immer einfach aus. Das ist aber zumindest für Java-Entwickler spätestens durch die Freigabe des kostenlos erhältlichen LDAP SDK der Firma Unbound ID wesentlich einfacher geworden, eine erfrischende Neuerung, wesentlich effizienter und einfacher einzusetzen als gängige APIs wie JNDI oder die alte Netscape LDAP API, deren Entwicklung bereits vor vielen Jahren eingestellt wurde, trotzdem aber immer noch weite Verbreitung findet. Das LDAP SDK vereinfacht die Umsetzung der in diesem Artikel kurz umschriebenen Praktiken.
(ane)
Felix Gaehtgens
ist Senior Analyst bei Kuppinger Cole, einem auf Identity Management, GRC, Cloud Computing und verwandten Themen spezialisierten Analystenunternehmen.
Themenforum: Java