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.ParserConfigurationException
private 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 UserManagementFileInterface
public boolean isUserAdmin(java.lang.String userName) throws ConfigurationTaskException
isUserAdmin
in interface UserManagementFileInterface
ConfigurationTaskException
public void setUserAdmin(java.lang.String userName, boolean admin) throws ConfigurationTaskException
setUserAdmin
in interface UserManagementFileInterface
ConfigurationTaskException
public SrpCryptoParameter getCryptoParameter(java.lang.String userName, int passwordIndex) throws ConfigurationTaskException
getCryptoParameter
in interface UserManagementFileInterface
ConfigurationTaskException
public boolean validateClientCredentials(java.lang.String userName, ClientCredentials clientCredentials, int passwordIndex) throws ConfigurationTaskException
validateClientCredentials
in interface UserManagementFileInterface
ConfigurationTaskException
public ClientCredentials setUserPassword(java.lang.String userName, char[] password) throws ConfigurationTaskException
setUserPassword
in interface UserManagementFileInterface
ConfigurationTaskException
public ClientCredentials setRandomToken(java.lang.String userName) throws ConfigurationTaskException
setRandomToken
in interface UserManagementFileInterface
ConfigurationTaskException
public ClientCredentials getLoginToken(java.lang.String userName, char[] password, int passwordIndex) throws ConfigurationTaskException
getLoginToken
in interface UserManagementFileInterface
ConfigurationTaskException
public void createUser(java.lang.String userName, ClientCredentials password, boolean admin, ConsoleInterface consoleInterface) throws ConfigurationTaskException
createUser
in interface UserManagementFileInterface
ConfigurationTaskException
public void deleteUser(java.lang.String userName) throws ConfigurationTaskException
deleteUser
in interface UserManagementFileInterface
ConfigurationTaskException
public 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 UserManagementFileInterface
ConfigurationTaskException
public void clearOneTimePasswords(java.lang.String userName) throws ConfigurationTaskException
clearOneTimePasswords
in interface UserManagementFileInterface
ConfigurationTaskException
public int[] getOneTimePasswordIDs(java.lang.String userName) throws ConfigurationTaskException
getOneTimePasswordIDs
in interface UserManagementFileInterface
ConfigurationTaskException
public void disableOneTimePassword(java.lang.String userName, int passwordID) throws ConfigurationTaskException
disableOneTimePassword
in interface UserManagementFileInterface
ConfigurationTaskException
public java.lang.String getDavPid()
getDavPid
in interface UserManagementFileInterface
public void close() throws java.io.IOException
java.io.IOException
public java.lang.String toString()
toString
in class java.lang.Object
private 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.IOException
javax.xml.transform.TransformerException
public SrpVerifierAndUser getVerifier(java.lang.String userName, int passwordIndex)
getVerifier
in interface UserManagementFileInterface
public void setVerifier(java.lang.String userName, SrpVerifierData verifier) throws ConfigurationTaskException
setVerifier
in interface UserManagementFileInterface
ConfigurationTaskException
private 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.TransformerException
java.io.IOException
private 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