Interface UserManagementFileInterface

All Known Implementing Classes:
UserManagementFileOffline, UserManagementFileOnline

public interface UserManagementFileInterface
Internes Interface für Benutzerverwaltungsfunktionen.

Dieses Interface hat die Instanzen UserManagementFileOffline und UserManagementFileOnline 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 Details

    • getUsers

      Set<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(String userName) throws ConfigurationTaskException
      Gibt true zurück, wenn der angegebene Benutzer ein Administrator ist.
      Returns:
      true, wenn der angegebene Benutzer ein Administrator ist, sonst false
      Throws:
      ConfigurationTaskException - wenn der Benutzer unbekannt ist oder die Information aus anderen Gründen nicht ermittelt werden konnte
    • setUserAdmin

      void setUserAdmin(String userName, boolean admin) throws ConfigurationTaskException
      Setzt für den angebenden Benutzer, ob er Admin-Rechte hat.
      Parameters:
      userName - Benutzer
      admin - 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(String userName, int passwordIndex) throws ConfigurationTaskException
      Gibt die SRP6-Verschlüsselungsparameter für das angegebene Passwort zurück.
      Parameters:
      userName - Benutzername
      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
    • validateClientCredentials

      default boolean validateClientCredentials(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 - Benutzername
      clientCredentials - 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(String userName, char[] password) throws ConfigurationTaskException
      Setzt für den angebenden Benutzer ein neues Passwort.
      Parameters:
      userName - Benutzer
      password - 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(String userName, 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 - Benutzer
      password - 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(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(String userName, char[] password, int passwordIndex) throws ConfigurationTaskException
      Erzeugt ein Login-Token für den automatischen Login für einen Benutzer
      Parameters:
      userName - Benutzername
      password - Benutzerpasswort
      passwordIndex - 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(String userName, ClientCredentials password, boolean admin, ConsoleInterface consoleInterface) throws ConfigurationTaskException
      Legt einen neuen Benutzer interaktiv an
      Parameters:
      userName - Benutzername
      password - Initiales Passwort des Benutzers
      admin - 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(String userName, ClientCredentials password, boolean admin, String configArea, String pid) throws ConfigurationTaskException
      Legt einen neuen Benutzer an. Die beiden letzten Parameter sind nur für die UserManagementFileOnline-Implementierung relevant
      Parameters:
      userName - Benutzername
      password - Initiales Passwort des Benutzers
      admin - Soll der Benutzer Administratorrechte haben?
      configArea - Pid des Konfigurationsbereichs, in dem das Benutzerobjekt im Datenverteiler angelegt werden soll
      pid - Pid des neuen Benutzerobjekts im Datenverteiler
      Throws:
      ConfigurationTaskException - Wenn die Anfrage aus diversen Gründen (z. B. fehlende Berechtigung) abgelehnt wurde
    • createUser

      void createUser(String userName, ClientCredentials password, boolean admin) throws ConfigurationTaskException
      Legt einen neuen Benutzer an. Konfigurationsbereich und Benutzer-Pid werden bei Bedarf automatisch festgelegt.
      Parameters:
      userName - Benutzername
      password - Initiales Passwort des Benutzers
      admin - Soll der Benutzer Administratorrechte haben?
      Throws:
      ConfigurationTaskException - Wenn die Anfrage aus diversen Gründen (z. B. fehlende Berechtigung) abgelehnt wurde
    • deleteUser

      void deleteUser(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

      Map<Integer,String> createOneTimePasswords(String userName, Collection<? extends String> passwords) throws ConfigurationTaskException
      Fügt dem angegebenen Benutzer Einmalpasswörter hinzu
      Parameters:
      userName - Benutzer
      passwords - 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(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(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(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

      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(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 - Benutzername
      passwordIndex - 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(String userName, SrpVerifierData srpVerifierData) throws ConfigurationTaskException
      Setzt einen neuen Überprüfungscode. Dieser kann z. B. mit SrpClientAuthentication.createVerifier(SrpCryptoParameter, String, ClientCredentials) erzeugt werden. Dies ist eine fortgeschrittene Version von setUserPassword(String, char[]), bei der das Klartextpasswort nicht zwingend bekannt sein muss.
      Parameters:
      userName - Benutzername
      srpVerifierData - neuer Überprüfungscode
      Throws:
      ConfigurationTaskException - Wenn die Anfrage aus diversen Gründen (z. B. fehlende Berechtigung) abgelehnt wurde