public interface Authentication
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.
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) |
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 |
createNewUser(java.lang.String usernameCustomer,
de.bsvrz.sys.funclib.dataSerializer.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<de.bsvrz.dav.daf.main.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) |
void |
deleteUser(java.lang.String username,
java.lang.String userToDelete)
Löscht einen angegebenen Benutzer.
|
void |
disableSingleServingPassword(java.lang.String authenticatedUser,
java.lang.String usernamePassword,
int passwordIndex)
Markiert eine Einmalpasswort als ungültig
|
int[] |
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.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.
Diese Methode wird von der alten HMAC-basierten Benutzerverwaltung benutzt und ist bei SRP nicht mehr sinnvoll.
|
de.bsvrz.dav.daf.main.config.SystemObject |
getUserObject(java.lang.String userName)
Gibt zu einem Benutzernamen das Benutzerobjekt zurück, falls es existiert.
|
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.
Diese Methode wird von der alten HMAC-Authentifizierung ohne Verschlüsselung benutzt
|
int |
processTask(java.lang.String usernameCustomer,
byte[] encryptedMessage,
java.lang.String encryptionProcessName)
Deprecated.
Diese Methode wird von der alten HMAC-basierten Benutzerverwaltung benutzt und ist bei SRP nicht mehr sinnvoll. Diese Methode funktioniert
nur, wenn das Passwort im Klartext gespeichert ist.
|
int |
setOneTimePasswords(java.lang.String authenticatedUser,
java.lang.String usernamePassword,
java.util.List<java.lang.String> passwords,
boolean append) |
@Deprecated void isValidUser(java.lang.String username, byte[] encryptedPassword, java.lang.String authentificationText, java.lang.String authentificationProcessName) throws java.lang.Exception, java.lang.IllegalArgumentException
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 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.
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 int processTask(java.lang.String usernameCustomer, byte[] encryptedMessage, java.lang.String encryptionProcessName) throws de.bsvrz.dav.daf.main.config.ConfigurationTaskException, de.bsvrz.dav.daf.main.impl.config.request.RequestException
usernameCustomer
- Benutzer, der den Auftrag erteiltencryptedMessage
- verschlüsselte Aufgabe, die ausgeführt werden sollencryptionProcessName
- Verschlüsslungsverfahren mit der encryptedMessage
erstellt wurdede.bsvrz.dav.daf.main.config.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ürde, mit den richtigen Parametern, könnte er ausgeführt
werden.de.bsvrz.dav.daf.main.impl.config.request.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.@Deprecated byte[] getText()
void close()
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.IOException
usernameCustomer
- Auftraggeberdeserializer
- Serialisierte Daten zu dem Benutzerde.bsvrz.dav.daf.main.config.ConfigurationTaskException
de.bsvrz.dav.daf.main.impl.config.request.RequestException
java.io.IOException
boolean isUser(java.lang.String userToCheck)
userToCheck
- Benutzernamevoid clearSingleServingPasswords(java.lang.String orderer, java.lang.String username) throws java.io.FileNotFoundException, de.bsvrz.dav.daf.main.config.ConfigurationTaskException
orderer
- Der Auftraggeber der Aktionusername
- Der Benutzer, dessen Einmalpasswörter gelöscht werden sollenjava.io.FileNotFoundException
de.bsvrz.dav.daf.main.config.ConfigurationTaskException
int countRemainingSingleServingPasswords(java.lang.String orderer, java.lang.String username) throws java.io.FileNotFoundException, de.bsvrz.dav.daf.main.config.ConfigurationTaskException
orderer
- Der Auftraggeber der Aktionusername
- Der Benutzer, dessen Einmalpasswörter gezählt werden sollenjava.io.FileNotFoundException
de.bsvrz.dav.daf.main.config.ConfigurationTaskException
int[] getRemainingSingleServingPasswordIDs(java.lang.String orderer, java.lang.String username) throws java.io.FileNotFoundException, de.bsvrz.dav.daf.main.config.ConfigurationTaskException
orderer
- Der Auftraggeber der Aktionusername
- Der Benutzer, dessen Einmalpasswörter gezählt werden sollenjava.io.FileNotFoundException
de.bsvrz.dav.daf.main.config.ConfigurationTaskException
boolean isUserAdmin(java.lang.String orderer, java.lang.String userToCheck) throws de.bsvrz.dav.daf.main.config.ConfigurationTaskException
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.de.bsvrz.dav.daf.main.config.ConfigurationTaskException
- Der Auftrag kann nicht ausgeführt werden, weil der Benutzer nicht existiertvoid 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
username
- Benutzer, der den Auftrag angestoßen hatusernameSingleServingPasswort
- Benutzer für den das Einmal-Passwort gedacht istpasswortSingleServingPasswort
- Einmal-Passwortde.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..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.RequestException
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)de.bsvrz.dav.daf.main.config.ConfigurationTaskException
- Der neue Benutzer durfte nicht angelegt werden (Keine Rechte, Benutzer bereits vorhanden)de.bsvrz.dav.daf.main.impl.config.request.RequestException
- technischer Fehler beim Zugriff auf die XML-DateiConfigurationArea.createDynamicObject(de.bsvrz.dav.daf.main.config.DynamicObjectType, String, String, java.util.Collection)
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.RequestException
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.
username
- Benutzer, der den Auftrag zum ändern des Passworts erteilt hatuserNameForPasswordChange
- Benutzer, dessen Passwort geändert werden sollnewPassword
- neues Passwortde.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-Dateivoid 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
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 Benutzerrechtede.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-Dateivoid 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.ConfigurationTaskException
username
- Veranlasser der AktionuserToDelete
- Benutzername des Benutzers, der gelöscht werden sollde.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 existiertde.bsvrz.dav.daf.communication.srpAuthentication.SrpVerifierAndUser getSrpVerifierData(java.lang.String authenticatedUser, java.lang.String username, int passwordIndex) throws de.bsvrz.dav.daf.main.config.ConfigurationTaskException
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 wirdpasswordIndex
- de.bsvrz.dav.daf.main.config.ConfigurationTaskException
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
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)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..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.RequestException
authenticatedUser
- Authentifizierter BenutzerusernamePassword
- Benutzer, dssen Passwort als ungültig markiert werden sollpasswordIndex
- Index des Einmalpasswortsde.bsvrz.dav.daf.main.config.ConfigurationTaskException
de.bsvrz.dav.daf.main.impl.config.request.RequestException
de.bsvrz.dav.daf.main.config.SystemObject getUserObject(java.lang.String userName)
userName
- Benutzername