public class UserManagementFileOffline extends java.lang.Object implements UserManagementFileInterface
Klasse zur Bearbeitung der benutzerverwaltung.xml ohne eine Konfiguration starten zu müssen. Inhaltlich ähnlich mit de.bsvrz.puk.config.main.authentication.ConfigAuthentication
| Modifier and Type | Class and Description |
|---|---|
private static class |
UserManagementFileOffline.ConfigAuthenticationEntityResolver
Implementierung eines EntityResolvers, der Referenzen auf den Public-Identifier “-//K2S//DTD Verwaltung//DE” ersetzt durch die verwaltungsdaten.dtd Resource-Datei in diesem Package.
|
private class |
UserManagementFileOffline.SingleServingPassword
Speichert alle Informationen zu einem “Einmal-Passwort” (Passwort, Index, “schon gebraucht”)
|
private class |
UserManagementFileOffline.UserAccount
Diese Klasse Speichert alle Informationen, die zu Benutzerkonto gehören.
|
| Modifier and Type | Field and Description |
|---|---|
private FileLock |
_lockAuthenticationFile |
private static java.lang.String |
_secretToken |
private java.util.Map<java.lang.String,UserManagementFileOffline.UserAccount> |
_userAccounts
Als Schlüssel dient der Benutzername (String) als Value werden alle Informationen, die zu einem Benutzer gespeichert wurden, zurückgegeben.
|
private org.w3c.dom.Document |
_xmlDocument
Repräsentiert die vollständige XML-Datei.
|
private java.io.File |
_xmlFile
XML-Datei, wird zum anlegen einer Sicherheitskopie gebraucht
|
| Constructor and Description |
|---|
UserManagementFileOffline(java.io.File userFile)
Lädt alle Informationen aus der angegebenen Datei.
|
| Modifier and Type | Method and Description |
|---|---|
void |
clearOneTimePasswords(java.lang.String userName) |
void |
close() |
java.util.Map<java.lang.Integer,java.lang.String> |
createOneTimePasswords(java.lang.String userName,
java.util.Collection<java.lang.String> passwords) |
void |
createUser(java.lang.String userName,
ClientCredentials password,
boolean admin,
ConsoleInterface consoleInterface) |
private void |
createUserXML(java.lang.String newUserName,
java.lang.String newUserPassword,
boolean admin)
Erzeugt einen neuen Benutzer im speicher und speichert diesen in einer XML-Datei.
|
private org.w3c.dom.Element |
createXMLSingleServingPasswort(java.lang.String newPassword,
int passwortindex)
Erzeugt ein XML Objekt, das einem Einmal-Passwort entspricht.
|
private org.w3c.dom.Element |
createXMLUserAccount(java.lang.String name,
java.lang.String password,
java.lang.String admin)
Erzeugt ein XML Objekt, das einem Benutzerkonto entspricht.
|
void |
deleteUser(java.lang.String userName) |
private void |
deleteUserXML(java.lang.String userToDelete)
Löscht einen Benutzer aus der XML-Datei
|
void |
disableOneTimePassword(java.lang.String userName,
int passwordID) |
private SrpVerifierData |
fakeVerifier(java.lang.String userName,
byte[] salt,
ClientCredentials clientCredentials) |
SrpCryptoParameter |
getCryptoParameter(java.lang.String userName,
int passwordIndex) |
private SrpCryptoParameter |
getCryptoParameters() |
java.lang.String |
getDavPid() |
ClientCredentials |
getLoginToken(java.lang.String userName,
char[] password,
int passwordIndex) |
int[] |
getOneTimePasswordIDs(java.lang.String userName) |
java.util.Set<java.lang.String> |
getUsers() |
SrpVerifierAndUser |
getVerifier(java.lang.String userName,
int passwordIndex) |
boolean |
isUserAdmin(java.lang.String userName) |
private void |
readUserAccounts()
Ließt alle Benutzer aus der XML-Datei ein und erzeugt entsprechende Java-Objekte.
|
private void |
saveXMLFile()
Speichert alle Benutzerdaten in einer XML-Datei.
|
private byte[] |
secretHash(java.lang.String userName,
int passwordIndex) |
ClientCredentials |
setRandomToken(java.lang.String userName) |
void |
setUserAdmin(java.lang.String userName,
boolean admin) |
ClientCredentials |
setUserPassword(java.lang.String userName,
char[] password) |
void |
setVerifier(java.lang.String userName,
SrpVerifierData verifier) |
java.lang.String |
toString() |
boolean |
validateClientCredentials(java.lang.String userName,
ClientCredentials clientCredentials,
int passwordIndex) |
private final java.util.Map<java.lang.String,UserManagementFileOffline.UserAccount> _userAccounts
Als Schlüssel dient der Benutzername (String) als Value werden alle Informationen, die zu einem Benutzer gespeichert wurden, zurückgegeben.
private final java.io.File _xmlFile
XML-Datei, wird zum anlegen einer Sicherheitskopie gebraucht
private final org.w3c.dom.Document _xmlDocument
Repräsentiert die vollständige XML-Datei.
private final FileLock _lockAuthenticationFile
private static final java.lang.String _secretToken
public UserManagementFileOffline(java.io.File userFile)
throws javax.xml.parsers.ParserConfigurationException
Lädt alle Informationen aus der angegebenen Datei.
userFile - XML-Datei, in der alle Benutzer gespeichert sind.javax.xml.parsers.ParserConfigurationExceptionprivate void readUserAccounts()
Ließt alle Benutzer aus der XML-Datei ein und erzeugt entsprechende Java-Objekte. Diese werden dann in der in der Hashtable gespeichert. Die Methode ist private, weil diese Funktionalität nur an dieser Stelle zur Verfügung gestellt werden soll.
public java.util.Set<java.lang.String> getUsers()
getUsers in interface UserManagementFileInterfacepublic boolean isUserAdmin(java.lang.String userName)
throws ConfigurationTaskException
isUserAdmin in interface UserManagementFileInterfaceConfigurationTaskExceptionpublic void setUserAdmin(java.lang.String userName,
boolean admin)
throws ConfigurationTaskException
setUserAdmin in interface UserManagementFileInterfaceConfigurationTaskExceptionpublic SrpCryptoParameter getCryptoParameter(java.lang.String userName, int passwordIndex) throws ConfigurationTaskException
getCryptoParameter in interface UserManagementFileInterfaceConfigurationTaskExceptionpublic boolean validateClientCredentials(java.lang.String userName,
ClientCredentials clientCredentials,
int passwordIndex)
throws ConfigurationTaskException
validateClientCredentials in interface UserManagementFileInterfaceConfigurationTaskExceptionpublic ClientCredentials setUserPassword(java.lang.String userName, char[] password) throws ConfigurationTaskException
setUserPassword in interface UserManagementFileInterfaceConfigurationTaskExceptionpublic ClientCredentials setRandomToken(java.lang.String userName) throws ConfigurationTaskException
setRandomToken in interface UserManagementFileInterfaceConfigurationTaskExceptionpublic ClientCredentials getLoginToken(java.lang.String userName, char[] password, int passwordIndex) throws ConfigurationTaskException
getLoginToken in interface UserManagementFileInterfaceConfigurationTaskExceptionpublic void createUser(java.lang.String userName,
ClientCredentials password,
boolean admin,
ConsoleInterface consoleInterface)
throws ConfigurationTaskException
createUser in interface UserManagementFileInterfaceConfigurationTaskExceptionpublic void deleteUser(java.lang.String userName)
throws ConfigurationTaskException
deleteUser in interface UserManagementFileInterfaceConfigurationTaskExceptionpublic java.util.Map<java.lang.Integer,java.lang.String> createOneTimePasswords(java.lang.String userName,
java.util.Collection<java.lang.String> passwords)
throws ConfigurationTaskException
createOneTimePasswords in interface UserManagementFileInterfaceConfigurationTaskExceptionpublic void clearOneTimePasswords(java.lang.String userName)
throws ConfigurationTaskException
clearOneTimePasswords in interface UserManagementFileInterfaceConfigurationTaskExceptionpublic int[] getOneTimePasswordIDs(java.lang.String userName)
throws ConfigurationTaskException
getOneTimePasswordIDs in interface UserManagementFileInterfaceConfigurationTaskExceptionpublic void disableOneTimePassword(java.lang.String userName,
int passwordID)
throws ConfigurationTaskException
disableOneTimePassword in interface UserManagementFileInterfaceConfigurationTaskExceptionpublic java.lang.String getDavPid()
getDavPid in interface UserManagementFileInterfacepublic void close()
throws java.io.IOException
java.io.IOExceptionpublic java.lang.String toString()
toString in class java.lang.Objectprivate void createUserXML(java.lang.String newUserName,
java.lang.String newUserPassword,
boolean admin)
throws java.io.IOException,
javax.xml.transform.TransformerException
Erzeugt einen neuen Benutzer im speicher und speichert diesen in einer XML-Datei.
newUserName - BenutzernamenewUserPassword - Passwortadmin - Adminrechte ja/neinjava.io.IOExceptionjavax.xml.transform.TransformerExceptionpublic SrpVerifierAndUser getVerifier(java.lang.String userName, int passwordIndex)
getVerifier in interface UserManagementFileInterfacepublic void setVerifier(java.lang.String userName,
SrpVerifierData verifier)
throws ConfigurationTaskException
setVerifier in interface UserManagementFileInterfaceConfigurationTaskExceptionprivate SrpVerifierData fakeVerifier(java.lang.String userName, byte[] salt, ClientCredentials clientCredentials)
private byte[] secretHash(java.lang.String userName,
int passwordIndex)
private SrpCryptoParameter getCryptoParameters()
private void deleteUserXML(java.lang.String userToDelete)
throws javax.xml.transform.TransformerException,
java.io.IOException
Löscht einen Benutzer aus der XML-Datei
userToDelete - Benutzer, der gelöscht werden solljavax.xml.transform.TransformerException - Fehler beim XML-Zugriffjava.io.IOException - XMl-Datei nciht gefundenprivate void saveXMLFile()
throws javax.xml.transform.TransformerException,
java.io.IOException
Speichert alle Benutzerdaten in einer XML-Datei.
javax.xml.transform.TransformerExceptionjava.io.IOExceptionprivate org.w3c.dom.Element createXMLSingleServingPasswort(java.lang.String newPassword,
int passwortindex)
Erzeugt ein XML Objekt, das einem Einmal-Passwort entspricht.
newPassword - Passwort des neuen Einmal-Passwortspasswortindex - Index des Einmal-Passwortsprivate org.w3c.dom.Element createXMLUserAccount(java.lang.String name,
java.lang.String password,
java.lang.String admin)
Erzeugt ein XML Objekt, das einem Benutzerkonto entspricht. Einmal-Passwörter müssen mit der entsprechenden Methode erzeugt werden.
name - Name des Benutzerspassword - Passwort des Benutzers (in Klarschrift)admin - ja = Der Benutzer besitzt Admin-Rechte; nein = Der Benutzer besitzt keine Admin-Rechte