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

java.lang.Object
  extended by de.bsvrz.puk.config.main.authentication.ConfigAuthentication.UserAccount
Enclosing class:
ConfigAuthentication

private final class ConfigAuthentication.UserAccount
extends Object

Diese Klasse Speichert alle Informationen, die zu Benutzerkonto gehören. Dies beinhaltet:

Benutzername

Benutzerpasswort

Adminrechte

Liste von Einmal-Passwörtern (siehe TPuK1-130)

Sollen Änderungen an einem dieser Informationen vorgenommen werden, führt dies erst dazu, dass die Daten persistent in einer XML-Datei gespeichert werden. Ist dies erfolgreich, wird die Änderung auch an den Objekten durchgeführt. Kann die Änderungen nicht gespeichert werden, wird ein entsprechender Fehler ausgegeben und die Änderung nicht durchgeführt


Field Summary
private  boolean _admin
          true = Der Benutzer ist ein Admin und darf Einstellungen bei anderen Benutzern vornehmen
private  Set<String> _allSingleServingPasswords
          Speichert alle Passwörter der Einmal-Passwörter (Als Schlüssel dient das Passwort in Klarschrift).
private  int _greatestSingleServingPasswordIndex
          Speichert den größten Index, der bisher für ein Einmal-Passwort benutzt wurde.
private  String _password
          Passwort des Accounts in Klarschrift
private  LinkedList<ConfigAuthentication.SingleServingPassword> _usableSingleServingPasswords
          Liste, die alle benutzbaren Einmalpasswörter enthält.
private  String _username
          Benutzername des Accounts
private  Element _xmlObject
          XML-Objekt, dieses muss zuerst verändert und gespeichert werden, bevor die Objekte im Speicher geändert werden
 
Constructor Summary
ConfigAuthentication.UserAccount(String username, String xmlPassword, boolean admin, List<ConfigAuthentication.SingleServingPassword> allSingleServingPasswords, Element xmlObject)
           
 
Method Summary
 void createNewSingleServingPassword(String newPassword)
          Erzeugt ein neues Einmal-Passwort.
 String getPassword()
          Unverschlüsseltes Passwort des Benutzers
 String getUsername()
          Benutzername
 boolean isAdmin()
           
 void setAdminRights(boolean adminRights)
          Legt fest, ob ein Benutzer Admin-Rechte besitzt.
 void setPassword(String password)
          Ändert das Passwort und speichert das neue Passwort in einer XML-Datei
 void useSingleServingPassword(byte[] encryptedPassword, String authentificationText, String authentificationProcessName)
          Versucht ein Einmal-Passwort zu benutze.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_username

private final String _username
Benutzername des Accounts


_password

private String _password
Passwort des Accounts in Klarschrift


_admin

private boolean _admin
true = Der Benutzer ist ein Admin und darf Einstellungen bei anderen Benutzern vornehmen


_usableSingleServingPasswords

private final LinkedList<ConfigAuthentication.SingleServingPassword> _usableSingleServingPasswords
Liste, die alle benutzbaren Einmalpasswörter enthält. An Index 0 steht immer das als nächstes zu benutzende Passwort. Am Ende der Liste wird jedes neue Passwort eingefügt. Wird ein Passwort benutzt, wird das Passwort vom Anfang der Liste entfernt (FIFO).


_allSingleServingPasswords

private final Set<String> _allSingleServingPasswords
Speichert alle Passwörter der Einmal-Passwörter (Als Schlüssel dient das Passwort in Klarschrift). Soll ein neues Einmal-Passwort erzeugt werden, und das Passwort befindet sich bereits in dieser Menge, dann darf das neue Einmal-Passwort nicht angelegt werden.


_greatestSingleServingPasswordIndex

private int _greatestSingleServingPasswordIndex
Speichert den größten Index, der bisher für ein Einmal-Passwort benutzt wurde. Das nächste Einmal-Passwort hätte als Index "_greatestSingleServingPasswordIndex++".

Wird mit -1 initialisiert. Das erste Passwort erhält also Index 0.

Der Wert wird im Konstruktor, falls Einmal-Passwörter vorhanden sind, auf den größten vergebenen Index gesetzt.


_xmlObject

private final Element _xmlObject
XML-Objekt, dieses muss zuerst verändert und gespeichert werden, bevor die Objekte im Speicher geändert werden

Constructor Detail

ConfigAuthentication.UserAccount

public ConfigAuthentication.UserAccount(String username,
                                        String xmlPassword,
                                        boolean admin,
                                        List<ConfigAuthentication.SingleServingPassword> allSingleServingPasswords,
                                        Element xmlObject)
Parameters:
username - Benutzername
xmlPassword - Passwort, wie es in der XML-Datei gespeichert wurde
allSingleServingPasswords - Alle Einmal-Passwörter
xmlObject - XML-Objekt, aus dem die obigen Daten ausgelesen wurden
Method Detail

getUsername

public String getUsername()
Benutzername

Returns:
s.o.

getPassword

public String getPassword()
Unverschlüsseltes Passwort des Benutzers

Returns:
s.o.

setPassword

public void setPassword(String password)
                 throws FileNotFoundException,
                        TransformerException
Ändert das Passwort und speichert das neue Passwort in einer XML-Datei

Parameters:
password - Neues Passwort
Throws:
FileNotFoundException
TransformerException

isAdmin

public boolean isAdmin()
Returns:
true = Der Benutzer darf die Eigenschaften anderer Benutzer ändern; false = Der Benutzer darf nur sein Passwort ändern

setAdminRights

public void setAdminRights(boolean adminRights)
                    throws FileNotFoundException,
                           TransformerException
Legt fest, ob ein Benutzer Admin-Rechte besitzt. Die Änderung wird sofort in der XML-Datei gespeichert.

Parameters:
adminRights - true = Der Benutzer besitzt Admin Rechte; false = Der Benutzer besitzt keine Admin-Rechte
Throws:
FileNotFoundException
TransformerException

createNewSingleServingPassword

public void createNewSingleServingPassword(String newPassword)
                                    throws ConfigurationTaskException,
                                           RequestException
Erzeugt ein neues Einmal-Passwort. Der Index wird automatisch angepaßt.

Parameters:
newPassword - Passwort des Einmal-Passworts
Throws:
RequestException - Fehler beim Speichern des neuen Passworts, das Passwort wurde nicht angelegt.
ConfigurationTaskException - Das Passwort wurde bereits vergeben, es wurde kein neues Passwort angelegt.

useSingleServingPassword

public void useSingleServingPassword(byte[] encryptedPassword,
                                     String authentificationText,
                                     String authentificationProcessName)
                              throws NoSuchAlgorithmException,
                                     UnsupportedEncodingException,
                                     InvalidKeyException,
                                     FileNotFoundException,
                                     TransformerException
Versucht ein Einmal-Passwort zu benutze. Ist dies möglich, wird das Einmal-Passwort als gebraucht markiert. Wurde eine falsches Einmal-Passwort übergeben, so wird eine Exception geworfen.

Parameters:
encryptedPassword - Einmal-Passwort, das vom Benutzer eingegeben wurde
authentificationText - Text mit dem das Einmal-Passwort verschlüsselt wurde
authentificationProcessName - Name des benutzten Verschlüsslungsverfahrens
Throws:
IllegalArgumentException - Falsches Einmal-Passwort
NoSuchAlgorithmException - Unbekantes Verschlüsslungsverfahren
UnsupportedEncodingException
InvalidKeyException
FileNotFoundException
TransformerException