kramann.info
© Guido Kramann

Login: Passwort:










4.3 Vervollständigung des E-Test-Elements RichtigFalsch unter Verwendung von Java-Webstart

JabeS Version et003 startenVersion gemäß et003, s.u.

JabeS API zu Version et003

  • Im folgenden wird der Start als Applet oder Applikation nicht mehr unterstützt, nur noch der Start mit Java-Webstart.
  • Die aktuellen Eintragungen in die Auswahlkästen in elemente.etest.RichtigFalsch sollen nun speicherbar sein.
  • Dazu werden zwei neue Methoden für alle E-Test-Klassen vorbereitet: String getContent() und setContent(String).
  • Diese Methoden werden im Interface elemente.ETestAufgabeInterface deklariert und müssen fortan in allen E-Test-Elementen implementiert werden.
  • Sie liefern die Nummer des E-Test-Objekts gefolgt von einem Leerzeichen gefolgt von dem Inhalt des Elements verschlüsselt mit Unicode.toNumber(String).
  • Handelt es sich um das E-Test-Element Index-Nr.2 und werden die angehakten Kästchen mit den Buchstaben R, F und L (für Richtig, Falsch, Leer) codiert, so ergibt sich als zurückgegebenes String bei drei Fragen mit den eingetragenen Antworten Richtig, Leer, Falsch:
2 008200700076

Code 4.3-1: Beispielrückgabe-String für die Implementierung der Objekt-Methode getContent() in elemente.etest.RichtigFalsch.

  • Der setContent(String)-Methode kann dann "2 008200700076" übergeben werden und restauriert dann die Einträge.
  • Diese getContent() und setContent()-Methoden müssen für jedes E-Test-Element anders (passend) implementiert werden.
  • Da jedes Content-String genau eine Zeile lang ist, können sämtliche Eintragungen durch Zeilenumbrüche voneinander getrennt in einem einzigen File untergebracht werden und von diesem beim wieder laden auf die Elemente verteilt werden.

Beschreibung der Implementierung

  • Bereits implementiert ist die Möglichkeit, das editierte Dokument mi den E-Test-Elementen lokal zu speichern, wenn die Anwendung als Java-Applikation gestartet wurde und noch nicht in einem .jar-File verpackt wurde.
  • Der Menü-Eintrag ist: Datei/speichern.
  • Nun soll es für den Client die Möglichkeit geben, die aktuellen Eintragungen in den E-Test-Elementen, also bei RichtigFalsch, das, was angehakt wurde auf dem Server zu speichern, wobei dann das zuletzt gespeicherte beim nächsten Aufruf automatisch geladen wird.
  • Zunächst aber wird auch die laden-Funktionalität explizit anwählbar in ETest/laden zur Verfügung gestellt (s. ETestMenue.java).
  • Da es beliebig viele Clients gibt, die beliebig oft die Eintragungen speichern können sollen, wird eine Namenskonvention für die Dateinamen eingeführt:
  • Der Dateiname enthält die IP-Adresse und die MAC-Adresse des Clients.
  • Der Speicher-Knopf für die Inhalte wird im Menü-Eintrag ETest bei ETest/speichern untergebracht.

Um die Kennung eines einzelnen E-Test-Objektes zu erfragen, muß getName() und nicht getAufgabenkennung() verwendet werden.


Erste Implementierung:

et001.zip: Im Menü ETest: laden/speichern lokal bei Start als Java-Applikation, Dateiname==IP-Adresse.txt, Ort: Start-Verzeichnis.

et002.zip: Mit Java-Webstart, Inhalte werden über PHP-Serverskripte geladen.

et003.zip: Mit Java-Webstart, auch Client-Einstellungen (E-Test-Eingaben) werden über PHP-Serverskripte auf dem Server gespeichert.
et002

Trennung zwischen Daten und Programm

In der bisherigen Implementierung wurde das Inhaltsdokument als Recource gealden, die in das .jar-File integriert war. Dies ist gut, wenn man Inhalt und Darstellungsprogramm unkompliziert weitergeben möchte, jedoch wie man es auch wendet ein Sicherheitsproblem, wenn es darum geht eine eine elektronische Klausur auf diesem Wege durchzuführen.

Besser ist es für diesen Anwendungsfall, das Dokument, das den Inhalt der Prüfung enthält nicht lokal auf dem Client-Rechner zu speichern und zudem nur zugänglich zu halten, wenn der Prüfungsserver verfügbar ist.

Dieses geänderte Konzept wird mit et002 realisiert. Allerdings läßt sich dies nicht mehr so einfach mit Java allein bewältigen, sondern es kommt stärker die Skriptsprache PHP auf dem Apache-Server zum Einsatz. Hierdurch wird das Gesamtprogramm auch unübersichtlicher, da es immer einen anfordernden Programm-Teil in Java gibt, der auf eine PHP-Seite auf dem Server zugreift.

Das Grundkonzept ist, dass ein Javaprogramm eine POST-Anfrage beim Server emuliert und diese über eine PHP-basierte Seite bearbeitet wird.

Um ein Minimum an Zusammenhalt zu wahren, werden die Programmteile für die Client-Server-Kommunikation, ob es sich nun um Java-Programmteile oder PHP handelt, in einem gemeinsamen Ordner Namens "servercall" gelegt. Dieser Ordner und auch jabes.jar werden nun auch in einen Oberordner mit Namen "jabes" abgelegt. Unterordner im Ordner jabes dienen wiederum dazu die auf dem Server verwalteten Daten, die aus der Client-Server-Kommunikation hervorgehen zu beherbergen. Es gibt zum einen den Ordner "dokument", der das aktuelle Dokument enthält, das den E-Test beschreibt, sowie die hierzu erforderlichen Bilder.

Die Generieung des Ordners jabes und von allem, was dort hinein gehört erfolgt weiterhin von einem beliebig benennbaren Ordner auf der gleichen Ebene, hier et002, in dem das Skript "erzeuge_alles_neu_und_starte.bat" aufrufen muß. Der Ordner et002 ist somit die Entwicklungsebene inklusive aller Quellcodes. Der Ordner jabes ist dann die Produktionsebene, bei der keine Quelltexte mehr mit enthalten sind, auf der aber bei lokalem Start als Dozent die Weiter- oder Neuentwicklung eines E-Tests möglich ist, da ja das zentrale Dokument "inhalt.jabes" nun nicht mehr in jabes.jar integriert ist, sondern im Ordner dozent liegt.

Sicherheitskonzept

Alle inhaltlichen und alle Sicherheits relevanten Konzepte, wie z.B. eine Liste der IP-Adressen, denen der Zugriff auf den Test zur Bearbeitung erlaubt ist, sowie die im Verlauf einer Sitzung anfallenden Daten, also die Daten, die beschreiben, welche Eintragungen von welchem Studierenden in den Test gemacht wurden, werden im Ordner "dokument" gelegt. Der Ordner "dokument" erhält entsprechend eingeschränkte Zugriffsrechte und die Inhalte werden nur mittelbar über Server seitige PHP-Skripte beeinflußt, die jeweils die Autorität einer Anfrage von außen überprüfen. Unterordner von Ordner "dokument":

Unterordnername / Dokumentname Beschreibung
bilder Enthält alle Bilder, die im zentralen Dokument benötigt werden.
IP-Adressen Automatisch erstellte Ordner, die für jede Client-Anfrage erstellt werden und die Studierenden-Einträge beinhalten.
inhalt.jabes Beschreibung des E-Tests
erlaubte_ip_adressen.txt Liste der zum Test zugelassenen PCs
BASISURL.txt URL bis zum jabes-Ordner, hier: http://www.kramann.info/74_LLS/04_ETest/03_RichtigFalsch
pwmd5_inhalt.txt MD5 Verschlüsselung eines Passwortes, das den Zugriff auf inhalt.jabes regeln kann.
pwmd5_einstellungen.txt MD5 Verschlüsselung eines Passwortes, das die Möglichkeit Client-Einstellungen (Einträge in E-Tests) zu speichern regeln kann.
pwmd5_edit.txt MD5 Verschlüsselung eines Passwortes, das die Editiermöglichkeit des Inhalts regeln kann.

Tabelle 4.3-1: Unterordner von Ordner dokument

Die Ordner "dokument" und "servercall" sind zunächst auf der Ebene der Packages im Entwicklungsordner (hier et002). Bei Aufruf von "erzeuge_alles_neu_und_starte.bat" werden diese mit in den Ordner "jabes" kopiert.

Der Zugriff auf die Dokumente erfolgt bei lokalem Aufruf auch lokal. Entwicklung und E-Test-Erstellen finden auf dieser Ebene statt. Wird vom Programm erkannt, dass ein lokaler Zugriff nicht möglich ist, wird ein Passwort erfragt und ein Netzzugriff versucht. Stimmen Passwort und IP-Adresse mit den auf dem Server gespeicherten überein, so werden die Inhalte vom Server ausgeliefert.

Über Vergabe oder Nicht-Vergabe erlaubter IP-Adressen und eines Passwortes, kann die Zugänglichkeit verschiedener Inhalte gesteuert werden.


Entscheidung, ob lokale, oder Web-Version: inhalt.jabes ist in der Web-Version nicht im jabes.jar-File inbegriffen. Eine entsprechende Fallunterscheidung beim Starten von JabeS wird implementiert.


Variablen zur Konfiguration in der Klasse JabeS

Als Weichensteller dafür, wie restriktiv die Überprüfungen vor der Auslieferung der Inhalte, oder vor dem Abspeichern der Client-Einstellungen sind, können einige Konfigurationsvariablen direkt in der Klasse jabes/JabeS verwendet werden. Die Attribute werden einmal vor dem Kompilieren in JabeS.java gesetzt, um das Programm für einen speziellen Anwendungsfall zu konfigurieren. Folgende boolsche Variablen mit Attribut private werden dort bereitgestellt:

Attributname Beschreibung
pruefe_ip_fuer_inhalt Legt fest, ob nur Client-Rechner den Inhalt sehen dürfen, deren IP-Adresse in dokument/erlaubte_ip_adressen.txt gespeichert ist.
pruefe_mac_fuer_inhalt Legt fest, ob nur Client-Rechner den Inhalt sehen dürfen, deren IP-Adresse in dokument/erlaubte_mac_adressen.txt gespeichert ist.
pruefe_pwd_fuer_inhalt Legt fest, ob ein Passwort zum Laden des Inhalts erforderlich ist.
pruefe_ip_fuer_einstellungen Legt fest, ob nur Clients ihre aktuellen Einstellungen auf dem Server speichern dürfen, deren IP-Adresse in dokument/erlaubte_ip_adressen.txt gespeichert ist.
pruefe_mac_fuer_einstellungen Legt fest, ob nur Clients ihre aktuellen Einstellungen auf dem Server speichern dürfen, deren MAC-Adresse in dokument/erlaubte_mac_adressen.txt gespeichert ist.
pruefe_pwd_fuer_einstellungen Legt fest, ob ein Passwort zum speichern der Client-Einstellungen erforderlich ist.
pruefe_ip_fuer_edit Legt fest, ob zum Editieren des Inhalts über das Web die IP-Adresse geprüft wird.
pruefe_mac_fuer_edit Legt fest, ob zum Editieren des Inhalts über das Web die MAC-Adresse geprüft wird.
pruefe_pwd_fuer_edit Legt fest, ob ein Passwort zum Editieren der Inhalte nötig ist.

Tabelle 4.3-2: Konfigurations-Attribute in JabeS

Passwörter

Auf dem Server wird die MD5-Prüfsumme der Passwörter jeweils in einer Datei gespeichert und zur Überprüfung der Passwörter verwendet. Linux bietet über den Befehl md5sum DATEI die Möglichkeit, die MD5-Prüfsumme eines Dateiinhaltes zu bestimmen. Somit können folgendermaßen die erforderlichen Dateien im Verzeichnes "dokument" erstellt werden, wenn dort temporär die Passwörter in pw_inhalt.txt, pw_einstellungen.txt und pw_edit.txt bereitgestellt werden (s. auch dokument/erzeuge_passwort_md5.bat):

md5sum pw_inhalt.txt > pwmd5_inhalt.txt
md5sum pw_einstellungen.txt > pwmd5_einstellungen.txt 
md5sum pw_edit.txt > pwmd5_edit.txt

Code 4.3-2: Erzeugen der Dateien mit den Prüfsummen der Passwörter.

et003

In Version et003 wird das Speichern von Client-Einträgen implementiert und eine erste Version für die Sicherheitsüberprüfungen insgesamt fertiggestellt.

Grundsätzlich gelten hier folgende Konventionen:

  • Läuft die Software lokal als Entwicklungsversion und ist inhalt.jabes im Entwicklungsverzeichnis "dokument" verfügbar, so erfolgen keinerlei Überprüfungen und der Editor-Modus wird gestartet.
  • Läuft die Webstart-Variante und ist der Inhalt frei verfügbar, wird der Fenster-Viewer geöffnet und Speichermöglichkeiten gibt es nur lokal.
  • Für einen E-Test muß die IP-Adresse des Clients in der gespeicherten Liste auftauchen und ein Passwort korrekt eingegeben werden, welches auch notwendig zum Speichern der Client-Einträge verwendet wird.
  • Das Editieren über das Web wird nur über die Kombination von IP-, MAC- und Passwort-Überprüfung gestattet, kann aber sinnvoll sein, um E-Test-Instanzen für Dozenten im Web einrichten zu können.
  • Jeder hochgeladener Inhalt wird mit einem neuen Passwort und einem Expire-Datum geschützt.

Für E-Tests sollten unsichere PHP-Skripte, wie holedateiinhalt.php entfernt werden.


Anpassungen an die neue Zielrichtung

  • Die Applet-Funktionalität wird nach und abgebaut zugunsten der Webstart-Funktionalität.
  • Ist inhalt.jabes als Recource ladbar (Entwicklungsmodus) bleibt "webstart_modus == false", Laden und Speichern laufen lokal ab und es werden keine Sicherheitsüberprüfungen gemacht.
  • Bei "webstart_modus == true" werden alle drei Passwörter (für Inhalt laden, Einstellungen speichern, Inhalt editieren) werden gleich zu Beginn erfragt, gespeichert und beim Server überprüft.
  • Werden hierarchisch höhere Passwörter nicht gesetzt, werden sie automatisch testweise mit dem hierarchisch nächst niedrigerem gleichgesetzt. Hierarchieebene niedrig: Inhalt laden, Hierarchieebene mittel: Einstellungen speichern, Hierarchieebene hoch: Inhalt editieren.
  • Inhalte sehen und Einstellungen auf dem Server speichern setzt zwei Passwörter und eine scanbare und registrierte IP-Adresse voraus.
  • Inhalte editieren setzt drei Passwörter und eine scanbare und registrierte IP-Adresse voraus, oder die lokale Verfügbarkeit einer JabeS-Instanz.
  • Ordner jabes/clientdata wird für die Webstart-Variante vorbereitet, um darin die Einstellungen der Client-Rechner speichern zu können.