public class ConfigAuthentication extends java.lang.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.
Modifier and Type | Class and Description |
---|---|
private class |
ConfigAuthentication.ConfigAuthenticationEntityResolver
Implementierung eines EntityResolvers, der Referenzen auf den Public-Identifier “-//K2S//DTD Verwaltung//DE” ersetzt durch die verwaltungsdaten.dtd Resource-Datei in diesem Package.
|
private class |
ConfigAuthentication.SingleServingPassword
Speichert alle Informationen zu einem “Einmal-Passwort” (Passwort, Index, “schon gebraucht”)
|
private class |
ConfigAuthentication.UserAccount
Diese Klasse Speichert alle Informationen, die zu Benutzerkonto gehören.
|
Modifier and Type | Field and Description |
---|---|
private DataModel |
_dataModel
Wird benötigt um bei den entsprechenden Konfigurationsbereichen neue Benutzer anzulegen
|
private static Debug |
_debug
DebugLogger für Debug-Ausgaben
|
private FileLock |
_lockAuthenticationFile |
private java.util.LinkedList<java.lang.String> |
_randomText
Diese Liste speichert alle Texte, die mit
getText() erzeugt wurden. |
private static java.lang.String |
_secretToken
Geheimer Zufallstext, der für die Erzeugung von Fake-Verifiern benutzt wird
|
private java.net.URI |
_uriBase
Speichert die Basis der Verzeichnisse für die Konfigurationsbereiche.
|
private java.util.Map<java.lang.String,ConfigAuthentication.UserAccount> |
_userAccounts
Als Schlüssel dient der Benutzername (String) als Value werden alle Informationen, die zu einem Benutzer gespeichert wurden, zurückgegeben.
|
private org.w3c.dom.Document |
_xmlDocument
Repräsentiert die vollständige XML-Datei.
|
private java.io.File |
_xmlFile
XML-Datei, wird zum anlagen einer Sicherheitskopie gebraucht
|
Constructor and Description |
---|
ConfigAuthentication(java.io.File userFile,
DataModel dataModel)
Lädt alle Informationen aus der angegebenen Datei.
|
Modifier and Type | Method and Description |
---|---|
void |
changeUserPassword(java.lang.String username,
java.lang.String userNameForPasswordChange,
java.lang.String newPassword)
Setzt bei einem Benutzer das Passwort neu.
|
void |
changeUserRights(java.lang.String username,
java.lang.String usernameChangeRights,
boolean newUserRights) |
private void |
checkRandomText(byte[] randomText)
Prüft, ob der übergebene Text in der Liste der zufällig erzeugten Texte
_randomText vorhanden ist. |
void |
clearSingleServingPasswords(java.lang.String orderer,
java.lang.String username)
Löscht für einen angegebenen Benutzer alle Einmalpasswörter bzw. markiert diese als ungültig.
|
void |
close()
Diese Methode wird aufgerufen, wenn das System heruntergefahren wird.
|
int |
countRemainingSingleServingPasswords(java.lang.String orderer,
java.lang.String username)
Zählt die verbleibenden Einmalpasswörter für einen angegeben Benutzer.
|
void |
createBackupFile(java.io.File targetDirectory)
Sicher die Benutzerverwaltungsdatei in das angegebene Verzeichnis
|
void |
createNewUser(java.lang.String usernameCustomer,
Deserializer deserializer)
Erstellt einen neuen Benutzer
|
void |
createNewUser(java.lang.String username,
java.lang.String newUserName,
java.lang.String newUserPid,
java.lang.String newUserPassword,
boolean admin,
java.lang.String configurationArea,
java.util.Collection<DataAndATGUsageInformation> data)
Legt einen neuen Benutzer mit den übergebenen Parametern an.
|
void |
createSingleServingPassword(java.lang.String username,
java.lang.String usernameSingleServingPasswort,
java.lang.String passwortSingleServingPasswort) |
private void |
createUserObject(java.lang.String pidConfigurationArea,
java.lang.String username,
java.lang.String pid,
java.util.Collection<DataAndATGUsageInformation> data)
Erzeugt ein Objekt vom Typ “typ.Benutzer”.
|
private void |
createUserXML(java.lang.String newUserName,
java.lang.String newUserPassword,
boolean admin)
Erzeugt einen neuen Benutzer im speicher und speichert diesen in einer XML-Datei.
|
private org.w3c.dom.Element |
createXMLSingleServingPasswort(java.lang.String newPassword,
int passwortindex,
java.lang.String usable)
Erzeugt ein XML Objekt, das einem Einmal-Passwort entspricht.
|
private org.w3c.dom.Element |
createXMLUserAccount(java.lang.String name,
java.lang.String password,
java.lang.String admin)
Erzeugt ein XML Objekt, das einem Benutzerkonto entspricht.
|
void |
deleteUser(java.lang.String username,
java.lang.String userToDelete)
Löscht einen angegebenen Benutzer.
|
private void |
deleteUserObject(java.lang.String userToDelete)
Entfernt das dynamische Benutzerobjekt aus dem Datenmodell
|
private void |
deleteUserXML(java.lang.String userToDelete)
Löscht einen Benutzer aus der XML-Datei
|
void |
disableSingleServingPassword(java.lang.String authenticatedUser,
java.lang.String usernamePassword,
int passwordIndex)
Markiert eine Einmalpasswort als ungültig
|
private static SrpVerifierData |
fakeVerifier(java.lang.String userName,
byte[] salt,
ClientCredentials clientCredentials) |
private SrpCryptoParameter |
getCryptoParameters() |
private Deserializer |
getDeserializer(byte[] encryptedMessage,
java.lang.String decryptenText,
java.lang.String authentificationProcessName)
Erzeugt einen Desirialisierer auf den mit den üblichen Methoden zugegriffen werden kann.
|
int[] |
getRemainingSingleServingPasswordIDs(java.lang.String orderer,
java.lang.String username)
Gibt die verbleibenden gültigen Einmalpasswort-IDs für einen angegeben Benutzer zurück.
|
private int |
getSerializerVersion(byte[] message)
Ließt aus einem Byte-Array die ersten 4 Bytes aus und erzeugt daraus die benutztes Serializerversion
|
SrpVerifierAndUser |
getSrpVerifierData(java.lang.String authenticatedUser,
java.lang.String userName,
int passwordIndex)
Gibt die dem angegebenen Benutzer den gespeicherten SRP-Überprüfungscode (Verifier, v) zurück, mit dem jemand überprüfen kann, ob der Benutzer sein Passwort weiß, ohne das der überprüfende selbst das Passwort wissen muss.
|
byte[] |
getText()
Deprecated.
|
private SrpVerifierAndUser |
getVerifier(java.lang.String userName,
UserLogin userLogin,
int passwordIndex) |
private boolean |
isAdmin(java.lang.String username)
Prüft ob der Benutzer Admin-Rechte besitzt.
|
private EncryptDecryptProcedure |
isEncryptDecryptProcedureAllowed(java.lang.String usedEncryptDecryptProcedure)
Prüft, ob das Verfahren, das zum ver/entschlüsseln benutzt wurde, zugelassen ist.
|
boolean |
isUser(java.lang.String userToCheck)
Prüft, ob ein Benutzer existiert
|
boolean |
isUserAdmin(java.lang.String orderer,
java.lang.String userToCheck)
Prüft ob ein Benutzer Adminrechte hat.
|
void |
isValidUser(java.lang.String username,
byte[] encryptedPassword,
java.lang.String authentificationText,
java.lang.String authentificationProcessName)
Deprecated.
|
int |
processTask(java.lang.String usernameCustomer,
byte[] encryptedMessage,
java.lang.String authentificationProcessName)
Deprecated.
|
private java.util.Collection<DataAndATGUsageInformation> |
readDataAndATGUsageInformation(Deserializer deserializer)
Hilfsmethode die eine
Collection<DataAndATGUsageInformation> aus einem Deserializer deserialisiert. |
private void |
readUserAccounts()
Ließt alle Benutzer aus der XML-Datei ein und erzeugt entsprechende Java-Objekte.
|
private byte[] |
removeFirst4Bytes(byte[] byteArray)
Entfernt die ersten 4 Bytes eines Byte-Arrays und gibt ein neues Array zurück, bei dem genau die ersten 4 Bytes fehlen.
|
private void |
saveXMLFile()
Speichert alle Benutzerdaten in einer XML-Datei.
|
private byte[] |
secretHash(java.lang.String userName,
int passwordIndex) |
int |
setOneTimePasswords(java.lang.String authenticatedUser,
java.lang.String usernamePassword,
java.util.List<java.lang.String> passwords,
boolean append) |
java.lang.String |
toString() |
private boolean |
userHasObject(java.lang.String username,
java.lang.String pid)
Prüft, ob es zu der Kombination Benutzername und Pid ein gültiges Objekt gibt.
|
private final java.util.Map<java.lang.String,ConfigAuthentication.UserAccount> _userAccounts
Als Schlüssel dient der Benutzername (String) als Value werden alle Informationen, die zu einem Benutzer gespeichert wurden, zurückgegeben.
private final java.io.File _xmlFile
XML-Datei, wird zum anlagen einer Sicherheitskopie gebraucht
private static final Debug _debug
DebugLogger für Debug-Ausgaben
private final org.w3c.dom.Document _xmlDocument
Repräsentiert die vollständige XML-Datei.
private java.net.URI _uriBase
Speichert die Basis der Verzeichnisse für die Konfigurationsbereiche.
private final java.util.LinkedList<java.lang.String> _randomText
Diese Liste speichert alle Texte, die mit getText()
erzeugt wurden. Die Texte werden immer an das Ender der Liste eingefügt. Wird ein Text empfangen, wird dieser aus der Liste gelöscht.
Erreicht die eine bestimmte Größe, wird das erste Element gelöscht, da das erste Element am längsten in der Liste vorhanden ist.
Die Liste ist nicht synchronisiert.
private DataModel _dataModel
Wird benötigt um bei den entsprechenden Konfigurationsbereichen neue Benutzer anzulegen
private final FileLock _lockAuthenticationFile
private static final java.lang.String _secretToken
Geheimer Zufallstext, der für die Erzeugung von Fake-Verifiern benutzt wird
public ConfigAuthentication(java.io.File userFile, DataModel dataModel) throws javax.xml.parsers.ParserConfigurationException
Lädt alle Informationen aus der angegebenen Datei. Ist die Datei nicht vorhanden, wird eine Datei mit allen Grundeinstellungen erzeugt.
userFile
- XML-Datei, in der alle Benutzer gespeichert sind.javax.xml.parsers.ParserConfigurationException
private void readUserAccounts()
Ließt alle Benutzer aus der XML-Datei ein und erzeugt entsprechende Java-Objekte. Diese werden dann in der in der Hashtable gespeichert. Die Methode ist private, weil diese Funktionalität nur an dieser Stelle zur Verfügung gestellt werden soll.
@Deprecated public void isValidUser(java.lang.String username, byte[] encryptedPassword, java.lang.String authentificationText, java.lang.String authentificationProcessName) throws java.lang.Exception
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.
isValidUser
in interface Authentication
username
- Benutzername, der zu dem übergebenen verschlüsselten Passwort gehörtencryptedPassword
- Passwort, das mit dem übergebenen Text authentificationText
verschlüsselt wurdeauthentificationText
- Text, der benutzt wurde um das übergebene Passwort encryptedPassword
zu verschlüsselnauthentificationProcessName
- Name des Verschlüsslungsverfahren, das benutzt wurde. Mit diesem Verfahren wird das Originalpasswort verschlüsseltjava.lang.Exception
- Fehler beim schreiben der neuen Informationen oder ein technisches Problem beim verschlüsseln der Datenjava.lang.IllegalArgumentException
- Dem Benutzernamen konnte das Passwort nicht zugeordnet werden oder der Benutzer war unbekannt@Deprecated public byte[] getText()
Authentication
Erzeugt einen Zufallstext und gibt diesen als Byte-Array zurück.
getText
in interface Authentication
public void close()
Authentication
Diese Methode wird aufgerufen, wenn das System heruntergefahren wird. Es ist ein Zustand herzustellen, der es ermöglicht das System wieder zu starten.
close
in interface Authentication
private void checkRandomText(byte[] randomText) throws ConfigurationTaskException
Prüft, ob der übergebene Text in der Liste der zufällig erzeugten Texte _randomText
vorhanden ist. Kann der Text nicht gefunden werden, wird eine Exception geworfen. Konnte der Text gefunden werden, wird der Text aus der Liste entfernt.
randomText
- Text, der in der Liste der verschickten Texte zu finden sein mussConfigurationTaskException
- Der übergebene Text konnte in der Liste der verschickten Texte nicht gefunden werdenpublic java.lang.String toString()
toString
in class java.lang.Object
@Deprecated public int processTask(java.lang.String usernameCustomer, byte[] encryptedMessage, java.lang.String authentificationProcessName) throws RequestException, ConfigurationTaskException
Führt einen Auftrag der Benutzerverwaltung aus und entschlüsselt dabei das übergebene Byte-Array
processTask
in interface Authentication
usernameCustomer
- Benutzer, der den Auftrag erteiltencryptedMessage
- verschlüsselte Aufgabe, die ausgeführt werden sollauthentificationProcessName
- EntschlüsselungsverfahrenConfigAuthentication.UserAccount.NO_RESULT
(-1) falls die Aufgabe keine Rückgabe liefert.RequestException
- Fehler in der AnfrageConfigurationTaskException
- Fehler beim Ausführen der Anweisungpublic void createNewUser(java.lang.String usernameCustomer, Deserializer deserializer) throws ConfigurationTaskException, RequestException, java.io.IOException
Authentication
Erstellt einen neuen Benutzer
createNewUser
in interface Authentication
usernameCustomer
- Auftraggeberdeserializer
- Serialisierte Daten zu dem BenutzerConfigurationTaskException
RequestException
java.io.IOException
public boolean isUser(java.lang.String userToCheck)
Authentication
Prüft, ob ein Benutzer existiert
isUser
in interface Authentication
userToCheck
- Benutzernamepublic void clearSingleServingPasswords(java.lang.String orderer, java.lang.String username) throws java.io.FileNotFoundException, ConfigurationTaskException
Löscht für einen angegebenen Benutzer alle Einmalpasswörter bzw. markiert diese als ungültig. Nur ein Admin und der Benutzer selbst darf diese Aktion ausführen.
clearSingleServingPasswords
in interface Authentication
orderer
- Der Auftraggeber der Aktionusername
- Der Benutzer, dessen Einmalpasswörter gelöscht werden sollenjava.io.FileNotFoundException
ConfigurationTaskException
public int countRemainingSingleServingPasswords(java.lang.String orderer, java.lang.String username) throws java.io.FileNotFoundException, ConfigurationTaskException
Zählt die verbleibenden Einmalpasswörter für einen angegeben Benutzer. Nur ein Admin und der Benutzer selbst darf diese Aktion ausführen.
countRemainingSingleServingPasswords
in interface Authentication
orderer
- Der Auftraggeber der Aktionusername
- Der Benutzer, dessen Einmalpasswörter gezählt werden sollenjava.io.FileNotFoundException
ConfigurationTaskException
public int[] getRemainingSingleServingPasswordIDs(java.lang.String orderer, java.lang.String username) throws java.io.FileNotFoundException, ConfigurationTaskException
Gibt die verbleibenden gültigen Einmalpasswort-IDs für einen angegeben Benutzer zurück. Nur ein Admin und der Benutzer selbst darf diese Aktion ausführen.
getRemainingSingleServingPasswordIDs
in interface Authentication
orderer
- Der Auftraggeber der Aktionusername
- Der Benutzer, dessen Einmalpasswörter gezählt werden sollenjava.io.FileNotFoundException
ConfigurationTaskException
public boolean isUserAdmin(java.lang.String orderer, java.lang.String userToCheck) throws ConfigurationTaskException
Prüft ob ein Benutzer Adminrechte hat. Jeder Benutzer darf diese Aktion ausführen.
isUserAdmin
in interface Authentication
orderer
- Der Auftraggeber der Aktion. Wird in dieser Funktion derzeit nicht berücksichtigt, da jeder diese Abfrage ausführen darfuserToCheck
- Der Benutzer, dessen Rechte geprüft werden sollen.ConfigurationTaskException
- Der Auftrag kann nicht ausgeführt werden, weil der Benutzer nicht existiertprivate java.util.Collection<DataAndATGUsageInformation> readDataAndATGUsageInformation(Deserializer deserializer) throws java.io.IOException
Hilfsmethode die eine Collection<DataAndATGUsageInformation>
aus einem Deserializer deserialisiert.
deserializer
- Quelle der DatenCollection<DataAndATGUsageInformation>
mit den Daten aus dem Deserializerjava.io.IOException
ConfigurationArea.createDynamicObject(DynamicObjectType, String, String, Collection)
public void createSingleServingPassword(java.lang.String username, java.lang.String usernameSingleServingPasswort, java.lang.String passwortSingleServingPasswort) throws RequestException, ConfigurationTaskException
createSingleServingPassword
in interface Authentication
username
- Benutzer, der den Auftrag angestossen hatusernameSingleServingPasswort
- Benutzer für den das Einmal-Passwort gedacht istpasswortSingleServingPasswort
- Einmal-PasswortRequestException
- Technischer Fehler, der Auftrag konnte nicht bearbeitet werden.ConfigurationTaskException
- Die Konfiguration weigert sich den Auftrag auszuführen weil z.b. das Passwort falsch war, der Benutzer nicht die nötigen Rechte besitzt usw..private EncryptDecryptProcedure isEncryptDecryptProcedureAllowed(java.lang.String usedEncryptDecryptProcedure) throws ConfigurationTaskException
Prüft, ob das Verfahren, das zum ver/entschlüsseln benutzt wurde, zugelassen ist. Ist das Verfahren nicht zugelassen oder es kann nicht zugeordnet werden, wird eine ConfigurationTaskException geworfen.
usedEncryptDecryptProcedure
- Benutztes Verfahren als StringConfigurationTaskException
private boolean isAdmin(java.lang.String username)
Prüft ob der Benutzer Admin-Rechte besitzt.
username
- Benutzername, der geprüft werden soll ob Admin-Rechte vorhanden sindpublic void createNewUser(java.lang.String username, java.lang.String newUserName, java.lang.String newUserPid, java.lang.String newUserPassword, boolean admin, java.lang.String configurationArea, java.util.Collection<DataAndATGUsageInformation> data) throws ConfigurationTaskException, RequestException
Legt einen neuen Benutzer mit den übergebenen Parametern an.
createNewUser
in interface Authentication
username
- Benutzer, der den Auftrag erteiltnewUserName
- Name des neuen BenutzersnewUserPassword
- Passwort des neuen Benutzersadmin
- Rechte des neuen Benutzers (true = Adminrechte; false = normaler Benutzerrechte)newUserPid
- Pid, die der neue Benutzer erhalten soll. Wird ein Leerstring ("") übergeben, so bekommt der Benutzer keine expliziete PidconfigurationArea
- Pid des Konfigurationsbereichs, in dem der neue Benutzer angelegt werden solldata
- Konfigurierende Datensätze, die angelegt werden sollen (falls leere Liste oder null
werden keine Daten angelegt)ConfigurationTaskException
- Der neue Benutzer durfte nicht anglegt werden (Keine Rechte, Bentuzer bereits vorhanden)RequestException
- technischer Fehler beim Zugriff auf die XML-DateiConfigurationArea.createDynamicObject(DynamicObjectType, String, String, Collection)
private void createUserObject(java.lang.String pidConfigurationArea, java.lang.String username, java.lang.String pid, java.util.Collection<DataAndATGUsageInformation> data) throws ConfigurationChangeException
Erzeugt ein Objekt vom Typ “typ.Benutzer”.
pidConfigurationArea
- Pid des Konfiguratinsbereichs, in dem der neue Benutzer angelegt werden sollusername
- Name des Objektspid
- Pid des Objektsdata
- Konfigurierende Datensätze, die angelegt werden sollen, oder null
falls keine angelgt werden sollenConfigurationChangeException
- Fehler beim Erzeugen des neuen Benutzersprivate void createUserXML(java.lang.String newUserName, java.lang.String newUserPassword, boolean admin) throws java.io.FileNotFoundException, javax.xml.transform.TransformerException
Erzeugt einen neuen Benutzer im speicher und speichert diesen in einer XML-Datei.
newUserName
- BenutzernamenewUserPassword
- Passwortadmin
- Adminrechte ja/neinjava.io.FileNotFoundException
javax.xml.transform.TransformerException
private boolean userHasObject(java.lang.String username, java.lang.String pid)
Prüft, ob es zu der Kombination Benutzername und Pid ein gültiges Objekt gibt. Ein gültiges Objekt bedeutet, dass Pid und Benutzername übereinstimmen.
username
- Benutzernamepid
- Pid des Benutzersjava.lang.IllegalStateException
- Es gibt ein Objekt mit der angegebenen Pid, aber der Name des Objekts ist anders, als der übergebene Nameprivate final int getSerializerVersion(byte[] message)
Ließt aus einem Byte-Array die ersten 4 Bytes aus und erzeugt daraus die benutztes Serializerversion
message
- Nachricht, die ersten 4 Bytes werden ausgelesenprivate final byte[] removeFirst4Bytes(byte[] byteArray)
Entfernt die ersten 4 Bytes eines Byte-Arrays und gibt ein neues Array zurück, bei dem genau die ersten 4 Bytes fehlen.
byteArray
- Array, aus dem die ersten 4 Bytes entfernt werdenpublic void changeUserPassword(java.lang.String username, java.lang.String userNameForPasswordChange, java.lang.String newPassword) throws ConfigurationTaskException, RequestException
Setzt bei einem Benutzer das Passwort neu. Dies kann entweder ein Admin bei einem anderen Benutzerkonto oder ein Benutzer bei seinem eigenen Benutzerkonto.
Ist für einen Benutzer nur das Objekt des Benutzers in der Konfiguration vorhanden, aber das Benutzerkonto fehlt, wird das Benutzerkonto mit createNewUser(java.lang.String, de.bsvrz.sys.funclib.dataSerializer.Deserializer)
angelegt. Das neue Benutzerkonto besitzt dabei keine Adminrechte. Das neue Benutzerkonto wird dabei das Passwort erhalten, das neu gesetzt werden sollte.
Gibt es zwar ein Benutzerkonto, aber kein Objekt in der Konfiguration, wird ein Fehler ausgegeben.
Sind weder Objekt noch Benutzerkonto vorhanden wird ein Fehler ausgegeben.
changeUserPassword
in interface Authentication
username
- Benutzer, der den Auftrag zum ändern des Passworts erteilt hatuserNameForPasswordChange
- Benutzer, dessen Passwort geändert werden sollnewPassword
- neues PasswortConfigurationTaskException
- Der Benutzer ist unbekannt oder es gibt zu dem Benutzer kein entsprechendes Objekt oder der Benutzer darf das Passwort nicht ändern (kein Admin oder der Besitzer des Passwords).RequestException
- Fehler beim Zugriff auf die XML-Dateipublic void changeUserRights(java.lang.String username, java.lang.String usernameChangeRights, boolean newUserRights) throws ConfigurationTaskException, RequestException
changeUserRights
in interface Authentication
username
- Benutzer, der den Auftrag erteilt hat (dieser muss Adminrechte besitzen)usernameChangeRights
- Benutzer, dessen Rechte geändert werden sollnewUserRights
- Neue Rechte des Benutzers (true = Admin-Rechte, false = normaler BenutzerrechteConfigurationTaskException
- Der Benutzer ist unbekannt oder der Auftraggeber besitzt nicht die nötigen RechteRequestException
- Fehler beim Zugriff auf die XML-Dateiprivate final Deserializer getDeserializer(byte[] encryptedMessage, java.lang.String decryptenText, java.lang.String authentificationProcessName) throws java.lang.Exception
Erzeugt einen Desirialisierer auf den mit den üblichen Methoden zugegriffen werden kann. Dafür wird der übergebene, verschlüsselte Text entschlüsselt.
encryptedMessage
- Verschlüsselte Nachricht, diese wird entschlüsseltdecryptenText
- Text, mit dem die verschlüsselte Nachricht entschlüsselt wirdauthentificationProcessName
- Verfahren, mit dem die Nachricht verschlüsselt wurdejava.lang.Exception
- Fehler beim entschlüsseln oder beim erstellen des Desirialisiererspublic void deleteUser(java.lang.String username, java.lang.String userToDelete) throws RequestException, ConfigurationTaskException
Löscht einen angegebenen Benutzer. Diese Aktion kann nur von Administratoren ausgeführt werden.
deleteUser
in interface Authentication
username
- Veranlasser der AktionuserToDelete
- Benutzername des Benutzers, der gelöscht werden sollRequestException
- Das Löschen kann aufgrund eines Problems nicht durchgeführt werdenConfigurationTaskException
- Die Anfrage ist fehlerhaft weil der Veranlasser nicht die nötigen Rechte hat oder der zu löschende Benutzer nicht existiertpublic SrpVerifierAndUser getSrpVerifierData(java.lang.String authenticatedUser, java.lang.String userName, int passwordIndex) throws ConfigurationTaskException
Authentication
Gibt die dem angegebenen Benutzer den gespeicherten SRP-Überprüfungscode (Verifier, v) zurück, mit dem jemand überprüfen kann, ob der Benutzer sein Passwort weiß, ohne das der überprüfende selbst das Passwort wissen muss.
getSrpVerifierData
in interface Authentication
authenticatedUser
- Benutzer, der die Anfrage durchführt. Die Anfrage dürfen nur Administratioren durchführen, andere Benutzer dürfen nur für sich selbst den Verifier abfragen.userName
- Benutzername, dessen SRP-Verifier abgefragt wirdConfigurationTaskException
public int setOneTimePasswords(java.lang.String authenticatedUser, java.lang.String usernamePassword, java.util.List<java.lang.String> passwords, boolean append) throws ConfigurationTaskException, RequestException
setOneTimePasswords
in interface Authentication
authenticatedUser
- Benutzer, der den Auftrag angestossen hatusernamePassword
- Benutzer für den die Einmal-Passwörter gedacht sundpasswords
- Einmal-Passwörterappend
- Passwörter anhängen (falls nicht, bestehende Passwörter vorher löschen)ConfigurationTaskException
- Die Konfiguration weigert sich den Auftrag auszuführen weil z.b. das Passwort falsch war, der Benutzer nicht die nötigen Rechte besitzt usw..RequestException
- Technischer Fehler, der Auftrag konnte nicht bearbeitet werden.public void disableSingleServingPassword(java.lang.String authenticatedUser, java.lang.String usernamePassword, int passwordIndex) throws ConfigurationTaskException, RequestException
Authentication
Markiert eine Einmalpasswort als ungültig
disableSingleServingPassword
in interface Authentication
authenticatedUser
- Authentifizierter BenutzerusernamePassword
- Benutzer, dssen Passwort als ungültig markiert werden sollpasswordIndex
- Index des EinmalpasswortsConfigurationTaskException
RequestException
private SrpVerifierAndUser getVerifier(java.lang.String userName, UserLogin userLogin, int passwordIndex)
private static SrpVerifierData fakeVerifier(java.lang.String userName, byte[] salt, ClientCredentials clientCredentials)
private byte[] secretHash(java.lang.String userName, int passwordIndex)
private SrpCryptoParameter getCryptoParameters()
private void deleteUserXML(java.lang.String userToDelete) throws javax.xml.transform.TransformerException, java.io.FileNotFoundException
Löscht einen Benutzer aus der XML-Datei
userToDelete
- Benutzer, der gelöscht werden solljavax.xml.transform.TransformerException
- Fehler beim XML-Zugriffjava.io.FileNotFoundException
- XMl-Datei nciht gefundenprivate void deleteUserObject(java.lang.String userToDelete) throws ConfigurationChangeException
Entfernt das dynamische Benutzerobjekt aus dem Datenmodell
userToDelete
- Benutzer, der gelöscht werden sollConfigurationChangeException
- Fehler beim durchführen der Aktionprivate void saveXMLFile() throws javax.xml.transform.TransformerException, java.io.FileNotFoundException
Speichert alle Benutzerdaten in einer XML-Datei.
javax.xml.transform.TransformerException
java.io.FileNotFoundException
public void createBackupFile(java.io.File targetDirectory) throws java.io.IOException
Sicher die Benutzerverwaltungsdatei in das angegebene Verzeichnis
targetDirectory
- Zielverzeichnisjava.io.IOException
- IO-Fehlerprivate org.w3c.dom.Element createXMLSingleServingPasswort(java.lang.String newPassword, int passwortindex, java.lang.String usable)
Erzeugt ein XML Objekt, das einem Einmal-Passwort entspricht.
newPassword
- Passwort des neuen Einmal-Passwortspasswortindex
- Index des Einmal-Passwortsusable
- ja = Das Einmal-Passwort ist noch zu benutzen; nein = Das Einmal-Passwort kann nicht mehr benutzt werdenprivate org.w3c.dom.Element createXMLUserAccount(java.lang.String name, java.lang.String password, java.lang.String admin)
Erzeugt ein XML Objekt, das einem Benutzerkonto entspricht. Einmal-Passwörter müssen mit der entsprechenden Methode erzeugt werden.
name
- Name des Benutzerspassword
- Passwort des Benutzers (in Klarschrift)admin
- ja = Der Benutzer besitzt Admin-Rechte; nein = Der Benutzer besitzt keine Admin-Rechte