private final class ConfigAuthentication.UserAccount
extends java.lang.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
Modifier and Type | Field and Description |
---|---|
private boolean |
_admin
true = Der Benutzer ist ein Admin und darf Einstellungen bei anderen Benutzern vornehmen
|
private java.util.Set<java.lang.String> |
_allSingleServingPasswords
Speichert alle Einmal-Passwörter .
|
private int |
_greatestSingleServingPasswordIndex
Speichert den größten Index, der bisher für ein Einmal-Passwort benutzt wurde.
|
private java.util.Collection<ConfigAuthentication.SingleServingPassword> |
_usableSingleServingPasswords
Liste, die alle benutzbaren Einmalpasswörter enthält.
|
private java.lang.String |
_username
Benutzername des Accounts
|
private org.w3c.dom.Element |
_xmlObject
XML-Objekt, dieses muss zuerst verändert und gespeichert werden, bevor die Objekte im Speicher geändert werden
|
private java.lang.String |
_xmlVerifierText
Passwort oder SRP-Überprüftungscode, so wie er in der Datei steht
|
private static int |
NO_RESULT |
Constructor and Description |
---|
UserAccount(java.lang.String username,
java.lang.String xmlPassword,
boolean admin,
java.util.List<ConfigAuthentication.SingleServingPassword> allSingleServingPasswords,
org.w3c.dom.Element xmlObject) |
Modifier and Type | Method and Description |
---|---|
void |
clearSingleServingPasswords()
Löscht alle Einmalpasswörter eines Benutzers und markiert diese als ungültig
|
int |
countSingleServingPasswords()
Gibt die Anzahl der verbleidenden, gültigen Einmalpasswörter zurück
|
void |
createNewSingleServingPassword(java.lang.String newPassword)
Erzeugt ein neues Einmal-Passwort.
|
int |
createNewSingleServingPasswords(java.util.List<java.lang.String> passwords,
boolean append) |
void |
disableSingleServingPassword(int passwordIndex)
Deaktiviert ein Einmalpasswort
|
ClientCredentials |
getClientCredentials()
Deprecated.
In der Übergangsphase kann in der XML-Datei noch ein Klartextpasswort drin stehen
|
ClientCredentials |
getClientCredentials(int passwordIndex)
Deprecated.
In der Übergangsphase kann in der XML-Datei noch ein Klartextpasswort drin stehen
|
SrpVerifierData |
getSrpVerifier()
Gibt den SRP-Überprüfungscode des Standardpassworts zurück
|
SrpVerifierData |
getSrpVerifier(int passwordIndex)
Gibt den SRP-Überprüfungscode zurück
|
int[] |
getUsableIDs()
Gibt die IDs der benutzbaren Einmalpasswörter zurück
|
java.lang.String |
getUsername()
Benutzername
|
private java.lang.String |
getXmlVerifierText(int passwordIndex)
Gibt das Passwort oder den Verifier als Rohdatum mit dem angegebenen Index zurück
|
boolean |
isAdmin() |
void |
setAdminRights(boolean adminRights)
Legt fest, ob ein Benutzer Admin-Rechte besitzt.
|
void |
setXmlVerifierText(java.lang.String xmlVerifierText)
Ändert das Passwort und speichert das neue Passwort in einer XML-Datei
|
void |
useSingleServingPassword(byte[] encryptedPassword,
java.lang.String authentificationText,
java.lang.String authentificationProcessName)
Versucht ein Einmal-Passwort zu benutzen.
|
private final java.lang.String _username
Benutzername des Accounts
private java.lang.String _xmlVerifierText
Passwort oder SRP-Überprüftungscode, so wie er in der Datei steht
private boolean _admin
true = Der Benutzer ist ein Admin und darf Einstellungen bei anderen Benutzern vornehmen
private final java.util.Collection<ConfigAuthentication.SingleServingPassword> _usableSingleServingPasswords
Liste, die alle benutzbaren Einmalpasswörter enthält.
private final java.util.Set<java.lang.String> _allSingleServingPasswords
Speichert alle Einmal-Passwörter . 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. Dadurch wird verhindert, dass ein Passwort oder Überprüfungscode doppelt verwendet wird.
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.
private final org.w3c.dom.Element _xmlObject
XML-Objekt, dieses muss zuerst verändert und gespeichert werden, bevor die Objekte im Speicher geändert werden
private static final int NO_RESULT
public UserAccount(java.lang.String username, java.lang.String xmlPassword, boolean admin, java.util.List<ConfigAuthentication.SingleServingPassword> allSingleServingPasswords, org.w3c.dom.Element xmlObject)
username
- BenutzernamexmlPassword
- Passwort, wie es in der XML-Datei gespeichert wurdeadmin
- Ob der Benutzer Admin_Rechte hatallSingleServingPasswords
- Alle Einmal-PasswörterxmlObject
- XML-Objekt, aus dem die obigen Daten ausgelesen wurdenpublic java.lang.String getUsername()
Benutzername
@Deprecated public ClientCredentials getClientCredentials()
Unverschlüsseltes Passwort des Benutzers
@Deprecated public ClientCredentials getClientCredentials(int passwordIndex)
Unverschlüsseltes Passwort des Benutzers
passwordIndex
- public SrpVerifierData getSrpVerifier()
Gibt den SRP-Überprüfungscode des Standardpassworts zurück
java.lang.IllegalArgumentException
- Bei einem String, der nicht dem erwarteten Format entspricht (also wenn es sich bspw. um ein Klartextpasswort handelt(public SrpVerifierData getSrpVerifier(int passwordIndex)
Gibt den SRP-Überprüfungscode zurück
passwordIndex
- Passwort-Index (-1 für Standardpasswort)java.lang.IllegalArgumentException
- Bei einem String, der nicht dem erwarteten Format entspricht (also wenn es sich bspw. um ein Klartextpasswort handelt(public void setXmlVerifierText(java.lang.String xmlVerifierText) throws java.io.FileNotFoundException, javax.xml.transform.TransformerException
Ändert das Passwort und speichert das neue Passwort in einer XML-Datei
xmlVerifierText
- Neues Passwortjava.io.FileNotFoundException
javax.xml.transform.TransformerException
public boolean isAdmin()
public void setAdminRights(boolean adminRights) throws java.io.FileNotFoundException, javax.xml.transform.TransformerException
Legt fest, ob ein Benutzer Admin-Rechte besitzt. Die Änderung wird sofort in der XML-Datei gespeichert.
adminRights
- true = Der Benutzer besitzt Admin Rechte; false = Der Benutzer besitzt keine Admin-Rechtejava.io.FileNotFoundException
javax.xml.transform.TransformerException
public void createNewSingleServingPassword(java.lang.String newPassword) throws ConfigurationTaskException, RequestException
Erzeugt ein neues Einmal-Passwort. Der Index wird automatisch angepasst.
newPassword
- Passwort des Einmal-PasswortsRequestException
- Fehler beim Speichern des neuen Passworts, das Passwort wurde nicht angelegt.ConfigurationTaskException
- Das Passwort wurde bereits vergeben, es wurde kein neues Passwort angelegt.public int createNewSingleServingPasswords(java.util.List<java.lang.String> passwords, boolean append) throws ConfigurationTaskException, RequestException
public void useSingleServingPassword(byte[] encryptedPassword, java.lang.String authentificationText, java.lang.String authentificationProcessName) throws java.security.NoSuchAlgorithmException, java.io.UnsupportedEncodingException, java.security.InvalidKeyException, java.io.FileNotFoundException, javax.xml.transform.TransformerException
Versucht ein Einmal-Passwort zu benutzen. Ist dies möglich, wird das Einmal-Passwort als gebraucht markiert. Wurde eine falsches Passwort übergeben, so wird eine Exception geworfen.
encryptedPassword
- Einmal-Passwort, das vom Benutzer eingegeben wurdeauthentificationText
- Text mit dem das Einmal-Passwort verschlüsselt wurdeauthentificationProcessName
- Name des benutzten Verschlüsselungsverfahrenjava.lang.IllegalArgumentException
- Falsches Einmal-Passwortjava.security.NoSuchAlgorithmException
- Unbekanntes Verschlüsselungsverfahrenjava.io.UnsupportedEncodingException
java.security.InvalidKeyException
java.io.FileNotFoundException
javax.xml.transform.TransformerException
public void clearSingleServingPasswords() throws javax.xml.transform.TransformerException, java.io.FileNotFoundException
Löscht alle Einmalpasswörter eines Benutzers und markiert diese als ungültig
javax.xml.transform.TransformerException
java.io.FileNotFoundException
public int countSingleServingPasswords()
Gibt die Anzahl der verbleidenden, gültigen Einmalpasswörter zurück
private java.lang.String getXmlVerifierText(int passwordIndex)
Gibt das Passwort oder den Verifier als Rohdatum mit dem angegebenen Index zurück
passwordIndex
- Index (falls -1 wird das normale Passwort zurückgegeben, sonst ein Einmalpasswort mit angegebenem Index)public void disableSingleServingPassword(int passwordIndex) throws RequestException
Deaktiviert ein Einmalpasswort
passwordIndex
- IndexRequestException
public int[] getUsableIDs()
Gibt die IDs der benutzbaren Einmalpasswörter zurück