4.3 Vervollständigung des E-Test-Elements RichtigFalsch unter Verwendung von Java-Webstart
JabeS API zu Version et003
|
2 008200700076
Code 4.3-1: Beispielrückgabe-String für die Implementierung der Objekt-Methode getContent() in elemente.etest.RichtigFalsch.
|
Beschreibung der Implementierung
|
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:
|
Für E-Tests sollten unsichere PHP-Skripte, wie holedateiinhalt.php entfernt werden.
Anpassungen an die neue Zielrichtung
|