Interface UserAdministration

  • All Known Implementing Classes:
    HmacUserAdministration, SrpUserAdministration

    public interface UserAdministration
    Die Implementation dieses Interfaces erlaubt es, die Benutzer der Kernsoftware zu verwalten. Dies beinhaltet Aktionen wie:
    • Anlegen neuer Benutzer
    • Ändern von Passwörtern
    • Ändern der Rechte, die ein Benutzer besitzt
    • Erstellung von Einmal-Passwörtern

    Alle beschriebenen Aktionen setzen dabei die nötigen Rechte des Benutzers voraus, der die Aktion auslöst. Sind die nötigen Rechte nicht vorhanden, so wird die Aktion nicht durchgeführt.

    • Method Summary

      Modifier and Type Method Description
      void changeUserPassword​(java.lang.String orderer, java.lang.String ordererPassword, java.lang.String user, java.lang.String newUserPassword)
      Beauftragt die Konfiguration das Passwort eines Benutzers zu ändern.
      void changeUserRights​(java.lang.String orderer, java.lang.String ordererPassword, java.lang.String user, boolean adminRights)
      Beauftragt die Konfiguration die Rechte eines Benutzers zu ändern.
      void clearSingleServingPasswords​(java.lang.String orderer, java.lang.String ordererPassword, java.lang.String username)
      Löscht alle Einmalpasswörter für einen angegebenen Benutzer.
      void createNewUser​(java.lang.String orderer, java.lang.String ordererPassword, java.lang.String newUsername, java.lang.String newUserPid, java.lang.String newPassword, boolean adminRights, java.lang.String pidConfigurationArea)
      Beauftragt die Konfiguration ein neues Benutzerkonto anzulegen.
      void createNewUser​(java.lang.String orderer, java.lang.String ordererPassword, java.lang.String newUsername, java.lang.String newUserPid, java.lang.String newPassword, boolean adminRights, java.lang.String pidConfigurationArea, java.util.Collection<DataAndATGUsageInformation> data)
      Beauftragt die Konfiguration ein neues Benutzerkonto anzulegen.
      int createOneTimePasswords​(java.lang.String orderer, java.lang.String ordererPassword, java.lang.String username, java.lang.String... passwords)
      Fügt einem Benutzer eine Liste von Einmalpasswörtern hinzu.
      void createSingleServingPassword​(java.lang.String orderer, java.lang.String ordererPassword, java.lang.String username, java.lang.String singleServingPassword)
      Deprecated.
      Bei Verwendung von SRP bzw. verschlüsselten Logins wird systembedingt der Index des Einmalpassworts benötigt.
      void deleteUser​(java.lang.String orderer, java.lang.String ordererPassword, java.lang.String userToDelete)
      Beauftragt die Konfiguration ein Benutzerkonto zu löschen.
      void disableOneTimePassword​(java.lang.String orderer, java.lang.String ordererPassword, java.lang.String username, int passwordIndex)
      Markiert ein einzelnes Einmalpasswort als ungültig.
      int getSingleServingPasswordCount​(java.lang.String orderer, java.lang.String ordererPassword, java.lang.String username)
      Ermittelt die Anzahl der noch vorhandenen, gültigen Einmal-Passwörter.
      default SrpVerifierAndUser getSrpVerifier​(java.lang.String orderer, java.lang.String ordererPassword, java.lang.String username)
      Gibt den aktuellen Überprüfungscode zurück, mit dem eine Applikation (oder der Datenverteiler) eine SRP-Authentifizierung durchführen kann und damit feststellen kann, ob ein Benutzer sein Passwort kennt.
      SrpVerifierAndUser getSrpVerifier​(java.lang.String orderer, java.lang.String ordererPassword, java.lang.String username, int passwordIndex)
      Gibt den aktuellen Überprüfungscode zurück, mit dem eine Applikation (oder der Datenverteiler) eine SRP-Authentifizierung durchführen kann und damit feststellen kann, ob ein Benutzer sein Passwort kennt.
      int[] getValidOneTimePasswordIDs​(java.lang.String orderer, java.lang.String ordererPassword, java.lang.String username)
      Gibt von einem Benutzer die Indizes der noch unbenutzten, verwendbaren, Einmalpasswörter zurück.
      boolean isUserAdmin​(java.lang.String orderer, java.lang.String ordererPassword, java.lang.String username)
      Prüft, ob ein angegebener Benutzer Admin-Rechte besitzt.
      boolean isUserValid​(java.lang.String orderer, java.lang.String ordererPassword, java.lang.String username)
      Prüft, ob ein angegebener Benutzername gültig ist, d.h. ob er ein zugeordnetes Systemobjekt und einen Eintrag in der benutzerverwaltung.xml hat.
      void setSrpVerifier​(java.lang.String orderer, java.lang.String ordererPassword, java.lang.String user, SrpVerifierData verifier)
      Setzt den SRP-Überprüfungscode des angegebenen Benutzers.
      java.util.List<SystemObject> subscribeUserChangeListener​(MutableCollectionChangeListener listener)
      Erstellt einen Listener der Änderungen an den Benutzern überwacht.
      void unsubscribeUserChangeListener​(MutableCollectionChangeListener listener)
      Entfernt den mit subscribeUserChangeListener erstellten Listener
    • Method Detail

      • createNewUser

        void createNewUser​(java.lang.String orderer,
                           java.lang.String ordererPassword,
                           java.lang.String newUsername,
                           java.lang.String newUserPid,
                           java.lang.String newPassword,
                           boolean adminRights,
                           java.lang.String pidConfigurationArea)
                    throws ConfigurationTaskException
        Beauftragt die Konfiguration ein neues Benutzerkonto anzulegen. Zu einem Benutzerkonto gehören ein Benutzername, ein Passwort und die Rechte des Benutzers.

        Ein neuer Benutzer kann nur durch einen Benutzer angelegt werden, der die Rechte eines Administrators besitzt. Besitzt der Benutzer diese Rechte nicht, wird der Auftrag zur Konfiguration übertragen und dort abgelehnt.

        Parameters:
        orderer - Benutzername des Auftraggebers.
        ordererPassword - Passwort des Auftraggebers.
        newUsername - Benutzername des neuen Benutzers.
        newUserPid - Pid des neuen Benutzers. Wird der Leerstring ("") übergeben, wird dem Benutzer keine explizite Pid zugewiesen.
        newPassword - Passwort des neuen Benutzers.
        adminRights - true, wenn der neue Benutzer die Rechte eines Administrators besitzen soll; false, wenn der Benutzer keine speziellen Rechte besitzen soll.
        pidConfigurationArea - Pid des Konfigurationsbereichs, in dem der neue Benutzer angelegt werden soll.
        Throws:
        ConfigurationTaskException - Die Konfiguration kann den Auftrag nicht ausführen, weil die übergebenen Parameter falsch sind. So kann der Auftraggeber zum Beispiel nicht die nötigen Rechte besitzen einen neuen Benutzer anzulegen.
      • createNewUser

        void createNewUser​(java.lang.String orderer,
                           java.lang.String ordererPassword,
                           java.lang.String newUsername,
                           java.lang.String newUserPid,
                           java.lang.String newPassword,
                           boolean adminRights,
                           java.lang.String pidConfigurationArea,
                           java.util.Collection<DataAndATGUsageInformation> data)
                    throws ConfigurationTaskException
        Beauftragt die Konfiguration ein neues Benutzerkonto anzulegen. Zu einem Benutzerkonto gehören ein Benutzername, ein Passwort und die Rechte des Benutzers.

        Ein neuer Benutzer kann nur durch einen Benutzer angelegt werden, der die Rechte eines Administrators besitzt. Besitzt der Benutzer diese Rechte nicht, wird der Auftrag zur Konfiguration übertragen und dort abgelehnt.

        Parameters:
        orderer - Benutzername des Auftraggebers.
        ordererPassword - Passwort des Auftraggebers.
        newUsername - Benutzername des neuen Benutzers.
        newUserPid - Pid des neuen Benutzers. Wird der Leerstring ("") übergeben, wird dem Benutzer keine explizite Pid zugewiesen.
        newPassword - Passwort des neuen Benutzers.
        adminRights - true, wenn der neue Benutzer die Rechte eines Administrators besitzen soll; false, wenn der Benutzer keine speziellen Rechte besitzen soll.
        pidConfigurationArea - Pid des Konfigurationsbereichs, in dem der neue Benutzer angelegt werden soll.
        data - Konfigurierende Datensätze mit den dazugehörigen Attributgruppenverwendungen, die für das neue Benutzer-Objekt gespeichert werden sollen. Oder null falls keine Datensätze angelegt werden sollen.
        Throws:
        ConfigurationTaskException - Die Konfiguration kann den Auftrag nicht ausführen, weil die übergebenen Parameter falsch sind. So kann der Auftraggeber zum Beispiel nicht die nötigen Rechte besitzen einen neuen Benutzer anzulegen.
        See Also:
        ConfigurationArea.createDynamicObject(de.bsvrz.dav.daf.main.config.DynamicObjectType, String, String, java.util.Collection)
      • deleteUser

        void deleteUser​(java.lang.String orderer,
                        java.lang.String ordererPassword,
                        java.lang.String userToDelete)
                 throws ConfigurationTaskException
        Beauftragt die Konfiguration ein Benutzerkonto zu löschen. Alle Informationen, die zu einem Benutzerkonto gehören, sind mit dem Passwort des Auftraggebers zu verschlüsseln und verschlüsselt zu übertragen.

        Ein Benutzerkonto kann nur durch einen Benutzer gelöscht werden, der die Rechte eines Administrators besitzt.

        Parameters:
        orderer - Benutzername des Auftraggebers.
        ordererPassword - Passwort des Auftraggebers.
        userToDelete - Benutzername des zu löschenden Benutzers.
        Throws:
        ConfigurationTaskException - Die Konfiguration kann den Auftrag nicht ausführen.
      • isUserAdmin

        boolean isUserAdmin​(java.lang.String orderer,
                            java.lang.String ordererPassword,
                            java.lang.String username)
                     throws ConfigurationTaskException
        Prüft, ob ein angegebener Benutzer Admin-Rechte besitzt. Jeder Benutzer kann diese Aktion ausführen.
        Parameters:
        orderer - Benutzername des Auftraggebers.
        ordererPassword - Passwort des Auftraggebers.
        username - Name des zu prüfenden Benutzers
        Returns:
        true falls der Benutzer Admin-Rechte hat
        Throws:
        ConfigurationTaskException - Die Konfiguration kann den Auftrag nicht ausführen.
      • changeUserRights

        void changeUserRights​(java.lang.String orderer,
                              java.lang.String ordererPassword,
                              java.lang.String user,
                              boolean adminRights)
                       throws ConfigurationTaskException
        Beauftragt die Konfiguration die Rechte eines Benutzers zu ändern.

        Nur ein Benutzer mit den Rechten eines Administrators darf die Rechte anderer Benutzer ändern. Besitzt ein Benutzer diese Rechte nicht wird der Auftrag an die Konfiguration verschickt und dort von der Konfiguration abgelehnt.

        Parameters:
        orderer - Auftraggeber, der die Rechte eines Benutzers ändern möchte.
        ordererPassword - Passwort des Auftraggebers.
        user - Benutzer, dessen Rechte geändert werden sollen.
        adminRights - true, wenn der Benutzer, der mit user identifiziert wird, die Rechte eines Administrators erhalten soll; false, wenn der Benutzer, der mit user identifiziert wird, keine speziellen Rechte erhalten soll.
        Throws:
        ConfigurationTaskException - Die Konfiguration kann den Auftrag nicht ausführen, weil die übergebenen Parameter falsch sind. So kann der Auftraggeber zum Beispiel nicht die nötigen Rechte besitzen die Rechte eines anderen Benutzers zu ändern.
      • changeUserPassword

        void changeUserPassword​(java.lang.String orderer,
                                java.lang.String ordererPassword,
                                java.lang.String user,
                                java.lang.String newUserPassword)
                         throws ConfigurationTaskException
        Beauftragt die Konfiguration das Passwort eines Benutzers zu ändern. Diese Methode kann von jedem Benutzer aufgerufen werden. Es ist jedem Benutzer gestattet das Passwort seines Benutzerkontos zu ändern. Soll das Passwort eines fremden Benutzerkontos geändert werden, sind die Rechte eines Administrators nötig.

        Parameters:
        orderer - Benutzername des Auftraggebers
        ordererPassword - Derzeit gültiges Passwort, falls der Benutzername orderer und user identisch sind. Sind die Parameter nicht identisch, muss der Benutzer, der mit orderer identifiziert wird, die Rechte eines Administrators besitzen und sein Passwort übergeben
        user - Benutzername des Benutzerkontos, dessen Passwort geändert werden soll
        newUserPassword - Neues Passwort des Benutzers, der mit user identifiziert wurde
        Throws:
        ConfigurationTaskException - Die Konfiguration kann den Auftrag nicht ausführen, weil die übergebenen Parameter falsch sind. So kann der Auftraggeber zum Beispiel nicht die nötigen Rechte besitzen das Passwort eines anderen Benutzers zu ändern oder das Passwort zum ändern ist falsch.
      • setSrpVerifier

        void setSrpVerifier​(java.lang.String orderer,
                            java.lang.String ordererPassword,
                            java.lang.String user,
                            SrpVerifierData verifier)
                     throws ConfigurationTaskException
        Setzt den SRP-Überprüfungscode des angegebenen Benutzers. Diese Methode tut dasselbe wie changeUserPassword(String, String, String, String), mit dem Unterschied, das `changeUserPassword` den Überprüfungscode anhand des gegebenen Passworts berechnet, während diese Methode einen bereits irgendwo berechneten Überprüfungscode an die Konfiguration überträgt
        Parameters:
        orderer - Benutzername des Auftraggebers
        ordererPassword - Derzeit gültiges Passwort, falls der Benutzername orderer und user identisch sind. Sind die Parameter nicht identisch, muss der Benutzer, der mit orderer identifiziert wird, die Rechte eines Administrators besitzen und sein Passwort übergeben
        user - Benutzername des Benutzerkontos, dessen Passwort geändert werden soll
        verifier - neuer Überprüfungscode für den angegebenen Benutzer, wird vo nder Konfiguration zur Überprüfung des Passworts benutzt, ohne dass diese selbst das Passwort wissen muss
        Throws:
        ConfigurationTaskException - Die Konfiguration kann den Auftrag nicht ausführen, weil die übergebenen Parameter falsch sind. So kann der Auftraggeber zum Beispiel nicht die nötigen Rechte besitzen das Passwort eines anderen Benutzers zu ändern oder das Passwort zum ändern ist falsch.
      • createSingleServingPassword

        @Deprecated
        void createSingleServingPassword​(java.lang.String orderer,
                                         java.lang.String ordererPassword,
                                         java.lang.String username,
                                         java.lang.String singleServingPassword)
                                  throws ConfigurationTaskException
        Deprecated.
        Bei Verwendung von SRP bzw. verschlüsselten Logins wird systembedingt der Index des Einmalpassworts benötigt. Diesen gibt die Methode nicht zurück. Daher ist die Methode (zumindest ohne direkten Zugriff auf die benutzerverwaltung.xml) bei Verwendung von verschlüsselter Anmeldung nicht mehr sinnvoll nutzbar. Als Alternative gibt es die Methode createOneTimePasswords(String, String, String, String...), die allerdings eine aktuelle Konfiguration voraussetzt.
        Beauftragt die Konfiguration ein Einmal-Passwort zu erzeugen und es einem Benutzer zu zuordnen.

        Damit dieser Auftrag ausgeführt werden kann, muss der Auftraggeber orderer die Rechte eines Administrators besitzen. Besitzt der Auftraggeber diese Rechte nicht, wird der Auftrag zwar zur Konfiguration übertragen, dort aber abgelehnt.

        Parameters:
        orderer - Benutzername des Auftraggebers
        ordererPassword - Passwort des Auftraggebers.
        username - Benutzername, dem ein Einmal-Passwort hinzugefügt werden soll.
        singleServingPassword - Einmal-Passwort das dem Benutzer, der mit username identifiziert wird, hinzugefügt wird.
        Throws:
        ConfigurationTaskException - Die Konfiguration kann den Auftrag nicht ausführen, weil die übergebenen Parameter falsch sind. So kann der Auftraggeber zum Beispiel nicht die nötigen Rechte besitzen ein Einmal-Passwort anzulegen oder das Passwort existierte bereits, usw..
      • getSingleServingPasswordCount

        int getSingleServingPasswordCount​(java.lang.String orderer,
                                          java.lang.String ordererPassword,
                                          java.lang.String username)
                                   throws ConfigurationTaskException
        Ermittelt die Anzahl der noch vorhandenen, gültigen Einmal-Passwörter. Jeder Benutzer kann diese Anzahl für seinen eigenen Account ermitteln, für fremde Accounts sind Admin-Rechte notwendig.
        Parameters:
        orderer - Benutzername des Auftraggebers
        ordererPassword - Passwort des Auftraggebers, dies wird zum verschlüsseln benutzt und darf nicht mit übertragen werden
        username - Benutzername, dessen Einmalpasswörter geprüft werden sollen.
        Returns:
        Anzahl der noch vorhandenen, gültigen Einmal-Passwörter
        Throws:
        ConfigurationTaskException - Die Konfiguration kann den Auftrag nicht ausführen.
        See Also:
        getValidOneTimePasswordIDs(String, String, String)
      • clearSingleServingPasswords

        void clearSingleServingPasswords​(java.lang.String orderer,
                                         java.lang.String ordererPassword,
                                         java.lang.String username)
                                  throws ConfigurationTaskException
        Löscht alle Einmalpasswörter für einen angegebenen Benutzer. Es ist jedem Benutzer gestattet die Passwörter seines eigenen Accounts zu löschen. Soll ein fremdes Benutzerkonto geändert werden, sind Admin-Rechte nötig.
        Parameters:
        orderer - Benutzername des Auftraggebers
        ordererPassword - Passwort des Auftraggebers, dies wird zum verschlüsseln benutzt und darf nicht mit übertragen werden
        username - Benutzername, dessen Einmalpasswörter gelöscht werden sollen.
        Throws:
        ConfigurationTaskException - Die Konfiguration kann den Auftrag nicht ausführen.
      • isUserValid

        boolean isUserValid​(java.lang.String orderer,
                            java.lang.String ordererPassword,
                            java.lang.String username)
                     throws ConfigurationTaskException
        Prüft, ob ein angegebener Benutzername gültig ist, d.h. ob er ein zugeordnetes Systemobjekt und einen Eintrag in der benutzerverwaltung.xml hat. Jeder Benutzer kann diese Aktion ausführen. Zur (verschlüsselten) Übertragung des Vorgangs ist dennoch die Angabe eines gültigen Benutzernamens und Passworts notwendig. Mit dieser Funktion kann geprüft werden, ob die Benutzernamen, die subscribeUserChangeListener(de.bsvrz.dav.daf.main.config.MutableCollectionChangeListener) liefert, tatsächlichen zu einem gültigen Benutzer gehören, da subscribeUserChangeListener nur die Systemobjekte berücksichtigt.
        Parameters:
        orderer - Benutzername des Auftraggebers.
        ordererPassword - Passwort des Auftraggebers.
        username - Name des zu prüfenden Benutzers
        Returns:
        true falls der Benutzer in der Konfiguration gespeichert ist
        Throws:
        ConfigurationTaskException - Die Konfiguration kann den Auftrag nicht ausführen.
      • subscribeUserChangeListener

        java.util.List<SystemObject> subscribeUserChangeListener​(MutableCollectionChangeListener listener)
        Erstellt einen Listener der Änderungen an den Benutzern überwacht. Gibt eine aktuelle Liste aller Benutzer zurück.
        Parameters:
        listener - Objekt, an das Rückmeldungen gesendet werden sollen. null, wenn nur die Liste der aktuellen Benutzer geholt werden soll.
        Returns:
        Liste der aktuell vorhandenen Benutzer. Es ist eventuell ratsam, mit isUserValid zu prüfen, ob die Benutzer tatsächlich in der benutzerverwaltung.xml abgelegt sind, da hier nur die SystemObjekte berücksichtigt werden.
      • unsubscribeUserChangeListener

        void unsubscribeUserChangeListener​(MutableCollectionChangeListener listener)
        Entfernt den mit subscribeUserChangeListener erstellten Listener
        Parameters:
        listener - Objekt, and das keine Rückmeldungen mehr gesendet werden sollen.
      • getSrpVerifier

        SrpVerifierAndUser getSrpVerifier​(java.lang.String orderer,
                                          java.lang.String ordererPassword,
                                          java.lang.String username,
                                          int passwordIndex)
                                   throws ConfigurationTaskException
        Gibt den aktuellen Überprüfungscode zurück, mit dem eine Applikation (oder der Datenverteiler) eine SRP-Authentifizierung durchführen kann und damit feststellen kann, ob ein Benutzer sein Passwort kennt.

        In der Antwort ist außerdem das Passwort-Salt enthalten, welches benötigt wird um (bei Kenntnis des Passworts) ein Authentifizierungs-Token für eine passwd-Datei zu erzeugen. Hierfür kann die Methode SrpClientAuthentication.createLoginToken(SrpVerifierData, String, char[]) benutzt werden.

        Es ist jedem Benutzer gestattet seinen eigenen Überprüfungscode abzufragen. Benutzer mit Admin-Rechten können auch fremde Überprüfungs-Codes abfragen. Zu beachten ist, dass es mit einem Überprüfungscode nur möglich ist, zu prüfen ob ein Passwort gültig ist. Es sind keine Rückschlüsse auf das Klartextpasswort oder auf den Authentifizierungs-Token x möglich.

        Ist der Benutzer nicht vorhanden, ist die User-ID 0, aber die Konfiguration generiert dennoch einen "gefälschten" Verifier. Auf diese Weise kann ein Verwender dieser Klasse erreichen, dass nicht-eingeloggte Clients nicht einfach ausprobieren können, welche Benutzer existieren und welche nicht. Dieses Verhalten wird besonders bei der Authentifizierung am Datenverteiler benötigt, andere Anwender dieser Klasse können den gefälschten Verifier in der Regel ignorieren, außer es soll ein ähnliches Verhalten erreicht werden. Siehe hierzu z.B. SrpServerAuthentication.step1(String, BigInteger, BigInteger, boolean).

        Parameters:
        orderer - Auftraggeber
        ordererPassword - Passwort des Auftraggebers
        username - Benutzername des Benutzers, von dem der Überprüfungscode geholt werden soll.
        passwordIndex - Optional kann der Verifier eines Einmalpassworts mit dem angegebenen Index angefragt werden.
        Returns:
        ID des Benutzers (oder 0) und die zugehörigen SRP-Daten
        Throws:
        ConfigurationTaskException - Die Konfiguration kann den Auftrag nicht ausführen. Insbesondere wird die spezifischere SrpNotSupportedException geworfen, wenn die Konfiguration SRP nicht unterstützt und aktualisiert werden muss.
      • getSrpVerifier

        default SrpVerifierAndUser getSrpVerifier​(java.lang.String orderer,
                                                  java.lang.String ordererPassword,
                                                  java.lang.String username)
                                           throws ConfigurationTaskException
        Gibt den aktuellen Überprüfungscode zurück, mit dem eine Applikation (oder der Datenverteiler) eine SRP-Authentifizierung durchführen kann und damit feststellen kann, ob ein Benutzer sein Passwort kennt.

        In der Antwort ist außerdem das Passwort-Salt enthalten, welches benötigt wird um (bei Kenntnis des Passworts) ein Authentifizierungs-Token für eine passwd-Datei zu erzeugen. Hierfür kann die Methode SrpClientAuthentication.createLoginToken(SrpVerifierData, String, char[]) benutzt werden.

        Es ist jedem Benutzer gestattet seinen eigenen Überprüfungscode abzufragen. Benutzer mit Admin-Rechten können auch fremde Überprüfungs-Codes abfragen. Zu beachten ist, dass es mit einem Überprüfungscode nur möglich ist, zu prüfen ob ein Passwort gültig ist. Es sind keine Rückschlüsse auf das Klartextpasswort oder auf den Token x möglich.

        Ist der Benutzer nicht vorhanden, ist die User-ID 0, aber die Konfiguration generiert dennoch einen "gefälschten" Verifier. Auf diese Weise kann ein Verwender dieser Klasse erreichen, dass nicht-eingeloggte Clients nicht einfach ausprobieren können, welche Benutzer existieren und welche nicht. Dieses Verhalten wird besonders bei der Authentifizierung am Datenverteiler benötigt, andere Anwender dieser Klasse können den gefälschten Verifier in der Regel ignorieren, außer es soll ein ähnliches Verhalten erreicht werden. Siehe hierzu z.B. SrpServerAuthentication.step1(String, BigInteger, BigInteger, boolean).

        Parameters:
        orderer - Auftraggeber
        ordererPassword - Passwort des Auftraggebers
        username - Benutzername des Benutzers, von dem der Überprüfungscode geholt werden soll.
        Returns:
        ID des Benutzers (oder 0) und die zugehörigen SRP-Daten
        Throws:
        ConfigurationTaskException - Die Konfiguration kann den Auftrag nicht ausführen. Insbesondere wird die spezifischere SrpNotSupportedException geworfen, wenn die Konfiguration SRP nicht unterstützt und aktualisiert werden muss.
      • disableOneTimePassword

        void disableOneTimePassword​(java.lang.String orderer,
                                    java.lang.String ordererPassword,
                                    java.lang.String username,
                                    int passwordIndex)
                             throws ConfigurationTaskException
        Markiert ein einzelnes Einmalpasswort als ungültig. Es ist jedem Benutzer gestattet die Passwörter seines eigenen Accounts zu löschen. Soll ein fremdes Benutzerkonto geändert werden, sind Admin-Rechte nötig.
        Parameters:
        orderer - Auftraggeber
        ordererPassword - Auftraggeber-Passwort
        username - Benutzer, dessen Einmalpasswort als ungültig/benutzt markiert werden soll
        passwordIndex - Index des Einmalpassworts (≥ 0)
        Throws:
        ConfigurationTaskException - Die Konfiguration kann den Auftrag nicht ausführen (z.B. Login-Daten falsch oder die Konfiguration unterstützt den Auftrag nicht und muss aktualisiert werden).
      • createOneTimePasswords

        int createOneTimePasswords​(java.lang.String orderer,
                                   java.lang.String ordererPassword,
                                   java.lang.String username,
                                   java.lang.String... passwords)
                            throws ConfigurationTaskException
        Fügt einem Benutzer eine Liste von Einmalpasswörtern hinzu. Die Einmalpasswörter werden in der Reihenfolge in der Konfiguration gespeichert, wie sie übergeben werden, d.h. das Passwort mit dem Array-Index 0 erhält von der Konfiguration den nächsten verfügbaren Index. Diesen gibt diese Methode zurück. Beispiel: Diese Methode gibt 9 zurück, dann erhält das erste übergebene Passwort den Index 9, das zweite den Index 10 usw. Will sich der Benutzer später mit einem Einmalpasswort einloggen, muss er den Passwort-Index mit einem Minus getrennt an seinen Benutzernamen anhängen, z.B. "Tester-19" für das Einmalpasswort mit Index 19 am Benutzer Tester. Damit dieser Auftrag ausgeführt werden kann, muss der Auftraggeber orderer die Rechte eines Administrators besitzen. Besitzt der Auftraggeber diese Rechte nicht, wird der Auftrag zwar zur Konfiguration übertragen, dort aber abgelehnt.
        Parameters:
        orderer - Auftraggeber
        ordererPassword - Passwort des Auftraggebers
        username - Benutzername für den Passwörter angelegt werden sollen
        passwords - Anzulegende Passwörter
        Returns:
        Index des ersten eingefügten Passworts
        Throws:
        ConfigurationTaskException - Die Konfiguration kann den Auftrag nicht ausführen (z.B. Login-Daten falsch oder die Konfiguration unterstützt den Auftrag nicht und muss aktualisiert werden).
      • getValidOneTimePasswordIDs

        int[] getValidOneTimePasswordIDs​(java.lang.String orderer,
                                         java.lang.String ordererPassword,
                                         java.lang.String username)
                                  throws ConfigurationTaskException
        Gibt von einem Benutzer die Indizes der noch unbenutzten, verwendbaren, Einmalpasswörter zurück. Die Länge des Arrays entspricht der Rückgabe von getSingleServingPasswordCount(String, String, String). Damit dieser Auftrag für einen fremden Benutzer ausgeführt werden kann, muss der Auftraggeber orderer die Rechte eines Administrators besitzen. Besitzt der Auftraggeber diese Rechte nicht, wird der Auftrag zwar zur Konfiguration übertragen, dort aber abgelehnt. Für den eigenen Benutzer ist die Anfrage in jedem Fall erlaubt.
        Parameters:
        orderer - Auftraggeber
        ordererPassword - Passwort des Auftraggebers
        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 - Die Konfiguration kann den Auftrag nicht ausführen (z.B. Login-Daten falsch oder die Konfiguration unterstützt den Auftrag nicht und muss aktualisiert werden).