Beispiel: IBM WebSphere-spezifische User-Registry


Dieses Beispiel zeigt die von Hr. Dreher vorgestellte UserRegistry in einem konkreten Beispiel.
Aufbau des Beispiels:
Hier gibt es das WebSphere-Projekt als Projektaustausch-Export zum Download : UserRegistryExport.zip
Zusätzlich wird die Datenbank mit den Tabellen für die Authentifizierung benötigt: Datenbank.zip
WICHTIG: Das Projekt muss in einem Verzeichnis "C:\temp\UserRegistry" liegen. In diesem MUSS die Datenbank in einem Unterverzeichnis "Datenbank" liegen (ZIP-Dateien enthält die letzte Pfadkomponente, also nach c:\temp\UserRegistry entpacken !). Ansonsten stimmten Pfade zur Datenbank nicht.
Außerdem müssen drei Klassenvariablen angelegt werden (hier ist die Anleitung).
Die Datenbank enthält einen Administrator-User "ICH" mit Passwort "123" (unter diesem User wird auch der Server gestartet) und einen Studenten "STUD1" mit Passwort "STUD1".

Erstellung des Projekts

Es wird ein Unternehmensanwendungsprojekt namens "UserRegistry" mit einem Webmodul erstellt.

Erstellen der Datenbankdefinition


Erstellen der User-Registry-Klasse

Die drei JARs wssec.jar, sas.jar und idl.jar müssen bekannt gemacht werden, damit das Interface "UserRegistry" bekannt wird. Idealerweise diese Dateien nicht direkt referenzieren, sondern als Umgebungsvariablen. Dazu im Menü "Fenster" unter "Benutzervorgaben" -> "Java" -> "Benutzervorgaben" drei neue Klassenpfadvariablen KNAUF_WSSEC, KNAUF_SAS und KNAUF_IDL zufügen. Sie verweise auf folgende Pfade:
KNAUF_WSSEC -> C:/Programme/IBM/WebSphere Studio/Application Developer/v5.1.2/runtimes/base_v51/lib/wssec.jar
KNAUF_SAS -> C:/Programme/IBM/WebSphere Studio/Application Developer/v5.1.2/runtimes/base_v51/lib/sas.jar
KNAUF_IDL -> C:/Programme/IBM/WebSphere Studio/Application Developer/v5.1.2/runtimes/base_v51/lib/idl.jar
JAR-Verweise, Schritt 1
Jetzt wechselt man in die Projekteigenschaften des Web-Projekts und fügt unter "Java-Erstellungspfad" die drei Bibliotheken zu.
JAR-Verweise, Schritt 2
Jetzt kann die UserRegistry-Klasse implementiert werden.

Web-Anwendung

Siehe Doku von Hr. Dreher: Die beiden Rollen "administratorweb" und "studentweb" werden zugefügt. Eine "Integritätsbestimmungen für Sicherheit" zufügen, die auf die URL "/*" angewendet wird und auf die die beiden Rollen Zugriff haben sollen. Authentifizierungsmethode soll hier BASIC sein (Web-Browser blendet selbst einen Login-Dialog ein).
Rollen:
Web-Sicherheit: Rollen
Rollenberechtigungen:
Web-Sicherheit: Rollenberechtigungen
Einstellen der Login-Methode:
Web-Sicherheit: Anmelde-Methode
Hier kann man ohne Probleme auf Form-Based Login umschalten. Als Login-Seite wählt man "login.jsp", außerdem gibt man eine Fehlerseite bei falschem Login an. Das Formular auf "login.jsp" muss ein festes Ziel und feste Feldnamen haben.
Siehe
http://www-306.ibm.com/software/webservers/appserv/doc/v40/aes/infocenter/was/050403.html.
Auf "index.jsp" ist für ein spezielles Logout-Formular enthalten.

Anwendungsimplementierungsdeskriptor

Hier werden die Rollen aus dem Webimplementierungsdeskriptor mit den Rollen der UserRegistry verknüpft. Auf dem Karteireiter "Sicherheit" klickt man auf den Button "Erfassen...". Die zwei in der Webanwendung definierten Rollen sollten auftauchen.
Jede Rolle wird angewählt und rechts unter "WebSphereBindings" die Option "Benutzer/Gruppen" gewählt (zu der Rolle gehören die explizit angegebenen Benutzer/Gruppen). Unter "Gruppen" fügt man bei "administratorweb" die Rolle "administrator" zu (wird beim Anwendungsstart mit einer gleichnamigen Rolle aus der User-Registry abgeglichen). Für "studentweb" wird "student" zugewiesen.
Anwendungsdeskriptor

Server-Konfiguration

Hierbei kann man sich komplett an die Anleitung von Hr. Dreher halten.
WICHTIG beim aktivieren der globalen Sicherheit: KEINE "JAVA2-Sicherheit" aktivieren (Checkbox zurücksetzen, nachdem sie beim Aktivieren der Sicherheit automatisch gesetzt wird) Für den Fall, dass man wegen eines Konfigurationsfehlers den Server nicht mehr starten kann, kann man die Sicherheit in den Servereigenschaften wieder ausschalten.
Serverconfig: Sicherheit abschalten

In Erweiterung des Beispiels habe ich außer Datenbankurl und -driver auch Schema, User und Passwort per Server konfigurierbar gemacht. Zu beachten ist, dass die Datenbankurl hier den absoluten Pfad enthält, weil sie manuell erstellt wurde (scheinbar verwenden die EJBs einen JNDI-Eintrag, den wir auf dieser Stufe der Anwendung noch nicht haben).
Serverconfig: UserRegistry-Properties
Hier nochmal die Werte zum Copy&Paste:
DBDRIVER: com.ibm.db2j.jdbc.DB2jDriver
DBURL: jdbc:db2j:C:\temp\UserRegistry\Datenbank
DBPASSWORT und DBUSER: knauf
DBSCHEMA: SCHEMAKNAUF


Anwendungsablauf

Die User-Authentifizierung erfolgt in diesen Schritten: