Package de.bsvrz.dav.daf.userManagement
Class UserManagementFileOnline
- java.lang.Object
-
- de.bsvrz.dav.daf.userManagement.UserManagementFileOnline
-
- All Implemented Interfaces:
UserManagementFileInterface
public class UserManagementFileOnline extends java.lang.Object implements UserManagementFileInterface
Benutzerverwaltung Online
-
-
Constructor Summary
Constructors Constructor Description UserManagementFileOnline(ClientDavConnection connection, DataModel dataModel, java.lang.String orderer, char[] ordererPassword)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclearOneTimePasswords(java.lang.String userName)Löscht alle vorhandenen Einmalpasswörter eines Benutzersjava.util.Map<java.lang.Integer,java.lang.String>createOneTimePasswords(java.lang.String userName, java.util.Collection<? extends java.lang.String> passwords)Fügt dem angegebenen Benutzer Einmalpasswörter hinzuvoidcreateUser(java.lang.String userName, ClientCredentials password, boolean admin)Legt einen neuen Benutzer an.voidcreateUser(java.lang.String userName, ClientCredentials password, boolean admin, ConsoleInterface console)Legt einen neuen Benutzer interaktiv anvoidcreateUser(java.lang.String userName, ClientCredentials password, boolean admin, java.lang.String configArea, java.lang.String pid)Legt einen neuen Benutzer an.voiddeleteUser(java.lang.String userName)Löscht den angegebenen BenutzervoiddisableOneTimePassword(java.lang.String userName, int passwordID)Deaktiviert ein einzelnes Einmalpasswort eines Benutzers (markiert dieses als benutzt)java.lang.StringgetDavPid()Gibt die Pid des Datenverteilerobjekts zurück.int[]getOneTimePasswordIDs(java.lang.String userName)Gibt von einem Benutzer die Indizes der noch unbenutzten, verwendbaren, Einmalpasswörter zurück.java.util.Set<java.lang.String>getUsers()Gibt alle Benutzer zurück, die dem System bekannt sind.SrpVerifierAndUsergetVerifier(java.lang.String userName, int passwordIndex)Fragt den serverseitigen Überprüfungscode eines Benutzerpassworts ab.booleanisUserAdmin(java.lang.String userName)Gibttruezurück, wenn der angegebene Benutzer ein Administrator ist.ClientCredentialssetRandomToken(java.lang.String userName)Setzt für den angebenden Benutzer einen neuen zufälligen Login-Token (ohne Passwort) und gobt dieses zurück.voidsetUserAdmin(java.lang.String userName, boolean admin)Setzt für den angebenden Benutzer, ob er Admin-Rechte hat.ClientCredentialssetUserNameAndPassword(java.lang.String userName, java.lang.String newUserName, char[] password)Setzt für den angebenden Benutzer einen neuen Benutzernamen und ein neues Passwort.ClientCredentialssetUserPassword(java.lang.String userName, char[] password)Setzt für den angebenden Benutzer ein neues Passwort.voidsetVerifier(java.lang.String userName, SrpVerifierData srpVerifierData)Setzt einen neuen Überprüfungscode.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface de.bsvrz.dav.daf.userManagement.UserManagementFileInterface
getCryptoParameter, getLoginToken, validateClientCredentials
-
-
-
-
Constructor Detail
-
UserManagementFileOnline
public UserManagementFileOnline(ClientDavConnection connection, DataModel dataModel, java.lang.String orderer, char[] ordererPassword)
-
-
Method Detail
-
getUsers
public java.util.Set<java.lang.String> getUsers()
Description copied from interface:UserManagementFileInterfaceGibt alle Benutzer zurück, die dem System bekannt sind. Es ist undefiniert, welche Auswirkung das Verändern des zurückgegebenen Sets hat, im Zweifelsfall bitte eine Kopie erstellen.- Specified by:
getUsersin interfaceUserManagementFileInterface- Returns:
- Set mit Benutzernamen
-
isUserAdmin
public boolean isUserAdmin(java.lang.String userName) throws ConfigurationTaskExceptionDescription copied from interface:UserManagementFileInterfaceGibttruezurück, wenn der angegebene Benutzer ein Administrator ist.- Specified by:
isUserAdminin interfaceUserManagementFileInterface- Returns:
true, wenn der angegebene Benutzer ein Administrator ist, sonstfalse- Throws:
ConfigurationTaskException- wenn der Benutzer unbekannt ist oder die Information aus anderen Gründen nicht ermittelt werden konnte
-
setUserAdmin
public void setUserAdmin(java.lang.String userName, boolean admin) throws ConfigurationTaskExceptionDescription copied from interface:UserManagementFileInterfaceSetzt für den angebenden Benutzer, ob er Admin-Rechte hat.- Specified by:
setUserAdminin interfaceUserManagementFileInterface- Parameters:
userName- Benutzeradmin- Administrator-Rechte ja/nein?- Throws:
ConfigurationTaskException- wenn der Benutzer unbekannt ist oder die Anfrage aus anderen Gründen (z. B. fehlende Berechtigung) abgelehnt wurde
-
setUserPassword
public ClientCredentials setUserPassword(java.lang.String userName, char[] password) throws ConfigurationTaskException
Description copied from interface:UserManagementFileInterfaceSetzt für den angebenden Benutzer ein neues Passwort.- Specified by:
setUserPasswordin interfaceUserManagementFileInterface- Parameters:
userName- Benutzerpassword- Neues Passwort- Returns:
- Passwort des Benutzers als
ClientCredentials(in der Regel als Login-Token verschlüsselt) - Throws:
ConfigurationTaskException- wenn der Benutzer unbekannt ist oder die Anfrage aus anderen Gründen (z. B. fehlende Berechtigung) abgelehnt wurde
-
setUserNameAndPassword
public ClientCredentials setUserNameAndPassword(java.lang.String userName, java.lang.String newUserName, char[] password) throws ConfigurationTaskException
Description copied from interface:UserManagementFileInterfaceSetzt für den angebenden Benutzer einen neuen Benutzernamen und ein neues Passwort. Bei einer Änderung des Benutzernamens muss immer das Passwort mit gesetzt werden, da das Passwort anhand des Benutzernamens verschlüsselt wird. Als neues Passwort kann selbstverständlich das alte Passwort noch einmal angegeben werden, wodurch es mit dem neuen Benutzernamen neu verschlüsselt wird.Im Online-Modus wird das Benutzerobjekt umbenannt, die Pid (sofern vorhanden) bleibt jedoch gleich, damit Parameter, Referenzen usw. erhalten bleiben.
- Specified by:
setUserNameAndPasswordin interfaceUserManagementFileInterface- Parameters:
userName- Benutzerpassword- Neues Passwort- Throws:
ConfigurationTaskException- wenn der Benutzer unbekannt ist oder die Anfrage aus anderen Gründen (z. B. fehlende Berechtigung) abgelehnt wurde
-
setRandomToken
public ClientCredentials setRandomToken(java.lang.String userName) throws ConfigurationTaskException
Description copied from interface:UserManagementFileInterfaceSetzt für den angebenden Benutzer einen neuen zufälligen Login-Token (ohne Passwort) und gobt dieses zurück.- Specified by:
setRandomTokenin interfaceUserManagementFileInterface- Parameters:
userName- Benutzer- Returns:
- zufälliger Login-Token
- Throws:
ConfigurationTaskException- wenn der Benutzer unbekannt ist oder die Anfrage aus anderen Gründen (z. B. fehlende Berechtigung) abgelehnt wurde
-
getVerifier
public SrpVerifierAndUser getVerifier(java.lang.String userName, int passwordIndex) throws ConfigurationTaskException
Description copied from interface:UserManagementFileInterfaceFragt den serverseitigen Überprüfungscode eines Benutzerpassworts ab. Warnung: der Überprüfungscode kann ggf. Brute-Force-Angriffe auf das Benutzerpasswort erleichtern. Diese Operation wird in der Regel nur für den eigenen Benutzer zugelassen oder benötigt sonst Admin-Rechte.- Specified by:
getVerifierin interfaceUserManagementFileInterface- Parameters:
userName- BenutzernamepasswordIndex- Einmal-Passwort-Index oder -1 für das normale Passwort- Returns:
- Objekt, das daten über den Benutzer und den Überprüfungscode enthält
- Throws:
ConfigurationTaskException- Wenn die Anfrage aus diversen Gründen (z. B. fehlende Berechtigung) abgelehnt wurde
-
setVerifier
public void setVerifier(java.lang.String userName, SrpVerifierData srpVerifierData) throws ConfigurationTaskExceptionDescription copied from interface:UserManagementFileInterfaceSetzt einen neuen Überprüfungscode. Dieser kann z. B. mitSrpClientAuthentication.createVerifier(SrpCryptoParameter, String, ClientCredentials)erzeugt werden. Dies ist eine fortgeschrittene Version vonUserManagementFileInterface.setUserPassword(String, char[]), bei der das Klartextpasswort nicht zwingend bekannt sein muss.- Specified by:
setVerifierin interfaceUserManagementFileInterface- Parameters:
userName- BenutzernamesrpVerifierData- neuer Überprüfungscode- Throws:
ConfigurationTaskException- Wenn die Anfrage aus diversen Gründen (z. B. fehlende Berechtigung) abgelehnt wurde
-
createUser
public void createUser(java.lang.String userName, ClientCredentials password, boolean admin, ConsoleInterface console) throws ConfigurationTaskExceptionDescription copied from interface:UserManagementFileInterfaceLegt einen neuen Benutzer interaktiv an- Specified by:
createUserin interfaceUserManagementFileInterface- Parameters:
userName- Benutzernamepassword- Initiales Passwort des Benutzersadmin- Soll der Benutzer Administratorrechte haben?console- Interface für die interaktive Abfrage von weiteren Informationen (z. B. Konfigurationsbereich, Pid)- Throws:
ConfigurationTaskException- Wenn die Anfrage aus diversen Gründen (z. B. fehlende Berechtigung) abgelehnt wurde
-
createUser
public void createUser(java.lang.String userName, ClientCredentials password, boolean admin, java.lang.String configArea, java.lang.String pid) throws ConfigurationTaskExceptionDescription copied from interface:UserManagementFileInterfaceLegt einen neuen Benutzer an. Die beiden letzten Parameter sind nur für dieUserManagementFileOnline-Implementierung relevant- Specified by:
createUserin interfaceUserManagementFileInterface- Parameters:
userName- Benutzernamepassword- Initiales Passwort des Benutzersadmin- Soll der Benutzer Administratorrechte haben?configArea- Pid des Konfigurationsbereichs, in dem das Benutzerobjekt im Datenverteiler angelegt werden sollpid- Pid des neuen Benutzerobjekts im Datenverteiler- Throws:
ConfigurationTaskException- Wenn die Anfrage aus diversen Gründen (z. B. fehlende Berechtigung) abgelehnt wurde
-
createUser
public void createUser(java.lang.String userName, ClientCredentials password, boolean admin) throws ConfigurationTaskExceptionDescription copied from interface:UserManagementFileInterfaceLegt einen neuen Benutzer an. Konfigurationsbereich und Benutzer-Pid werden bei Bedarf automatisch festgelegt.- Specified by:
createUserin interfaceUserManagementFileInterface- Parameters:
userName- Benutzernamepassword- Initiales Passwort des Benutzersadmin- Soll der Benutzer Administratorrechte haben?- Throws:
ConfigurationTaskException- Wenn die Anfrage aus diversen Gründen (z. B. fehlende Berechtigung) abgelehnt wurde
-
deleteUser
public void deleteUser(java.lang.String userName) throws ConfigurationTaskExceptionDescription copied from interface:UserManagementFileInterfaceLöscht den angegebenen Benutzer- Specified by:
deleteUserin interfaceUserManagementFileInterface- Parameters:
userName- Benutzername- Throws:
ConfigurationTaskException- Wenn die Anfrage aus diversen Gründen (z. B. fehlende Berechtigung) abgelehnt wurde
-
createOneTimePasswords
public java.util.Map<java.lang.Integer,java.lang.String> createOneTimePasswords(java.lang.String userName, java.util.Collection<? extends java.lang.String> passwords) throws ConfigurationTaskExceptionDescription copied from interface:UserManagementFileInterfaceFügt dem angegebenen Benutzer Einmalpasswörter hinzu- Specified by:
createOneTimePasswordsin interfaceUserManagementFileInterface- Parameters:
userName- Benutzerpasswords- Einmalpasswörter- Returns:
- Map, die die übergebenen Einmalpasswörter nach ihrem Passwortindex indiziert speichert. Der verwendete Passwortindex wird automatisch ermittelt.
- Throws:
ConfigurationTaskException- Wenn die Anfrage aus diversen Gründen (z. B. fehlende Berechtigung) abgelehnt wurde
-
clearOneTimePasswords
public void clearOneTimePasswords(java.lang.String userName) throws ConfigurationTaskExceptionDescription copied from interface:UserManagementFileInterfaceLöscht alle vorhandenen Einmalpasswörter eines Benutzers- Specified by:
clearOneTimePasswordsin interfaceUserManagementFileInterface- Parameters:
userName- Benutzername- Throws:
ConfigurationTaskException- Wenn die Anfrage aus diversen Gründen (z. B. fehlende Berechtigung) abgelehnt wurde
-
getOneTimePasswordIDs
public int[] getOneTimePasswordIDs(java.lang.String userName) throws ConfigurationTaskExceptionDescription copied from interface:UserManagementFileInterfaceGibt von einem Benutzer die Indizes der noch unbenutzten, verwendbaren, Einmalpasswörter zurück.- Specified by:
getOneTimePasswordIDsin interfaceUserManagementFileInterface- Parameters:
userName- Benutzername, für den Passwörter abgefragt werden sollen- Returns:
- Indizes der noch verwendbaren Einmalpasswörter (leeres Array, falls keine Passwörter mehr verfügbar sind), aufsteigend sortiert.
- Throws:
ConfigurationTaskException- Wenn die Anfrage aus diversen Gründen (z. B. fehlende Berechtigung) abgelehnt wurde
-
disableOneTimePassword
public void disableOneTimePassword(java.lang.String userName, int passwordID) throws ConfigurationTaskExceptionDescription copied from interface:UserManagementFileInterfaceDeaktiviert ein einzelnes Einmalpasswort eines Benutzers (markiert dieses als benutzt)- Specified by:
disableOneTimePasswordin interfaceUserManagementFileInterface- Parameters:
userName- Benutzername- Throws:
ConfigurationTaskException- Wenn die Anfrage aus diversen Gründen (z. B. fehlende Berechtigung) abgelehnt wurde
-
getDavPid
public java.lang.String getDavPid()
Description copied from interface:UserManagementFileInterfaceGibt die Pid des Datenverteilerobjekts zurück. Diese Methode wird für die Generierung eines Login-Tokens für fremde Server benutzt.- Specified by:
getDavPidin interfaceUserManagementFileInterface- Returns:
- die Pid des Datenverteilerobjekts oder einen Ersatz-String wie "<Lokal>" falls nicht ermittelbar.
-
-