de.bsvrz.puk.config.main.authentication
Interface Authentication

All Known Implementing Classes:
ConfigAuthentication

public interface Authentication

Dieses Interface stellt Methoden zur Verfügung, mit der sich ein Benutzer Authentifizieren und Verwaltungsaufgaben anstossen kann.

Die Methode isValidUser(java.lang.String, byte[], java.lang.String, java.lang.String) prüft ob eine übergebene Benutzer/Passwort kombination gültig ist.

Die Methode processTask(java.lang.String, byte[], java.lang.String) beauftragt die Konfiguration eine der folgenden Aufträge auszuführen:
- Neuer Benutzer anlegen
- Einmal-Passwort erzeugen
- Rechte eines Benutzers ändern
- Passwort eines Benuzters ändern

Alle Informationen die für die oben genannten Aufgaben benötigt werden, werden verschlüsselt übertragen.

Die Methode getText() liefert einen Zufallstext. Der Zufallstext wird beöntigt um "Reply-Attacken" (verschicken von Kopien bestimmter Telegramme) zu verhindern. Dieser Text muss in allen Telegrammen, die für die processTask(java.lang.String, byte[], java.lang.String) Methode benötigt werden, verschlüsselt übertragen werden. Danach darf der verschlüsselt übertragenen Text nicht mehr für andere Aufgaben funktionieren.

Author:
Achim Wullenkord (AW), Kappich Systemberatung

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 encryptionProcessName)
          Bearbeitet eine der folgenden Aufgaben:
- Neuer Benutzer anlegen
- Einmal-Passwort erzeugen
- Rechte eines Benutzers ändern
- Passwort eines Benuzters ändern
 

Method Detail

isValidUser

void isValidUser(String username,
                 byte[] encryptedPassword,
                 String authentificationText,
                 String authentificationProcessName)
                 throws Exception,
                        IllegalArgumentException
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.

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

processTask

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

Parameters:
usernameCustomer - Benutzer, der den Auftrag erteilt
encryptedMessage - verschlüsselte Aufgabe, die ausgeführt werden soll
encryptionProcessName - Verschlüsslungsverfahren mit der encryptedMessage erstellt wurde
Throws:
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.
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.

getText

byte[] getText()
Erzeugt einen Zufallstext und gibt diesen als Byte-Array zurück.

Returns:
Zufallstext

close

void close()
Diese Methode wird aufgerufen, wenn das System heruntergefahren wird. Es ist ein Zustand herzustellen, der es ermöglicht das System wieder zu starten.