Package de.bsvrz.dav.daf.userManagement
Interface UserManagementFileInterface
-
- All Known Implementing Classes:
UserManagementFileOffline
,UserManagementFileOnline
public interface UserManagementFileInterface
Internes Interface für Benutzerverwaltungsfunktionen.Dieses Interface hat die Instanzen
UserManagementFileOffline
undUserManagementFileOnline
um die Benutzer eines Datenverteilersystems entweder Online (über die Benutzerschnittstelle im DAF) oder Offline (über die Bearbeitung der Benutzerverwaltung.xml) zu verwalten.Hinweis: Die Offline-Benutzerverwaltung kann kein Benutzerobjekt in der Konfiguration anlegen und ignoriert gewisse Parameter, wie z. B. Pid und Konfigurationsbereich in
createUser(String, ClientCredentials, boolean, String, String)
.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description void
clearOneTimePasswords(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 hinzuvoid
createUser(java.lang.String userName, ClientCredentials password, boolean admin)
Legt einen neuen Benutzer an.void
createUser(java.lang.String userName, ClientCredentials password, boolean admin, ConsoleInterface consoleInterface)
Legt einen neuen Benutzer interaktiv anvoid
createUser(java.lang.String userName, ClientCredentials password, boolean admin, java.lang.String configArea, java.lang.String pid)
Legt einen neuen Benutzer an.void
deleteUser(java.lang.String userName)
Löscht den angegebenen Benutzervoid
disableOneTimePassword(java.lang.String userName, int passwordID)
Deaktiviert ein einzelnes Einmalpasswort eines Benutzers (markiert dieses als benutzt)default SrpCryptoParameter
getCryptoParameter(java.lang.String userName, int passwordIndex)
Gibt die SRP6-Verschlüsselungsparameter für das angegebene Passwort zurück.java.lang.String
getDavPid()
Gibt die Pid des Datenverteilerobjekts zurück.default ClientCredentials
getLoginToken(java.lang.String userName, char[] password, int passwordIndex)
Erzeugt ein Login-Token für den automatischen Login für einen Benutzerint[]
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.SrpVerifierAndUser
getVerifier(java.lang.String userName, int passwordIndex)
Fragt den serverseitigen Überprüfungscode eines Benutzerpassworts ab.boolean
isUserAdmin(java.lang.String userName)
Gibttrue
zurück, wenn der angegebene Benutzer ein Administrator ist.ClientCredentials
setRandomToken(java.lang.String userName)
Setzt für den angebenden Benutzer einen neuen zufälligen Login-Token (ohne Passwort) und gobt dieses zurück.void
setUserAdmin(java.lang.String userName, boolean admin)
Setzt für den angebenden Benutzer, ob er Admin-Rechte hat.ClientCredentials
setUserNameAndPassword(java.lang.String userName, java.lang.String newUserName, char[] password)
Setzt für den angebenden Benutzer einen neuen Benutzernamen und ein neues Passwort.ClientCredentials
setUserPassword(java.lang.String userName, char[] password)
Setzt für den angebenden Benutzer ein neues Passwort.void
setVerifier(java.lang.String userName, SrpVerifierData srpVerifierData)
Setzt einen neuen Überprüfungscode.default boolean
validateClientCredentials(java.lang.String userName, ClientCredentials clientCredentials, int passwordIndex)
Gibt zurück, ob das angegebene Passwort oder der angegebene Login-Token für den angegebenen Benutzernamen ein korrekter Login ist.
-
-
-
Method Detail
-
getUsers
java.util.Set<java.lang.String> getUsers()
Gibt 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.- Returns:
- Set mit Benutzernamen
-
isUserAdmin
boolean isUserAdmin(java.lang.String userName) throws ConfigurationTaskException
Gibttrue
zurück, wenn der angegebene Benutzer ein Administrator ist.- 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
void setUserAdmin(java.lang.String userName, boolean admin) throws ConfigurationTaskException
Setzt für den angebenden Benutzer, ob er Admin-Rechte hat.- 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
-
getCryptoParameter
default SrpCryptoParameter getCryptoParameter(java.lang.String userName, int passwordIndex) throws ConfigurationTaskException
Gibt die SRP6-Verschlüsselungsparameter für das angegebene Passwort zurück.- Parameters:
userName
- BenutzernamepasswordIndex
- Einmal-Passwort-Index oder -1 für das normale Passwort- Returns:
- die SRP6-Verschlüsselungsparameter für das angegebene Passwort oder
null
, falls Passwort nicht mit SRP6 verschlüsselt wurde - Throws:
ConfigurationTaskException
- wenn der Benutzer unbekannt ist oder die Anfrage aus anderen Gründen (z. B. fehlende Berechtigung) abgelehnt wurde
-
validateClientCredentials
default boolean validateClientCredentials(java.lang.String userName, ClientCredentials clientCredentials, int passwordIndex) throws ConfigurationTaskException
Gibt zurück, ob das angegebene Passwort oder der angegebene Login-Token für den angegebenen Benutzernamen ein korrekter Login ist.- Parameters:
userName
- BenutzernameclientCredentials
- Passwort oder Login-Token, siehe z. B.ClientCredentials.ofPassword(char[])
passwordIndex
- Einmal-Passwort-Index oder -1 für das normale Passwort- Returns:
- die SRP6-Verschlüsselungsparameter für das angegebene Passwort oder
null
, falls Passwort nicht mit SRP6 verschlüsselt wurde - Throws:
ConfigurationTaskException
- wenn der Benutzer unbekannt ist oder die Anfrage aus anderen Gründen (z. B. fehlende Berechtigung) abgelehnt wurde
-
setUserPassword
ClientCredentials setUserPassword(java.lang.String userName, char[] password) throws ConfigurationTaskException
Setzt für den angebenden Benutzer ein neues Passwort.- 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
ClientCredentials setUserNameAndPassword(java.lang.String userName, java.lang.String newUserName, char[] password) throws ConfigurationTaskException
Setzt 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.
- 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
ClientCredentials setRandomToken(java.lang.String userName) throws ConfigurationTaskException
Setzt für den angebenden Benutzer einen neuen zufälligen Login-Token (ohne Passwort) und gobt dieses zurück.- 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
-
getLoginToken
default ClientCredentials getLoginToken(java.lang.String userName, char[] password, int passwordIndex) throws ConfigurationTaskException
Erzeugt ein Login-Token für den automatischen Login für einen Benutzer- Parameters:
userName
- Benutzernamepassword
- BenutzerpasswortpasswordIndex
- Einmal-Passwort-Index oder -1 für das normale Passwort- Returns:
- Verschlüsseltes Passwort
- Throws:
ConfigurationTaskException
- wenn der Benutzer unbekannt ist oder die Anfrage aus anderen Gründen (z. B. fehlende Berechtigung) abgelehnt wurde
-
createUser
void createUser(java.lang.String userName, ClientCredentials password, boolean admin, ConsoleInterface consoleInterface) throws ConfigurationTaskException
Legt einen neuen Benutzer interaktiv an- Parameters:
userName
- Benutzernamepassword
- Initiales Passwort des Benutzersadmin
- Soll der Benutzer Administratorrechte haben?consoleInterface
- 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
void createUser(java.lang.String userName, ClientCredentials password, boolean admin, java.lang.String configArea, java.lang.String pid) throws ConfigurationTaskException
Legt einen neuen Benutzer an. Die beiden letzten Parameter sind nur für dieUserManagementFileOnline
-Implementierung relevant- 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
void createUser(java.lang.String userName, ClientCredentials password, boolean admin) throws ConfigurationTaskException
Legt einen neuen Benutzer an. Konfigurationsbereich und Benutzer-Pid werden bei Bedarf automatisch festgelegt.- 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
void deleteUser(java.lang.String userName) throws ConfigurationTaskException
Löscht den angegebenen Benutzer- Parameters:
userName
- Benutzername- Throws:
ConfigurationTaskException
- Wenn die Anfrage aus diversen Gründen (z. B. fehlende Berechtigung) abgelehnt wurde
-
createOneTimePasswords
java.util.Map<java.lang.Integer,java.lang.String> createOneTimePasswords(java.lang.String userName, java.util.Collection<? extends java.lang.String> passwords) throws ConfigurationTaskException
Fügt dem angegebenen Benutzer Einmalpasswörter hinzu- 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
void clearOneTimePasswords(java.lang.String userName) throws ConfigurationTaskException
Löscht alle vorhandenen Einmalpasswörter eines Benutzers- Parameters:
userName
- Benutzername- Throws:
ConfigurationTaskException
- Wenn die Anfrage aus diversen Gründen (z. B. fehlende Berechtigung) abgelehnt wurde
-
getOneTimePasswordIDs
int[] getOneTimePasswordIDs(java.lang.String userName) throws ConfigurationTaskException
Gibt von einem Benutzer die Indizes der noch unbenutzten, verwendbaren, Einmalpasswörter zurück.- 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
void disableOneTimePassword(java.lang.String userName, int passwordID) throws ConfigurationTaskException
Deaktiviert ein einzelnes Einmalpasswort eines Benutzers (markiert dieses als benutzt)- Parameters:
userName
- Benutzername- Throws:
ConfigurationTaskException
- Wenn die Anfrage aus diversen Gründen (z. B. fehlende Berechtigung) abgelehnt wurde
-
getDavPid
java.lang.String getDavPid()
Gibt die Pid des Datenverteilerobjekts zurück. Diese Methode wird für die Generierung eines Login-Tokens für fremde Server benutzt.- Returns:
- die Pid des Datenverteilerobjekts oder einen Ersatz-String wie "<Lokal>" falls nicht ermittelbar.
-
getVerifier
SrpVerifierAndUser getVerifier(java.lang.String userName, int passwordIndex) throws ConfigurationTaskException
Fragt 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.- 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
void setVerifier(java.lang.String userName, SrpVerifierData srpVerifierData) throws ConfigurationTaskException
Setzt einen neuen Überprüfungscode. Dieser kann z. B. mitSrpClientAuthentication.createVerifier(SrpCryptoParameter, String, ClientCredentials)
erzeugt werden. Dies ist eine fortgeschrittene Version vonsetUserPassword(String, char[])
, bei der das Klartextpasswort nicht zwingend bekannt sein muss.- Parameters:
userName
- BenutzernamesrpVerifierData
- neuer Überprüfungscode- Throws:
ConfigurationTaskException
- Wenn die Anfrage aus diversen Gründen (z. B. fehlende Berechtigung) abgelehnt wurde
-
-