public interface UserAdministration
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.
Modifier and Type | Method and 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. 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. |
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
|
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
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.
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.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.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
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.
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.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.ConfigurationArea.createDynamicObject(de.bsvrz.dav.daf.main.config.DynamicObjectType, String, String,
java.util.Collection)
void deleteUser(java.lang.String orderer, java.lang.String ordererPassword, java.lang.String userToDelete) throws ConfigurationTaskException
Ein Benutzerkonto kann nur durch einen Benutzer gelöscht werden, der die Rechte eines Administrators besitzt.
orderer
- Benutzername des Auftraggebers.ordererPassword
- Passwort des Auftraggebers.userToDelete
- Benutzername des zu löschenden Benutzers.ConfigurationTaskException
- Die Konfiguration kann den Auftrag nicht ausführen.boolean isUserAdmin(java.lang.String orderer, java.lang.String ordererPassword, java.lang.String username) throws ConfigurationTaskException
orderer
- Benutzername des Auftraggebers.ordererPassword
- Passwort des Auftraggebers.username
- Name des zu prüfenden BenutzersConfigurationTaskException
- Die Konfiguration kann den Auftrag nicht ausführen.void changeUserRights(java.lang.String orderer, java.lang.String ordererPassword, java.lang.String user, boolean adminRights) throws ConfigurationTaskException
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.
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.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.void changeUserPassword(java.lang.String orderer, java.lang.String ordererPassword, java.lang.String user, java.lang.String newUserPassword) throws ConfigurationTaskException
orderer
- Benutzername des AuftraggebersordererPassword
- 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 übergebenuser
- Benutzername des Benutzerkontos, dessen Passwort geändert werden sollnewUserPassword
- Neues Passwort des Benutzers, der mit user
identifiziert wurdeConfigurationTaskException
- 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.void setSrpVerifier(java.lang.String orderer, java.lang.String ordererPassword, java.lang.String user, SrpVerifierData verifier) throws ConfigurationTaskException
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ägtorderer
- Benutzername des AuftraggebersordererPassword
- 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 übergebenuser
- Benutzername des Benutzerkontos, dessen Passwort geändert werden sollverifier
- 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 mussConfigurationTaskException
- 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.@Deprecated void createSingleServingPassword(java.lang.String orderer, java.lang.String ordererPassword, java.lang.String username, java.lang.String singleServingPassword) throws ConfigurationTaskException
createOneTimePasswords(String, String,
String, String...)
, die allerdings eine aktuelle Konfiguration voraussetzt.
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.
orderer
- Benutzername des AuftraggebersordererPassword
- 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.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..int getSingleServingPasswordCount(java.lang.String orderer, java.lang.String ordererPassword, java.lang.String username) throws ConfigurationTaskException
orderer
- Benutzername des AuftraggebersordererPassword
- Passwort des Auftraggebers, dies wird zum verschlüsseln benutzt und darf nicht mit übertragen werdenusername
- Benutzername, dessen Einmalpasswörter geprüft werden sollen.ConfigurationTaskException
- Die Konfiguration kann den Auftrag nicht ausführen.getValidOneTimePasswordIDs(String, String, String)
void clearSingleServingPasswords(java.lang.String orderer, java.lang.String ordererPassword, java.lang.String username) throws ConfigurationTaskException
orderer
- Benutzername des AuftraggebersordererPassword
- Passwort des Auftraggebers, dies wird zum verschlüsseln benutzt und darf nicht mit übertragen werdenusername
- Benutzername, dessen Einmalpasswörter gelöscht werden sollen.ConfigurationTaskException
- Die Konfiguration kann den Auftrag nicht ausführen.boolean isUserValid(java.lang.String orderer, java.lang.String ordererPassword, java.lang.String username) throws ConfigurationTaskException
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.orderer
- Benutzername des Auftraggebers.ordererPassword
- Passwort des Auftraggebers.username
- Name des zu prüfenden BenutzersConfigurationTaskException
- Die Konfiguration kann den Auftrag nicht ausführen.java.util.List<SystemObject> subscribeUserChangeListener(MutableCollectionChangeListener listener)
listener
- Objekt, an das Rückmeldungen gesendet werden sollen. null
, wenn nur die Liste der aktuellen Benutzer geholt werden
soll.void unsubscribeUserChangeListener(MutableCollectionChangeListener listener)
listener
- Objekt, and das keine Rückmeldungen mehr gesendet werden sollen.SrpVerifierAndUser getSrpVerifier(java.lang.String orderer, java.lang.String ordererPassword, java.lang.String username, int passwordIndex) throws ConfigurationTaskException
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)
.
orderer
- AuftraggeberordererPassword
- Passwort des Auftraggebersusername
- Benutzername des Benutzers, von dem der Überprüfungscode geholt werden soll.passwordIndex
- Optional kann der Verifier eines Einmalpassworts mit dem angegebenen Index angefragt werden.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.default SrpVerifierAndUser getSrpVerifier(java.lang.String orderer, java.lang.String ordererPassword, java.lang.String username) throws ConfigurationTaskException
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)
.
orderer
- AuftraggeberordererPassword
- Passwort des Auftraggebersusername
- Benutzername des Benutzers, von dem der Überprüfungscode geholt werden soll.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.void disableOneTimePassword(java.lang.String orderer, java.lang.String ordererPassword, java.lang.String username, int passwordIndex) throws ConfigurationTaskException
orderer
- AuftraggeberordererPassword
- Auftraggeber-Passwortusername
- Benutzer, dessen Einmalpasswort als ungültig/benutzt markiert werden sollpasswordIndex
- Index des Einmalpassworts (≥ 0)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).int createOneTimePasswords(java.lang.String orderer, java.lang.String ordererPassword, java.lang.String username, java.lang.String... passwords) throws ConfigurationTaskException
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.
orderer
- AuftraggeberordererPassword
- Passwort des Auftraggebersusername
- Benutzername für den Passwörter angelegt werden sollenpasswords
- Anzulegende PasswörterConfigurationTaskException
- 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).int[] getValidOneTimePasswordIDs(java.lang.String orderer, java.lang.String ordererPassword, java.lang.String username) throws ConfigurationTaskException
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.
orderer
- AuftraggeberordererPassword
- Passwort des Auftraggebersusername
- Benutzername für den Passwörter abgefragt werden sollenConfigurationTaskException
- 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).