Class ConfigAuthentication
- All Implemented Interfaces:
Authentication
public class ConfigAuthentication extends java.lang.Object implements Authentication
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.
-
Constructor Summary
Constructors Constructor Description ConfigAuthentication(java.io.File userFile, de.bsvrz.dav.daf.main.config.DataModel dataModel)Lädt alle Informationen aus der angegebenen Datei. -
Method Summary
Modifier and Type Method Description voidchangeUserPassword(java.lang.String username, java.lang.String userNameForPasswordChange, java.lang.String newPassword)Setzt bei einem Benutzer das Passwort neu.voidchangeUserRights(java.lang.String username, java.lang.String usernameChangeRights, boolean newUserRights)voidclearSingleServingPasswords(java.lang.String orderer, java.lang.String username)Löscht für einen angegebenen Benutzer alle Einmalpasswörter bzw. markiert diese als ungültig.voidclose()Diese Methode wird aufgerufen, wenn das System heruntergefahren wird.intcountRemainingSingleServingPasswords(java.lang.String orderer, java.lang.String username)Zählt die verbleibenden Einmalpasswörter für einen angegeben Benutzer.voidcreateBackupFile(java.io.File targetDirectory)Sicher die Benutzerverwaltungsdatei in das angegebene VerzeichnisvoidcreateNewUser(java.lang.String usernameCustomer, de.bsvrz.sys.funclib.dataSerializer.Deserializer deserializer)Erstellt einen neuen BenutzervoidcreateNewUser(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<de.bsvrz.dav.daf.main.DataAndATGUsageInformation> data)Legt einen neuen Benutzer mit den übergebenen Parametern an.voidcreateSingleServingPassword(java.lang.String username, java.lang.String usernameSingleServingPasswort, java.lang.String passwortSingleServingPasswort)voiddeleteUser(java.lang.String username, java.lang.String userToDelete)Löscht einen angegebenen Benutzer.voiddisableSingleServingPassword(java.lang.String authenticatedUser, java.lang.String usernamePassword, int passwordIndex)Markiert eine Einmalpasswort als ungültigint[]getRemainingSingleServingPasswordIDs(java.lang.String orderer, java.lang.String username)Gibt die verbleibenden gültigen Einmalpasswort-IDs für einen angegeben Benutzer zurück.de.bsvrz.dav.daf.communication.srpAuthentication.SrpVerifierAndUsergetSrpVerifierData(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.de.bsvrz.dav.daf.communication.protocol.UserLogingetUserLogin(java.lang.String userName)de.bsvrz.dav.daf.main.config.SystemObjectgetUserObject(java.lang.String userName)Gibt zu einem Benutzernamen das Benutzerobjekt zurück, falls es existiert.booleanisUser(java.lang.String userToCheck)Prüft, ob ein Benutzer existiertbooleanisUserAdmin(java.lang.String orderer, java.lang.String userToCheck)Prüft ob ein Benutzer Adminrechte hat.voidisValidUser(java.lang.String username, byte[] encryptedPassword, java.lang.String authentificationText, java.lang.String authentificationProcessName)Deprecated.intprocessTask(java.lang.String usernameCustomer, byte[] encryptedMessage, java.lang.String authentificationProcessName)Deprecated.intsetOneTimePasswords(java.lang.String authenticatedUser, java.lang.String usernamePassword, java.util.List<java.lang.String> passwords, boolean append)java.lang.StringtoString()Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Constructor Details
-
ConfigAuthentication
public ConfigAuthentication(java.io.File userFile, de.bsvrz.dav.daf.main.config.DataModel dataModel) throws javax.xml.parsers.ParserConfigurationExceptionLä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:
javax.xml.parsers.ParserConfigurationException
-
-
Method Details
-
isValidUser
@Deprecated public void isValidUser(java.lang.String username, byte[] encryptedPassword, java.lang.String authentificationText, java.lang.String authentificationProcessName) throws java.lang.ExceptionDeprecated.Description copied from interface:AuthenticationDie Implementierung dieser Methode stellt die Authentifizierung des Benutzers sicher. Dafür wird das original Passwort mit dem übergebenenauthentificationTextverschlü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 Authentifikation 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:
isValidUserin interfaceAuthentication- Parameters:
username- Benutzername, der zu dem übergebenen verschlüsselten Passwort gehörtencryptedPassword- Passwort, das mit dem übergebenen TextauthentificationTextverschlüsselt wurdeauthentificationText- Text, der benutzt wurde um das übergebene PasswortencryptedPasswordzu verschlüsselnauthentificationProcessName- Name des Verschlüsslungsverfahren, das benutzt wurde. Mit diesem Verfahren wird das Originalpasswort verschlüsselt- Throws:
java.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
-
getText
@Deprecated public byte[] getText()Deprecated.Description copied from interface:AuthenticationErzeugt einen Zufallstext und gibt diesen als Byte-Array zurück.- Specified by:
getTextin interfaceAuthentication- Returns:
- Zufallstext
-
close
public void close()Description copied from interface:AuthenticationDiese Methode wird aufgerufen, wenn das System heruntergefahren wird. Es ist ein Zustand herzustellen, der es ermöglicht das System wieder zu starten.- Specified by:
closein interfaceAuthentication
-
toString
public java.lang.String toString()- Overrides:
toStringin classjava.lang.Object
-
processTask
@Deprecated public int processTask(java.lang.String usernameCustomer, byte[] encryptedMessage, java.lang.String authentificationProcessName) throws de.bsvrz.dav.daf.main.impl.config.request.RequestException, de.bsvrz.dav.daf.main.config.ConfigurationTaskExceptionDeprecated.Führt einen Auftrag der Benutzerverwaltung aus und entschlüsselt dabei das übergebene Byte-Array- Specified by:
processTaskin interfaceAuthentication- Parameters:
usernameCustomer- Benutzer, der den Auftrag erteiltencryptedMessage- verschlüsselte Aufgabe, die ausgeführt werden sollauthentificationProcessName- Entschlüsselungsverfahren- Returns:
- Die Rückgabe des ausgeführten Tasks (beispielsweise die Anzahl der verbleibenden Einmalpasswörter, falls danach gefragt wurde.
ConfigAuthentication.UserAccount.NO_RESULT(-1) falls die Aufgabe keine Rückgabe liefert. - Throws:
de.bsvrz.dav.daf.main.impl.config.request.RequestException- Fehler in der Anfragede.bsvrz.dav.daf.main.config.ConfigurationTaskException- Fehler beim Ausführen der Anweisung
-
createNewUser
public void createNewUser(java.lang.String usernameCustomer, de.bsvrz.sys.funclib.dataSerializer.Deserializer deserializer) throws de.bsvrz.dav.daf.main.config.ConfigurationTaskException, de.bsvrz.dav.daf.main.impl.config.request.RequestException, java.io.IOExceptionDescription copied from interface:AuthenticationErstellt einen neuen Benutzer- Specified by:
createNewUserin interfaceAuthentication- Parameters:
usernameCustomer- Auftraggeberdeserializer- Serialisierte Daten zu dem Benutzer- Throws:
de.bsvrz.dav.daf.main.config.ConfigurationTaskExceptionde.bsvrz.dav.daf.main.impl.config.request.RequestExceptionjava.io.IOException
-
isUser
public boolean isUser(java.lang.String userToCheck)Description copied from interface:AuthenticationPrüft, ob ein Benutzer existiert- Specified by:
isUserin interfaceAuthentication- Parameters:
userToCheck- Benutzername- Returns:
- true wenn er existiert, sonst false
-
clearSingleServingPasswords
public void clearSingleServingPasswords(java.lang.String orderer, java.lang.String username) throws java.io.FileNotFoundException, de.bsvrz.dav.daf.main.config.ConfigurationTaskExceptionLö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.- Specified by:
clearSingleServingPasswordsin interfaceAuthentication- Parameters:
orderer- Der Auftraggeber der Aktionusername- Der Benutzer, dessen Einmalpasswörter gelöscht werden sollen- Throws:
java.io.FileNotFoundExceptionde.bsvrz.dav.daf.main.config.ConfigurationTaskException
-
countRemainingSingleServingPasswords
public int countRemainingSingleServingPasswords(java.lang.String orderer, java.lang.String username) throws java.io.FileNotFoundException, de.bsvrz.dav.daf.main.config.ConfigurationTaskExceptionZählt die verbleibenden Einmalpasswörter für einen angegeben Benutzer. Nur ein Admin und der Benutzer selbst darf diese Aktion ausführen.- Specified by:
countRemainingSingleServingPasswordsin interfaceAuthentication- Parameters:
orderer- Der Auftraggeber der Aktionusername- Der Benutzer, dessen Einmalpasswörter gezählt werden sollen- Returns:
- Die Anzahl der verbliebenen Einmalpasswörter
- Throws:
java.io.FileNotFoundExceptionde.bsvrz.dav.daf.main.config.ConfigurationTaskException
-
getRemainingSingleServingPasswordIDs
public int[] getRemainingSingleServingPasswordIDs(java.lang.String orderer, java.lang.String username) throws java.io.FileNotFoundException, de.bsvrz.dav.daf.main.config.ConfigurationTaskExceptionGibt 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.- Specified by:
getRemainingSingleServingPasswordIDsin interfaceAuthentication- Parameters:
orderer- Der Auftraggeber der Aktionusername- Der Benutzer, dessen Einmalpasswörter gezählt werden sollen- Returns:
- Die IDs der verbliebenen Einmalpasswörter
- Throws:
java.io.FileNotFoundExceptionde.bsvrz.dav.daf.main.config.ConfigurationTaskException
-
isUserAdmin
public boolean isUserAdmin(java.lang.String orderer, java.lang.String userToCheck) throws de.bsvrz.dav.daf.main.config.ConfigurationTaskExceptionPrüft ob ein Benutzer Adminrechte hat. Jeder Benutzer darf diese Aktion ausführen.- Specified by:
isUserAdminin interfaceAuthentication- Parameters:
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.- Returns:
- True falls der Benutzer ein Admin ist
- Throws:
de.bsvrz.dav.daf.main.config.ConfigurationTaskException- Der Auftrag kann nicht ausgeführt werden, weil der Benutzer nicht existiert
-
createSingleServingPassword
public void createSingleServingPassword(java.lang.String username, java.lang.String usernameSingleServingPasswort, java.lang.String passwortSingleServingPasswort) throws de.bsvrz.dav.daf.main.impl.config.request.RequestException, de.bsvrz.dav.daf.main.config.ConfigurationTaskException- Specified by:
createSingleServingPasswordin interfaceAuthentication- Parameters:
username- Benutzer, der den Auftrag angestossen hatusernameSingleServingPasswort- Benutzer für den das Einmal-Passwort gedacht istpasswortSingleServingPasswort- Einmal-Passwort- Throws:
de.bsvrz.dav.daf.main.impl.config.request.RequestException- Technischer Fehler, der Auftrag konnte nicht bearbeitet werden.de.bsvrz.dav.daf.main.config.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..
-
createNewUser
public 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<de.bsvrz.dav.daf.main.DataAndATGUsageInformation> data) throws de.bsvrz.dav.daf.main.config.ConfigurationTaskException, de.bsvrz.dav.daf.main.impl.config.request.RequestExceptionLegt einen neuen Benutzer mit den übergebenen Parametern an.- Specified by:
createNewUserin interfaceAuthentication- Parameters:
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 explizite PidconfigurationArea- Pid des Konfigurationsbereichs, in dem der neue Benutzer angelegt werden solldata- Konfigurierende Datensätze, die angelegt werden sollen (falls leere Liste odernullwerden keine Daten angelegt)- Throws:
de.bsvrz.dav.daf.main.config.ConfigurationTaskException- Der neue Benutzer durfte nicht anglegt werden (Keine Rechte, Benutzer bereits vorhanden)de.bsvrz.dav.daf.main.impl.config.request.RequestException- technischer Fehler beim Zugriff auf die XML-Datei- See Also:
ConfigurationArea.createDynamicObject(DynamicObjectType, String, String, Collection)
-
changeUserPassword
public void changeUserPassword(java.lang.String username, java.lang.String userNameForPasswordChange, java.lang.String newPassword) throws de.bsvrz.dav.daf.main.config.ConfigurationTaskException, de.bsvrz.dav.daf.main.impl.config.request.RequestExceptionSetzt 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.
- Specified by:
changeUserPasswordin interfaceAuthentication- Parameters:
username- Benutzer, der den Auftrag zum ändern des Passworts erteilt hatuserNameForPasswordChange- Benutzer, dessen Passwort geändert werden sollnewPassword- neues Passwort- Throws:
de.bsvrz.dav.daf.main.config.ConfigurationTaskException- 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).de.bsvrz.dav.daf.main.impl.config.request.RequestException- Fehler beim Zugriff auf die XML-Datei
-
changeUserRights
public void changeUserRights(java.lang.String username, java.lang.String usernameChangeRights, boolean newUserRights) throws de.bsvrz.dav.daf.main.config.ConfigurationTaskException, de.bsvrz.dav.daf.main.impl.config.request.RequestException- Specified by:
changeUserRightsin interfaceAuthentication- Parameters:
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 Benutzerrechte- Throws:
de.bsvrz.dav.daf.main.config.ConfigurationTaskException- Der Benutzer ist unbekannt oder der Auftraggeber besitzt nicht die nötigen Rechtede.bsvrz.dav.daf.main.impl.config.request.RequestException- Fehler beim Zugriff auf die XML-Datei
-
deleteUser
public void deleteUser(java.lang.String username, java.lang.String userToDelete) throws de.bsvrz.dav.daf.main.impl.config.request.RequestException, de.bsvrz.dav.daf.main.config.ConfigurationTaskExceptionLöscht einen angegebenen Benutzer. Diese Aktion kann nur von Administratoren ausgeführt werden.- Specified by:
deleteUserin interfaceAuthentication- Parameters:
username- Veranlasser der AktionuserToDelete- Benutzername des Benutzers, der gelöscht werden soll- Throws:
de.bsvrz.dav.daf.main.impl.config.request.RequestException- Das Löschen kann aufgrund eines Problems nicht durchgeführt werdende.bsvrz.dav.daf.main.config.ConfigurationTaskException- Die Anfrage ist fehlerhaft weil der Veranlasser nicht die nötigen Rechte hat oder der zu löschende Benutzer nicht existiert
-
getSrpVerifierData
public de.bsvrz.dav.daf.communication.srpAuthentication.SrpVerifierAndUser getSrpVerifierData(java.lang.String authenticatedUser, java.lang.String userName, int passwordIndex) throws de.bsvrz.dav.daf.main.config.ConfigurationTaskExceptionDescription copied from interface:AuthenticationGibt 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.- Specified by:
getSrpVerifierDatain interfaceAuthentication- Parameters:
authenticatedUser- Benutzer, der die Anfrage durchführt. Die Anfrage dürfen nur Administratoren durchführen, andere Benutzer dürfen nur für sich selbst den Verifier abfragen.userName- Benutzername, dessen SRP-Verifier abgefragt wird- Returns:
- Überprüfungscode und Meta-Informationen
- Throws:
de.bsvrz.dav.daf.main.config.ConfigurationTaskException
-
setOneTimePasswords
public int setOneTimePasswords(java.lang.String authenticatedUser, java.lang.String usernamePassword, java.util.List<java.lang.String> passwords, boolean append) throws de.bsvrz.dav.daf.main.config.ConfigurationTaskException, de.bsvrz.dav.daf.main.impl.config.request.RequestException- Specified by:
setOneTimePasswordsin interfaceAuthentication- Parameters:
authenticatedUser- Benutzer, der den Auftrag angestoßen hatusernamePassword- Benutzer für den die Einmal-Passwörter gedacht sindpasswords- Einmal-Passwörterappend- Passwörter anhängen (falls nicht, bestehende Passwörter vorher löschen)- Returns:
- Index des ersten angehängten Passworts
- Throws:
de.bsvrz.dav.daf.main.config.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..de.bsvrz.dav.daf.main.impl.config.request.RequestException- Technischer Fehler, der Auftrag konnte nicht bearbeitet werden.
-
disableSingleServingPassword
public void disableSingleServingPassword(java.lang.String authenticatedUser, java.lang.String usernamePassword, int passwordIndex) throws de.bsvrz.dav.daf.main.config.ConfigurationTaskException, de.bsvrz.dav.daf.main.impl.config.request.RequestExceptionDescription copied from interface:AuthenticationMarkiert eine Einmalpasswort als ungültig- Specified by:
disableSingleServingPasswordin interfaceAuthentication- Parameters:
authenticatedUser- Authentifizierter BenutzerusernamePassword- Benutzer, dssen Passwort als ungültig markiert werden sollpasswordIndex- Index des Einmalpassworts- Throws:
de.bsvrz.dav.daf.main.config.ConfigurationTaskExceptionde.bsvrz.dav.daf.main.impl.config.request.RequestException
-
getUserLogin
public de.bsvrz.dav.daf.communication.protocol.UserLogin getUserLogin(java.lang.String userName) -
getUserObject
public de.bsvrz.dav.daf.main.config.SystemObject getUserObject(java.lang.String userName)Description copied from interface:AuthenticationGibt zu einem Benutzernamen das Benutzerobjekt zurück, falls es existiert. Gibt es kein Objekt mit dem Benutzernamen wird `null` zurückgegeben. Gibt es mehrere Benutzerobjekte, dann wird eins davon ausgewählt, wobei Objekte der lokalen AOE bevorzugt werden und, sollte es dann immer noch mehrdeutigkeiten geben, Objekte die nach Pid am Anfang sortiert werden würden.- Specified by:
getUserObjectin interfaceAuthentication- Parameters:
userName- Benutzername- Returns:
- SystemObject (typ.benutzer) oder `null`
-
createBackupFile
public void createBackupFile(java.io.File targetDirectory) throws java.io.IOExceptionSicher die Benutzerverwaltungsdatei in das angegebene Verzeichnis- Parameters:
targetDirectory- Zielverzeichnis- Throws:
java.io.IOException- IO-Fehler
-