RRZE – Projekte & Prozesse (P&P)

Das Blog der RRZE Stabsstelle "Projekte & Prozesse"


Refactoring WAID

WAID is build-up of various, separately developed, components which are combined in a monolithic application. The application is structured and deployed as a single web application archive(war). The above mentioned components are of different granularity and perform tasks related to business logic, data fetching, presentation, transformation and so on. Refer to Fig.1 for a simplified diagram:

Architektur (Komponenten) von WAID

Splitting the application into small parts during the development cycle proved to be more than useful for code maintenance and rapid on-demand changes. Similar component-based approach is now proposed for the runtime structure of the application. The idea is to break up the application into smaller business-logic-based parts which can be easily exchanged during runtime without or with insignificant downtimes. Downtimes should occur only at redeployment of components which are directly related to user sessions. The exchange of all other underlying components should happen transparent to the users of the application. A simplified version of WAID’s current runtime architectural design can be seen on Fig.2. The application is started by deploying the web application archive into a JBoss AS. The JBoss server initializes a Spring (springframework) context, which is depicted by orange on Fig.2. The Spring framework is responsible for linking together the different runtime components. The most important component is idmone-core. This module is itself a Spring project which is developed separately and is responsible for the back-end functionality related to interacting with MetaDirectory. This project is only configured and used within the web application. Security is provided by the spring-security module, which is not shown on the Fig.2 but it closely couples with the Tapestry module, so these are represented by a single block. The Tapestry module is responsible for rendering the web page templates. Other required components are added within the Spring context to provide additional functionality. The pdf-generator module is shown on Fig.2 as an example of these type of components. The current implementation is focused on combining different projects into a single web application. The Spring framework provides the necessary flexibility and configuration options. The newly proposed component paradigm does the same but at runtime. Components are bound together when requested and not at initialization time. This allows for changing the underlying components implementation without re-deployment of the dependent applications. This would also allow for a better load distribution because different components can run on different machines. Generating pdf files, for example, can consume quite a lot of CPU cycles and memory. Distributing components to different machines can provide better performance but at the same time can make components reusable. Thus it would be possible to share a runtime component between applications – for example, pdf generation utilities can be used by several applications. An additional advantage is that in case of a bug fix only a single instance of a component is to be replaced. This would clearly prevent repackaging all applications that use it.

Struktur von WAID vor Refactoring

At the same time the proposed paradigm enables a major conceptual shift to Service Oriented Architecture(SOA). To put it short, the idea is instead of combining smaller projects into bigger applications, to start building up composite applications. These will consist of different runtime-bound services. The services will provide distributed business logic instead of packaged functionality. Once a certain degree of “service orientation” is achieved it would be possible to start using enterprise integration design patterns to accommodate better communication between the different systems involved. A proof of concept has been developed and a schematic view of the proposed solution is shown on Fig.3.

WAID Struktur nach Refactoring

At first glance there is not much of a difference. However, the yellow components are Enterprise Java Beans(EJBs) and run outside the web application. These can be looked up by the web application and used. EJBs have two type of interfaces local and remote. On the figure the local interface is depicted in pale blue and is the one connected with WAID. Technically this type of interface is used in the case when both modules run within the same application server, thus enabling data exchange with better performance. Although idmone-core exposes its functionality in the form of EJBs these are still initialized by a Spring context, depicted with green on Fig.3. Several developers share the opinion that Spring and JEE are excluding and competing standards but in our case these seem to form a symbiosis.

At the same time a proposal is evaluated to deploy the application as an exploded war file to accommodate on-the-fly changes. This proposal is done for the purpose of fixing typos, translation errors and similar. The same technique was tested, as a proof of concept, for implementing complex changes such as registering or unregistering existent Tapestry components on a page. So far , the concept seems useful but raises questions related to stability, reliability and can lead to inconsistencies if not thoroughly thought through. By inconsistencies are meant different versions of code on the productive system and the one tagged in the repository. In emergency cases there exists the possibility that updates are introduced in the productive system and these are later not propagated into the source code. In general managing a single web application archive seems to be a better way of handling tagging. Thus a system restore can be done by copying a single file instead of hundreds of small ones. This operation is also much more time efficient in the above mentioned case. At the time being, deploying WAID as an exploded archive is not considered harmful. However, unless the above mentioned issues are properly address and tested, changes of files under the exploded directory is granted only in exceptional situations.

Eine neue Struktur für WAID

WAID besteht aus verschiedenen, unabhängig entwickelten Komponenten, zusammengefügt zu einer monolithischen Anwendung. Diese Anwendung wird als einfaches web application archive (war) strukturiert und entwickelt. Die oben genannten Komponenten haben unterschiedliche Granularität und erfüllen Aufgaben im Zusammenhang mit Business Logic, Datensammlung, Präsentation, Transformation und so weiter. Abb.1 zeigt ein vereinfachtes Diagramm:

Architektur (Komponenten) von WAID

Die Aufteilung der Anwendung in kleinere Teile erwies sich als vorrteilhaft für Codepflege und schnell gewünschte Änderungen. Eine ähnliche komponentenbasierte Herangehensweise bietet sich nun für die Laufzeitstruktur der Anwendung an. Die Idee besteht darin, die Anwendung in kleinere, auf Business Logic basierende Einheiten aufzubrechen, die einen einfachen Austausch während der Laufzeit erlauben, entweder ganz ohne, oder zumindest mit vernachlässigbaren Ausfallzeiten. Ausfälle sollten nur bei einer Umstrukturierung von Komponenten stattfinden, die direkt mit den Nutzer-Arbeitssitzungen zu tun haben. Änderungen an allen anderen zugrundeliegenden Komponenten sollten so geschehen, dass sie für die Nutzer der Anwendung transparent sind. Eine vereinfachte Version der aktuellen WAID Laufzeitarchitektur ist in Abb.2 dargestellt. Die Anwendung wird gestarted, indem das Webanwendungsarchiv in eine JBoss AS übertragen wird. Der JBoss Server initialisiert einen Spring Kontext, der in Abb.2 orange dargestellt ist. Das Spring framework ist dafür verantwortlich, die verschiedenen Laufzeitkomponenten zu verbinden. Die wichtigste Komponente ist idmone-core. Das Modul ist selbst ein unabhängig entwickeltes Spring Projekt, verantwortlich für die Back-end Funktionalität im Zusammenhang mit der MetaDirectory-Interaktion. Das Projekt wird nur innerhalb der Webanwendung konfiguriert und genutzt. Sicherheit wird durch ein Spring Security Modul gewährleistet. Dieses Modul ist in Abb.2 nicht gezeigt, es ist jedoch eng an das Tapestry Modul gekoppelt, so dass beide durch einen einzelnen Block dargestellt werden. Das Tapestry Modul ist für das Rendern der Web page templates verantwortlich. Andere benötigte Module werden innerhalb des Spring Kontextes hinzugefügt, um zusätzliche Funktionalität bereitzustellen. Das pdf-Generator Modul in Abb.2 dient als Beispiel für diese Art Komponente. Der Fokus der momentanen Implementierung liegt darauf, die verschiedenen Projekte zu einer einzigen Webanwendung zusammenzubringen. Das Spring Framework bietet die dafür nötige Flexibilität und die entsprechenden Konfigurationsmöglichkeiten. Das kürzlich vorgeschlagene Komponentenmodell erfüllt die gleiche Aufgabe auf der Laufzeitebene. Komponenten werden erst auf Anfrage zusammengefasst, und nicht bereits bei der Initialisierung. Dies erlaubt es, die zugrundeliegenden Komponenten auszutauschen, ohne alle abhängigen Komponenten erneut übertragen zu müssen. Es macht zudem eine bessere Lastverteilung möglich, da die jeweiligen Komponenten auf unterschiedlichen Servern laufen können. PDF-Dateien zu generieren, beispielsweise, kann eine Menge CPU-Zeit und Arbeitsspeicher belegen. Durch die Verteilung der Komponenten auf verschiedene Rechner kann sowohl eine bessere Performance, als auch eine Wiederbenutzbarkeit der einzelnen Komponenten erreicht werden. Dadurch wäre es möglich, Laufzeitkomponenten mit verschiedenen Anwendungen zu nutzen – Dienstprogramme für die pdf-Generierung beispielsweise können von mehreren Anwendungen genutzt werden. Ein weiterer Vorteil liegt darin, das bei einem Bugfix nur eine einzige Instanz der Komponente ersetzt werden muss. Dadurch würde verhindert, alle Anwendungen neu packen zu müssen, die die Komponente nutzen.

Struktur von WAID vor Refactoring

Gleichzeitig ermöglicht das vorgeschlagene Modell eine wichtige Konzeptverschiebung hin zur dienstorientierten Architektur (Service Oriented Architecture, SOA). Kurz gesagt besteht die Idee darin, Kompositanwendungen zu bauen anstatt kleine Projekte zu großen Anwendungen zusammenzufassen. Diese Kompositanwendungen werden aus verschiedenen Laufzeitgebundenen Diensten bestehen. Die Dienste stellen eine dezentralisierte Business Logik zur Verfügung anstelle einer fertig gepackten Funktionalität. Sobald ein gewisser Grad der “Dienstorientierung” erreicht ist, würde es möglich werden, Unternehmensintegrations-Muster zu nutzen, um eine bessere Kommunikation zwischen den verschiedenen involvierten Systemen zu erreichen. Eine Machbarkeitsstudie ist bereits entwickelt worden und eine schematische Übersiccht der vorgeschlagenen Lösung ist in Abb.3 zu sehen.

WAID Struktur nach Refactoring

Auf den ersten Blick ist kein großer Unterschied zu sehen. Die gelben Komponenten sind jedoch Enterprise Java Beans (EJBs), die ausserhalb der Webanwendung laufen. Sie können von der Webanwendung aufgerufen und genutzt werden. EJBs haben zwei Arten von Schnittstellen, lokal oder remote. In der Darstellung ist die lokale Schnittstelle hellblau dargestellt, verbunden mit WAID. Technisch gesehen wird diese Art der Schnittstelle genutzt, wenn beide Module innerhalb der gleichen Anwendung laufen, um einen Datenaustausch mit besserer Performance zu erreichen. Obwohl idmone-core seine Funktionalität in Form der EJBs offenlegt, werden sie trotzdem durch einen Spring Kontext initialisiert, in Abb.3 dunkelgrün dargestellt. Mehrere Entwickler sind der Meinung, dass SPRING und JEE sich gegenseitig ausschließen und miteinander konkurrieren. In unserem Fall bilden sie jedoch anscheinend eine Symbiose.

Zur gleichen Zeit wird ein Vorschlag bewertet, die Anwendung als entpackte .war Datei einzusetzen, um “fliegende” Änderungen möglich zu machen. Ziel des Vorschlages ist ein vereinfachtes Verbessern von Schreibfehlern, Übersetzungsfehlern und Ähnlichem. Die Technik wurde als Machbarkeitsstudie bei der Umsetzung komplexer Änderungen erprobt, wie dem Registrieren und Entfernen existierender Tapestry Komponenten auf einer Seite. Bisher erscheint das Konzept brauchbar, es wirft jedoch Fragen in Bezug auf Stabilität und Zuverlässigkeit auf, und kann zu Inkonsistenzen führen, wenn es nicht gründlich genug durchdacht ist. Inkonsistenzen beziehen sich in diesem Zusammenhang auf verschiedene Code-Versionen im Produktivsystem und dem Repository. In Notfällen besteht die Möglichkeit, dass Updates im Produktivsystem eingefügt werden, dann aber nicht in den Code übernommen werden. Generell erscheint für die Handhabe des tagging eine einzelne Webanwendung besser geeignet, da eine Systemmwiederherstellung in diesem Fall durch das Kopieren einer einzelnen Datei einfacher ist als durch Hunderte kleiner Dateien. Die Operation verläuft ebenso deutlich effizienter im oben genannten Fall. Zum gegenwärtigen Zeitpunkt wird der Einsatz von WAID als entpacktes Archiv als nicht schädlich beurteilt. Solange jedoch die oben genannten Schwierigkeiten nicht ordentlich angegangen und getestet worden sind, sind Dateiänderungen im entpackten Verzeichnis nur in Ausnahmesituationen gestattet.

Neue Funktion im IdM Self-Service

English Version

Vergessenes Passwort kann ab sofort über E-Mail-Adresse zurückgesetzt werden

Eine neue Funktion erleichtert im IDM Self-Service (WAID) künftig das Vorgehen bei vergessenem Passwort. Zusätzlich zu den Sicherheitsfragen hat der Benutzer nun die Möglichkeit, eine beliebige E-Mail-Adresse zum Zurücksetzen des Passwortes zu hinterlegen. Zur Aktivierung dieser Funktion muss die hinterlegte E-Mail-Adresse einmalig bestätigt werden. Hierfür erhält der Benutzer an die eingetragene Adresse eine E-Mail mit einem Link, den er innerhalb von 24 Stunden anklicken muss.

Bei vergessenem Passwort kann der Nutzer dann eine E-Mail an die angegebene Adresse anfordern und das Passwort durch Anklicken des darin enthaltenen Links innerhalb von 24 Stunden neu setzen. Das Rücksetzen des Passwortes über die Sicherheitsfragen ist trotz der neuen Funktion nach wie vor möglich.

Leider erfolgt die Kommunikation zwischen E-Mail-Servern prinzipiell unverschlüsselt. Die neue Funktion ist daher vor diversen Attacken (sogenannte “man-in-the-middle-Attacken”) nicht geschützt und birgt die (allerdings geringe) Gefahr, von Dritten missbraucht zu werden.

Das am häufigsten zu erwartende Problem wird leider nicht zu umgehen sein: Eine nicht existente oder nicht zustellbare externe Mailbox.

New Function in IdM Self-Service

Forgotten password can now be put back via e-mail address.

A new function makes the process of a forgotten password easier in the IdM Self-Service (WAID). Additionally to the safety questions the user is able to deposit any e-mail address to put back the password. For the activation of this function the deposited e-mail address needs to be confirmed once. Therefore the user will receive an e-mail with a link to the deposited address which needs to be clicked within 24 hours.

In case of a forgotten password the user can request an e-mail to the deposited address and can, within 24 hours, set a new password by clicking the link in the e-mail. The password can still be reseted with the safety questions.

Unfortunately the communication between the e-mail servers happens uncoded. Therefore the new function is not protected from different attacks (so called “man-in-the-middle-attack”) and has also the risk to be abused by thirds.

The most likely problem that can not be avioded: a non existing or not reachable extern mail box.

Identity Management schnell und intuitiv erreichbar

English Version
Der Identity (IdM) Self Service des RRZE für alle Beschäftigten und Studierenden der Friedrich-Alexander-Universität Erlangen-Nürnberg ist ab sofort unter https://www.idm.uni-erlangen.de/ zu erreichen.

Das erste Feedback der Benutzer zielte auf die Länge der URL des Identity Management (IdM) Self Service ab: ?Zu lang und der zentralen Rolle dieses Dienstes nicht gerecht werdend?, war der Tenor. Aus diesem Grund wurde die neue URL https://www.idm.uni-erlangen.de/ etabliert. Hierunter ist der Dienst nun dauerhaft zu erreichen. Bisherige Links werden weitergeleitet und behalten vorerst ihre Gültigkeit. Dennoch bitten wir alle Benutzer, ihre Lesezeichen bzw. Favoriten entsprechend zu aktualisieren.

Im Zuge der neuen Namensgebung wurde auch die Hardware für das Identity Management (IdM) erweitert. Der Dienst sollte nun also noch schneller als bisher reagieren.

Für Fragen rund um das Identity Management werfen Sie doch mal einen Blick in die Hilfe, die FAQ oder wenden sich direkt per E-Mail an idm@rrze.uni-erlangen.de.

Identity Management quick and intuitively reachable

The identity (IdM) self service of the RRZE for all the employees and students at the Friedrich-Alexander-University Erlangen-Nuremberg is now reachable at  https://www.idm.uni-erlangen.de/.

The first users’ feedback targeted the length of the URL of the identity management (IdM) self service: ?Too long and does not measure up with the service’s central role? was the main tenor. Because of this reason the new URL https://www.idm.uni-erlangen.de/ was established. Here the service is steadily reachable here. Links up to now will be forwarded and will keep their availability for now. Nevertheless we ask the users to update their bookmarks, or favourites accordingly.

In the course of a new naming the hardware for the identity management (IdM) has been extended. The service should now react even faster than before.

For questions around the identity management please look up the Help, the FAQ or send and e-mail directly to idm@rrze.uni-erlangen.de.

IDMone Release 2.1 online

English Version
Das aktuelle Release bietet vor allem Verbesserungen in der Web Oberfläche IdM Self Service. So wurde unter anderem eine Feedbackseite eingerichtet. Außerdem stehen nun alle Informationen auch in englischer Sprache zur Verfügung. Desweiteren wurden die Administratoren-Funktionen erweitert.


Wie bei jedem Produkt kann es auch beim IdM Self Service dazu kommen, dass der Nutzer Hilfe benötigt. Dafür wurde jetzt im technischen Menü (auf der Seite oben rechts) der Punkt “Feedback” eingerichtet. Klickt der Nutzer darauf, erscheint eine Formularseite, mit der er eine Anfrage an das RRZE senden kann. Die Anfrage wird zum HelpDesk-System des RRZE weitergeleitet und dort zeitnah durch qualifizierte Fachleute im RRZE bearbeitet. Das IDMone-Team hofft gleichzeitig, dadurch direkter mit den Kunden der IdM Self-Service Oberfläche in Kontakt zu kommen, und lädt alle Nutzer ein, diese Funktion auch für Kritik, Anregungen oder Lob zu nutzen.

Affiliation- bzw. Rollen-Anzeige

Den IdM Self Service nutzen alle Angehörigen der Friedrich-Alexander Universität, unabhängig davon, welche Rolle sie an der Hochschule innehaben: Studierende, Beschäftigte, Dozenten, Prüfer, Gastwissenschaftler und Andere. Im Englischen hat sich dafür der Begriff “Affiliation” etabliert. Da sich im deutschsprachigen Raum noch keine einheitliche Bezeichnung durchgesetzt hat (und für den englischen Begriff noch keine passende Übersetzung gefunden wurde), spricht das RRZE in diesem Zusammenhang auch von Rollen. Im Grunde geht es darum, dass dem Nutzer alle Rollen, die er an der Universität innehat, samt der Informationen, die daraus resultierend über ihn gespeichert werden, im IdM Self Service unter dem Menüpunkt “Benutzerdaten” angezeigt werden.

Ihre Meinung zählt

Wie würden Sie den Begriff “Affiliation” übersetzen?
Welche Bezeichnung würden Sie vorziehen?
Bitte stimmen Sie hier ab:

Übersetzung der Briefe

Good News for our English speaking users: All letters (pdf files) offered within the IdM Self Service are now translated to English. The IdM Self Service should offer you now a 100% English experience.

Any errors in translation found? Do not hesitate to write us an Email to idm@rrze.uni-erlangen.de or use the feedback form (link left of the language flag).


Was nur für einige der IdM Kunden, nämlich die Administratoren mit den entsprechenden Berechtigungen, sichtbar ist: Der IdM Self Service verfügt nun auch über administrative Funktionen.

Affiliations Anzeige auch für Adminstratoren

Nicht nur die Kunden bekommen Ihre Affiliations angezeigt. Auch die Administratoren können nun die Art der Zugehörigkeit einer Person zur Universität schnell und einfach nachvollziehen. Das IdM-Team hat damit einen wesentlichen Wunsch, der in den letzten Wochen insbesondere von den Beschäftigten des RRZE geäußert wurde, realisiert.

Dienstleistungs-Anzeige auch für Adminstratoren

Bisher war für Administratoren nicht einsehbar, welche RRZE-Dienstleistungen für den einzelnen Kunden erbracht werden. Auch dies ist nun integriert. Damit macht das IdM Self Service einen weiteren großen Schritt in Richtung zentraler Anlaufstelle für die Personen- und Dienstleistungsverwaltung.

Studentische Aktivierungs- (s-) Kennungen über Quick-Search für Administratoren suchbar

Mit der Einführung des Identity Managements wurde die Benutzerkennung auf eine syntaxfreie Erstellungsregel umgestellt. Dies trifft vor allem Studierende, deren bisherige Kennung mit einem “s” begann (daher der Name „s-Kennungen“). Diese bekommen mit der Aktivierung im IdM Self Service eine neue, semantikfreie Kennung zugewiesen. Ungünstig ist es, wenn diese Kennung vergessen wird und nur ein alter Studentenausweis die Aktivierungskennung angibt.
Administratoren können nun über das Schnell-Such-Feld (Quick-Search) nach dieser ursprünglichen Kennung suchen. Diese wird auch in den Benutzerdaten bei der Rolle Student als “Benutzerkennung (orig.):” ausgegeben.

noch Fragen?

Sie haben noch Fragen zum IdM oder dem IdM Self Service?
Dann sehen Sie doch unsere FAQs an – diese werden laufend aktualisiert und ergänzt.
Sind noch Fragen offen? Dann schreiben Sie uns eine E-Mail an idm@rrze.uni-erlangen.de.

IDMone Release 2.1 online

The current release especially offers improvements in the web interface IdM Self Service. Among others a feedback page has been set up. Furthermore all the information are now available in English. Also the admin functions have improved.

Feedback Page

As for every project it could happen that the user of the IdM self service needs some help. Therefore the new button “Feedback” was added to the technical menu (on the right top of the page).  If the user clicks this button a form page will appear with which the user can send a request to the RRZE. The request will be forwarded to the  HelpDesk-System des RRZE and worked on by skilled professionals at the RRZE. At the same time the IDMone team hopes to be closer in contact to the customers of the IdM self service interface, and therfore invites the users to use this function for critique, suggestions or reasurment.

Affiliation and Role Display

The IdM self servie uses every member of the Friedrich-Alexander University, independently from the role they have within the university: student, employee, lecturer, examiner, visiting professor or others. The English term “affiliation” has established for this case. Because there hasn’t been a consistent term in the German speaking area (and the English term did not have a fitting translation) the RRZE speaks in this case also about roles. Basically it is about that under the menu point “Uderdata” the user can see every roles which he/she has within the university, including the resulting information, which are safed about the user.

Your opinion counts

How would you translate the term “affiliation”?
Which term would you prefer?
Please vote here:

Translation of letters

Good News for our English speaking users: All letters (pdf files) offered within the IdM Self Service are now translated to English. The IdM Self Service should offer you now a 100% English experience.

Any errors in translation found? Do not hesitate to write us an Email to idm@rrze.uni-erlangen.de or use the feedback form (link left of the language flag).

Admin functions

What is only visible for a few IdM customers, such as the admins with the according rights: the IdM self service now contains administrative functions.

Affiliation display also for admins

Not only customers can view their affiliations. Also admins can quick and easily follow the form of the affiliation of a person at the university. The IdM team therefore realised the essential desire which was especially by employees of the RRZE required.

Service display also for admins

Until now the admins could not see which RRZE services are provided for each customer. This is now integrated, too. Therefore the IdM self service takes another big step towards central contact point for personnel and service management.

Student activation identification searchable for admins via Quick-Search

With the introduction of the identity management the user identification was converted into a syntax free creation rule. This applies especially for students whose identification started with a “s” (so called “s identifications”). They will receive with the activiation at the IdM Self Service a new and semantic free identification. It is inconvenient if this identification is forgotten and only an old student id can be used for the activation identification.
Admins can now search for the original identification via the quick search field (Quick-Search). It will also display in the user data under the role “User identification (orig.)”.

still questions?

You still have questions about IdM or the IdM self service?
Then have a look on our FAQs  – they are continously updated and supplemented.
Still questions? Then write an e-mail to idm@rrze.uni-erlangen.de.

WAID 1.0 (english)

WAID 1.0 (english)

Introducing the technical details of the product behind the Identiy Management (IdM) Self Service

(Input: Krasimir Zhelev, P&P CSA, Text: Hendrik Eggers, Translation: Bastian Melsheimer)

, the Web Application for Identity Management, is the basis for the new IdM Self Service.In the following article, we will have a look at its technical foundation.
WAID is based on popular Java Development Frameworks:

We also use 3rd Party Extensions, e.g. t5c-commons for the slider effect and other effects on the main page.
Since these frameworks weren’t sufficient for our needs, further extensions were created adhering to the P&P Software Architecture (PPSA), which are now embedded as components.

Tapestry Components

The components (ppsa-t5-commons, ppsa-t5-d7, ppsa-t5-jcaptcha) which were used to extend the Tapestry Framework have already been discussed in the article PPSA T5 Komponenten in the P&P Blog. I will refrain from giving redundant explanations here, and point our readers to Krasimir Zhelev’s Blog article.

Further new Tapestry Components

In addition to the Extensions that had already been created for Tapestry, the following components have been developed especially for WAID:

ppsa-t5-pwdsuggestion – 0.8.0

This component defines the interface for the Tapestry based password suggestion service and realise the relevant interfaces. These are implemented in WAID. In addition , the following components are used:

Business Logic Components

The application’s controller layer is realized both in WAID and in the components described here.

pwd-man-api – 1.0.0

This is ?only? an API, i.e. a definition of interfaces, and not an implementation. The abstraction is used to achieve independance from Novell products.
The interfaces used most for this are the PasswordManager for all functions concerning passwords as well as the ChallengeResponseManager for access to Novell’s functions regarding the Security Questions for Password Recovery.

jpwgen – 1.0.4

The password generator is the password suggestion service’s core piece, and is able to take into account a variety of rules.
Instead of going into too much detail here, I will point you to the official website of jpwgen, which has already been published as Open Source Software under LGPL v2.1.

idmsec – 1.0.0

This component addresses all tasks concerning encryption and hashing of passwords. For this, it implements a series of algorithms:

  • MD5
  • SMD5
  • SHA
  • SSHA
  • SMB
  • Apache MD5
  • HIS/SOS Apache MD5
  • OpenBSD-style Blowfish
  • Blowfish

The component also provides the LDAP Connection Manager, which is used to create and manage LDAP connections. It is able to manage a series of connections simultaneously, and supports both ldaps and StartTLS for secure connections.

idmnovutil – 1.0.0

To achieve independance from Novell products, pwd-man-api has already been mentioned above. Idmnovutil is the implementation of this interface. It is based on several tools (Novell NMAS, OpenLDAP Java LDAP and Novell LDAP Classes for Java) and implements the part specific to the  Novell Identity Manager.
Ideally, when using WAID with a different provider’s MetaDirectory, this would be the only component that needs to be changed. This experiment still awaits testing, though. 😉

idmone-core – 0.5.0

Within the three column architecture, this component is the core function, as suggested by the name.
This means that the domain model also contains the definitions for persons (entities), affilitations and entitlements.
The Data Access Object (DAO) Layer manages object procession, i.e. searching, creating, reading, changing and finally Deleting  (CRUD) objects.
It also implements several relevant functions, e.g. activating persons.

– 1.0.0

Finally, integration of the components mentioned above is managed by WAID, which also displays the final web interface.
The Logic is implemented as a Tapestry Service, mostly, with the following internal main functions:

  • ChallengeResponse (C&R) ? checks and sets C&Rs for different users.
  • LayoutBuilder ? creates a dynamic menu and helps with the session management. The implemented interface is defined in ppsa-t5-d7.
  • LoggedOnPerson ? checks the users’ authentication.
  • ProofOfAuthority ? checks authorisation.
  • PwdSuggestion ? Implementation of the interface defined in ppsa-t5-pwdsuggestion
  • UserASCreator ? loads data for successfully authenticated users via the DAO layer.

The user interface also uses the ppsa-t5-* Tapestry components mentioned above.
The user can access the following functions:

  • User information, aka data security information.
  • View service(s)
  • Password change
  • Challenge & Response (Security Questions: C&R)
  • PDF printing
    • User information letter
    • Service information letter
  • Administrator functions
    • Search for users
    • Set (initial) password
    • Print user information letter


All the components mentioned here ? at least those that are still unpublished ? will be published successively. This depends on the actual development stage the product and its documentation is in, and that third parties will be able to make use of it.
If you are interested before that time, please write an email to idmone@rrze.uni-erlangen.de.
You can of course use the same Email address, if you would like support for your own IdM project.

WAID 1.0

Das Produkt hinter dem Identiy Management (IdM) Self Service aus technische Sicht vorgestellt.
(Input: Krasimir Zhelev, P&P CSA, Text: Hendrik Eggers)

, die Web Application for Identity Management, stellt die Basis des IdM Self Service dar. Im folgenden soll die technische Basis näher erläutert werden.
WAID basiert auf populären Java Entwicklungs Frameworks:

Außerdem nutzen wir auch 3rd-Party Erweiterungen, wie z.B. t5c-commons für den Slider-Effekt u.a. auf der Startseite.
Da diese Frameworks bei weitem nicht ausreichen würden im Rahmen der P&P Software Architecture (PPSA) Erweiterungen geschaffen, die nun als eigene Kompenenten eingebunden werden.

Tapestry Komponenten

Die Komponenten (ppsa-t5-commons, ppsa-t5-d7, ppsa-t5-jcaptcha) zur Erweiterung des Tapestry Framework sind bereits im Artikel PPSA T5 Komponenten im P&P Blog beschrieben worden. Ich spare mir also an dieser Stelle die Redundanz und verweise den interessierten Leser auf Krasimir Zhelevs Blog-Artikel.

Weitere neue Tapestry Komponenten

Neben den bereits erstellten Erweiterungen zu Tapestry wurden extra für WAID noch die folgenden Komponenten entwickelt:

ppsa-t5-pwdsuggestion – 0.8.0

Diese Komponente definiert die Schnittstellen für den Tapestry-basierten Passwortvorschlagservice und realisiert die zugehörige Oberfläche. Die Implementierung der Schnittstellen erfolgt wiederrum in WAID. Außerdem werden die folgenden Komponenten:


Business Logik Komponenten

Die Controller Schicht der Applikation wird neben in WAID selbst in den hier beschriebenen Komponenten realisiert.

pwd-man-api – 1.0.0

Hierbei handelt es sich “nur” um eine API also die Definition von Schnittellen und keine Implementierung. Diese Abstraktion dient dazu möglichst unabhängig von den Novell Produkten zu werden.
Die meistgenutzten Schnittstellen sind dabei der PasswordManager für alle Funktionen rund um das Passwort sowie der ChallengeResponseManager für den Zugriff auf die Novell eigenen Funktionen rund um die Sicherheitsfragen für das Password Recovery.

jpwgen – 1.0.4

Der Passwortgenerator ist das Herzstück des Passwortvorschlagservice und kann verschiedene Regeln berücksichtigen.
Anstatt viele Worte zu verlieren, sei auf die offiziellen Webseiten von jpwgen verweisen, denn diese ist bereits als Open Source Software unter der LGPL v2.1 released worden.

idmsec – 1.0.0

Diese Komponente adressiert alle Aufgaben rund um die Verschlüsselung (encryption) und das Hashing von Passworten. Hierzu implementiert sie eine ganze Reihe von Algorithmen:

  • MD5
  • SMD5
  • SHA
  • SSHA
  • SMB
  • Apache MD5
  • HIS/SOS Apache MD5
  • OpenBSD-style Blowfish
  • Blowfish

Außerdem stellen die Komponenten den LDAP Connection Manager zur Verfügung mittels dessen LDAP Verbindungen hergestellt und verwaltet werden können. Dieser kann mehrere Verbindungen gleichzeitig verwalten und unterstützt sowohl ldaps als auch StartTLS für sichere Verbindungen.

idmnovutil – 1.0.0

Um möglichst unabhängig von den Novell Produkten zu programmieren, wurde oben bereits die Komponenten pwd-man-api angesprochen. Bei der Komponenten idmnovutil handelt es sich nun um die Implementierung dieser Schnittstellen. Sie basiert auf verschiedenen Werkzeugen (Novell NMAS, OpenLDAP Java LDAP bzw. Novell LDAP Classes for Java und implementiert so den Teil, der für die Verwendung des Novell Identity Manager spezifisch ist.
Idealerweise müsste bei einer Verwendung von WAID mit dem MetaDirectory eines anderen Herstellers nur diese Komponente ausgetauscht werden. Allerdings harrt dieses Experiment noch seiner Erprobung. 😉

idmone-core – 0.5.0

In der Drei-Säulen-Architektur implementiert diese Komponente – wie der Name bereits suggeriert – die Kernfunktionen.
So beinhaltet es das Domänenmodel (domain model) also die Definition von persons, affiliations und entitlements.
Die Data Access Object (DAO) Schicht sorgt für die Verarbeitung dieser Objekte, also die Suche, das Anlegen, das Auslesen, Ändern und schlussendlich Löschen (CRUD) von Objekten.
Außerdem implementiert es verschiedene wesentliche Funktionen u.a. für die Aktivierung der Personen.

– 1.0.0

WAID obliegt schlussendlich die Integration der vorgenannten Komponenten und deren Darstellung in einer Web-Oberfläche.
Die Logik wurde hauptsächlich als Tapestry Services implementiert. Die Hauptfunktionen sind intern:

  • ChallengeResponse (C&R) – überprüft und setzt C&R für verschiedene Nutzer
  • LayoutBuilder – baut dynamisch das Menu und hilft bei der Sessionverwaltung. Die implementierte Schnittstelle ist im ppsa-t5-d7 definiert.
  • LoggedOnPerson – überprüft die Authentifizierung der Benutzer
  • ProofOfAuthority – überprüft Zugriffrechte (Autorisierung)
  • PwdSuggestion – Implementierung der in ppsa-t5-pwdsuggestion definierten Schnittstelle
  • UserASCreator – lädt via DAO Schicht die Daten des erfolgreich authentifizierten Benutzers

Außerdem verwendet die Oberfläche die obengenannten ppsa-t5-* Tapestry Komponenten.

Für den Benutzer sind in der Oberfläche folgende Funktionen nutzbar:

  • Datenschutzselbstauskunft (kurz: DSSA, aka: Benutzerinformation)
  • Dienstleistung(en) anzeigen
  • Passwort ändern
  • Callenge & Response (Sicherheitsfragen, kurz: C&R)
  • PDF Druck
    • Benutzer Info Brief
    • Dienstleistungs Info Brief
  • Funktionen für Administratoren
    • Suche nach Benutzern
    • (Initial-)Passwort setzen
    • Benutzer Info Brief drucken


Alle hier benannten Komponenten – so sie denn noch nichts bereits veröffentlicht wurden – sollen sukzessive heraus gegeben werden. Voraussetzung ist allerdings, dass sie sich in einem Zustand von Produktreife und Dokumentation befinden, dass Dritte sie verwenden können.
Sollten sie bereits vorab Interesse haben, so schreiben Sie bitte eine E-Mail an: idmone@rrze.uni-erlangen.de.
Außerdem können Sie sich an die gleiche E-Mail-Adresse wenden, wenn Sie Unterstützung für Ihr eigenes IdM-Projekt wünschen.

Das Kind hat einen Namen

Nach einer etwas längeren Urlaubspause, gibt es endlich wieder Neues aus der Welt des zukünftigen Service-Portals von IDMone. Die wohl wichtigste Neuigkeit ist die Entscheidung für einen “Produktnamen”:

WAID – Web Administration for IDMone

… so lautet seit dem 16.Juli 2008 der offizielle projektinterne Name für die Benutzeroberfläche. Wollen wir hoffen, dass ein erstes Release nicht allzulange auf sich warten 😉 lässt.

Neben viel Dokumentation, und einigen Aufräumarbeiten wurde eine Roadmap für die ersten beiden Releases erstellt. Davon wurden u.a. in den letzten Wochen folgende Teile abgearbeitet:

  • Aktivierung – Anzeige der Kennung
  • Entitlement-Passwort
  • Entitlement-Anzeige

Damit sind bis auf eine Kleinigkeit alle Features für Release 0.1.0 implementiert und warten nur noch auf die abschliessenden Tests.

Das weitere Vorgehen wird in den nächsten Tagen entschieden und richtet sich größtenteils nach der Planung von IDMone.

The Child has a Name

After a longer vacation break there are finally some news of the world of the upcomming IDMone service portal. The perhaps most important news is the decision of a “product name”:

WAID – Web Administration for IDMone

… this is the offical project intern name for the user interface since 16.6.2008. Let’s hope that a first release won’t take to much time to come. 😉

Besides a lot of documentation and some cleaning work, a roadmap for the first two releases was created. Of those, among others, the following parts were implemented:

  • activation display of identification
  • entitlement password
  • entitlement display

Except of some smaller issues all features for Release 0.1.0 are implemented and are just waiting for final tests.

The further action will be decided in the next days and aims for the planning of IDMone.

Endspurt Runde 1

In der vorletzten Woche musste die Entwicklung der neuen Web-Applikation unterbrochen werden, da die Integration der Matching-Regeln in die vorhandene Treiberlogik anstand (mehr dazu siehe IDM-Wochen_E-Mail KW 19).

Diese Woche ging es dann mit neuem Elan an die “alte” Arbeit. Die etwas kürzere Woche wurde dazu genutzt viele Kleinigkeiten auf den Webseiten zu verbessern und damit die erste Version einiger Komponenten fertigzustellen. Neu hinzu kam die Berechtigungs-Seite, auf welcher der angemeldete Benutzer die ihm zugeteilten Accounts, Zugriffsrechte, etc. angezeigt werden.

Der bereits im letzten Beitrag erwähnte PDF-Generator wurde erfolgreich in mehrere Seiten integriert. Damit wurde auch der Grundstein für die Loginbrief-Komponente gelegt. Mit Hilfe dieser Funktion können die erforderlichen Loginbriefe erstellt und gedruckt werden.

An einer ganz anderen Stelle konnten erste Schritte in Richtung Datenmodifikation gemacht werden. Die User-DAO wurde um die ersten schreibenden Zugriffe erweitert. Um den Abschluss der Arbeiten voranzutreiben wurde jedoch auf die eine oder andere Luxuslösung verzichtet – KISS-Prinzip lässt grüßen.

Zum Abschluss der Woche wurden noch diverse Anpassungen vorgenommen um das lokal entwickelte Projekt auf einem Integrationsserver bereitstellen zu können. Im Gegensatz zu dem bei der Entwicklung verwendeten Jetty-Server, läuft die Anwendung auf dem Integrationserver, wie auch im späteren Betrieb, in einem JBoss Application Server. Durchgeführte Integration Tests rundeten dieses Paket ab.


Final Sprint Round 1

The week before last week the deployment of a new web application had to be interrupted, because the integration of the matching rule into the existing driver logik (see further IDM-Wochen_E-Mail KW 19).

This week was all about the “old” work. The slightly shorter week was used to improve many minor things on the website and therefore to complete the first version of some components. Newly added: entitlement page, where sign on users can view his assigned account, access rights, etc.

The allready in the last post mentioned PDF generator was successfully integreted to several pages. Therefore the foundation for the login-letter component was laid. With help of this function the needed login-letters can be created and printed.

On a different place the firts steps towards data modifications have been taken. The user-DAO were extended with first writing accesses. To push the the work to come to an end, one or the other luxury solution were left out of site – KISS-Prinzip says hello.

To the conclusion of this week various adjustments were made to be able to provide the local developed project on an integration server. In comparison the during the development used Jetty-Server the application runs on an integration server, as in the future use, on a JBoss Application Server. Realized integration tests round up the package.


Kurze Woche, kurzer Blog

Feiertag und Besprechungen machten die letzte Woche sehr kurz. Zwei Hauptbereiche wurden bearbeitet. Den ersten Bereich füllt der “PDF-Generator”. Stichpunkte wie, Html2PdfConvertor (FOP), CssConvertor und PdfPostprocessor (iText) sollen an dieser Stelle genügen. Der zweite Bereich umfasst die DAO-Schicht von Personen, Gruppen und Berechtigungen. Stichpunkte hier: AOP und Lazy Loading.


Short Week, Short Blog

Holiday and meetings made the last week a very short one. Two major areas have been worked on. The first area is the “PDF-Generator”. Bulletpoints like  Html2PdfConvertor (FOP), CssConvertor and PdfPostprocessor (iText) should be enough at this point. The second area concludes the DAO-layer of persons, groups and rights. Bulltepoints hier: AOP and Lazy Loading.