de.bsvrz.puk.config.main.authentication
Class ConfigAuthentication

java.lang.Object
  extended by de.bsvrz.puk.config.main.authentication.ConfigAuthentication
All Implemented Interfaces:
Authentication

public class ConfigAuthentication
extends Object
implements Authentication

Diese Klasse stellt alle Methoden zur Verfügung, um die Benutzer eines Datenverteilers eindeutig zu identifizieren. Es werden weitere Methoden zur Verfügung gestellt, um die Benutzer zu verwalten (anlegen neuer Benutzer, Passwörter ändern, usw.).

Die Klasse verwaltet selbstständig die Datei, in der die Benutzer mit ihrem Passwörtern (normales Passwort und Einmal-Passwörter) und ihren Rechten gespeichert sind.

Der Klasse werden nur verschlüsselte Aufträge übergeben und sie entschlüsselt diese automatisch und führt die Aufträge aus, falls der Benutzer die nötigen Rechte besitzt.

Author:
Achim Wullenkord (AW), Kappich Systemberatung

Constructor Summary
ConfigAuthentication(File userFile, DataModel dataModel)
          Lädt alle Informationen aus der angegebenen Datei.
 
Method Summary
 void close()
          Diese Methode wird aufgerufen, wenn das System heruntergefahren wird.
 byte[] getText()
          Erzeugt einen Zufallstext und gibt diesen als Byte-Array zurück.
 void isValidUser(String username, byte[] encryptedPassword, String authentificationText, String authentificationProcessName)
          Die Implementierung dieser Methode stellt die Authentifizierung des Benutzers sicher.
 void processTask(String usernameCustomer, byte[] encryptedMessage, String authentificationProcessName)
          Bearbeitet eine der folgenden Aufgaben:
- Neuer Benutzer anlegen
- Einmal-Passwort erzeugen
- Rechte eines Benutzers ändern
- Passwort eines Benuzters ändern
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ConfigAuthentication

public ConfigAuthentication(File userFile,
                            DataModel dataModel)
                     throws ParserConfigurationException
Lädt alle Informationen aus der angegebenen Datei. Ist die Datei nicht vorhanden, wird eine Datei mit allen Grundeinstellungen erzeugt.

Parameters:
userFile - XML-Datei, in der alle Benutzer gespeichert sind.
Throws:
ParserConfigurationException
Method Detail

isValidUser

public void isValidUser(String username,
                        byte[] encryptedPassword,
                        String authentificationText,
                        String authentificationProcessName)
                 throws Exception
Description copied from interface: Authentication
Die Implementierung dieser Methode stellt die Authentifizierung des Benutzers sicher. Dafür wird das original Passwort mit dem übergebenen authentificationText verschlüsselt und mit dem übergebenen verschlüsselten Passwort verglichen. Sind beide Passwörter gleich, und der übergebene Benutzername stimmt mit dem Benutzernamen des original Passworts überein, so war die Authentifkation erfolgreich.

Konnte das original Passwort nicht benutzt werden, muss geprüft werden, ob es ein Einmal-Passwort gibt. Das Einmal-Passwort muss das derzeit aktuell gültige sein und muss mit dem übergebenen verschlüsseltem Passwort übereinstimmen. Gibt es ein entsprechendes Einmal-Passwort, so ist es für immer zu sperren.

Konnte kein Passwort gefunden werden, wird eine IllegalArgumentException geworfen.

Specified by:
isValidUser in interface Authentication
Parameters:
username - Benutzername, der zu dem übergebenen verschlüsselten Passwort gehört
encryptedPassword - Passwort, das mit dem übergebenen Text authentificationText verschlüsselt wurde
authentificationText - Text, der benutzt wurde um das übergebene Passwort encryptedPassword zu verschlüsseln
authentificationProcessName - Name des Verschlüsslungsverfahren, das benutzt wurde. Mit diesem Verfahren wird das Originalpasswort verschlüsselt
Throws:
Exception - Fehler beim schreiben der neuen Informationen oder ein technisches Problem beim verschlüsseln der Daten
IllegalArgumentException - Dem Benutzernamen konnte das Passwort nicht zugeorndet werden oder der Benutzer war unbekannt

getText

public byte[] getText()
Description copied from interface: Authentication
Erzeugt einen Zufallstext und gibt diesen als Byte-Array zurück.

Specified by:
getText in interface Authentication
Returns:
Zufallstext

close

public void close()
Description copied from interface: Authentication
Diese Methode wird aufgerufen, wenn das System heruntergefahren wird. Es ist ein Zustand herzustellen, der es ermöglicht das System wieder zu starten.

Specified by:
close in interface Authentication

processTask

public void processTask(String usernameCustomer,
                        byte[] encryptedMessage,
                        String authentificationProcessName)
                 throws RequestException,
                        ConfigurationTaskException
Description copied from interface: Authentication
Bearbeitet eine der folgenden Aufgaben:
- Neuer Benutzer anlegen
- Einmal-Passwort erzeugen
- Rechte eines Benutzers ändern
- Passwort eines Benuzters ändern

Specified by:
processTask in interface Authentication
Parameters:
usernameCustomer - Benutzer, der den Auftrag erteilt
encryptedMessage - verschlüsselte Aufgabe, die ausgeführt werden soll
authentificationProcessName - Verschlüsslungsverfahren mit der encryptedMessage erstellt wurde
Throws:
RequestException - Der Auftrag konnte aufgrund eines technischen Fehlers nicht ausgeführt werden (defektes Speichermedium, Fehler im Dateisystem, usw.). Erst wenn dieser Fehler behoben ist, können weitere Aufträge ausgeführt werden.
ConfigurationTaskException - Der Auftrag, der durch die Konfiguration ausgeführt werden sollte, konnte nicht durchgeführt werden, weil bestimmte Parameter nicht erfüllt waren. Welche Parameter dies genau sind, hängt vom jeweiligen Auftrag ab, so kann zum Beispiel ein Passwort fehlerhaft gewesen sein oder der Benutzer besitzt nicht die nötigen Rechte um einen Auftrag dieser Art anzustoßen. Wenn der Auftrag erneut übermittelt werden würden, mit den richtigen Parametern, könnte er ausgeführt werden.