Ziel
Highlight dieser Woche war die dreitägige Schulung zur Anpassung und Erweiterung der Identity Manager User Application (kurz UserApp) durch Herrn Dr. Wolfgang Schreiber von Novell. Ziel dieses Workshops war die Einführung in die Portlet-Entwicklung mit dem JBoss Application Server im Allgemeinen und die Integration eigener Portlets unter Verwendung UserApp-eigener Schnittstellen im Speziellen.
Teilnehmer
Oleg Britvin, Alessandro Dargenio, Hendrik Eggers, Peter Rygus, Patricia Meyer-Seidt, Christoph Singer, Frank Tröger, Krasimir Zhelev
Verlaufsprotkoll
Am Montag startete der Workshop mit einer Einführung in den Portlet-Standard JSR168, den Unterschied zwischen “portlet definitions” und “portlet registrations”, der Bedeutung von Import und Export sowie der Administration von Portlets und Pages. Nach einem kurzen Ausflug in die Anpassung von Themes wurde das grundsätzliche Vorgehen zur Integration eigener Portlets erläutert. Der technische Fokus veranlasste Frau Meyer-Seidt, Herrn Eggers sowie Herrn Dr. Rygus zum vorzeitigen Verlassen des Workshops. Die Bereiche Stylesheets, Localization und “Store and Retrieve” rundeten den ersten Tag ab.
Der Dienstag begann mit der Konfiguration der Arbeitsumgebung der übriggebliebenen Teilnehmer. Danach ging es mit Unterstützung von Herrn Schreiber an die praktische Umsetzung. Beispielhaft wurde eine Passwort-Änderung via LDAP implementiert. Am Mittwoch wurde das Wissen anhand dieser Aufgabe noch weiter vertieft. Es folgten weitere “Lego-Steine”, mit denen IDMone die geplanten Erweiterungen der UserApp umsetzten sollten. Leider gelang dies nur sehr eingeschränkt und falls doch, dann auf dem Fußweg. Das Tempo des Workshops hätte für die verbliebenen Teilnehmer durchaus höher sein können.
Ergebnisprotokoll
Nach Aussage von Wolfgang Schreiber existieren keine für IDMone verwendbaren internen Schnittstellen für den Zugriff auf das der UserApp zugrundliegende eDirectory. “Für IDMone verwendbar” bedeutet dabei, keine offiziellen und/oder dokumentierten Schnittstellen – von Änderungen bei zukünftigen Releases einmal ganz abgesehen. Lediglich folgende Variablen werden durch das UserApp-Portal bereitgestellt:
• Given Name
• Surname
• Email (funktioniert nicht)
• Fdn (LDAP-DN)
• User name
• Canonical fdn (DN in Novell-Schreibweise)
• Fdn (Login – nur mit “enable SSO”)
• fdn pwd (Klartext-Passwort – nur mit “enable SSO”)
D.h. wenn ein eigenentwickeltes Portlet auf ein anderes Attribut der eingeloggten Person zugreifen will, muß es eine eigene LDAP-Verbindung (verschiedene andere APIs stehen zwar zur Verfügung, aber prinzipiell läuft es auf das gleiche hinaus) aufbauen, ggf. mit den Credentials der eingeloggten Person. Dabei ist es aus Portletsicht dann auch egal ob es das der UserApp zugrundeliegende eDirectory ist oder ein beliebiges anderes Verzeichnis. Die im Vorfeld häufig diskutierte Unterscheidung zwischen Meta-Directory und Administrationsbaum kann in Bezug auf die Eigenentwicklung von Portlets nicht aufrecht erhalten werden.
Grundsätzlich kann man sagen, dass IDMone momentan Portlet-Entwicklung im Allgemeinen betreibt. Bis auf kleinere Anpassungen würden alle Beispiele also auch auf einem ganz anderen Application-Server laufen. Entscheidende Punkte konnten nicht geklärt werden. Die erwarteten UserApp-Aha-Erlebnisse blieben aus.
Offene Punkte
• keine verwendbaren APIs
→ Alle Zugriffe eigener Portlets auf das zugrundeliegende eDirectory erfolgen direkt via LDAP.
• kein Zugriff auf das Directory Abstraction Layer (kurz DAL)
→ Dies hat weitreichende Konsequenzen! Alle dort definierten Beziehungen, z.B. Employee-Manager-Beziehung zum Aufbau der Organisationsstruktur, können vom integrierten OrgChart-Modul verwendet werden. Eigene Portlets bleiben außen vor.
• UC1203 Affiliation auswählen
→ Herr Schreiber konnte keine Lösung bieten (fehlende Schnittstellen). Damit ist immernoch nicht geklärt, ob Personen zwischen Ihren verschiedenen Affiliations wechseln können.
• UC1402 Webmaster-Kennung beantragen
→ PDF-Erzeugung wurde nicht behandelt. Selbst der Download von dynamisch generierten Dateien konnte nicht gänzlich geklärt werden.