public class SrpClientAuthentication
extends java.lang.Object
Wrapper-Klasse, die die Nimbus-SRP-Implementierung clientseitig kapselt
Modifier and Type | Class and Description |
---|---|
static class |
SrpClientAuthentication.AuthenticationResult
Ergebnis einer ARP-Authentifizierung
|
static interface |
SrpClientAuthentication.TelegramInterface
Interface mit dem ein Anwender der
SrpClientAuthentication -Klasse Telegramme sendet und empfängt |
Modifier and Type | Method and Description |
---|---|
static SrpClientAuthentication.AuthenticationResult |
authenticate(java.lang.String userName,
int passwordIndex,
ClientCredentials clientCredentials,
SrpClientAuthentication.TelegramInterface telegramInterface)
SRP-Authentifizierung auf Client-Seite
|
static ClientCredentials |
createLoginToken(SrpVerifierData srpVerifierData,
java.lang.String user,
char[] password)
Erstellt ein Login-Token, welcher ein binärer Code ist, bit dem sich der Client beim Server ausweisen kann ohne das Passwort im Klartext zu kennen.
|
static ClientCredentials |
createRandomToken(SrpCryptoParameter cryptoParams)
Erstellt ein zufälligen Login-Token, dem also kein (bekanntes) Klartext-Passwort zugrunde liegt.
|
static SrpVerifierData |
createVerifier(SrpCryptoParameter cryptoParams,
java.lang.String user,
ClientCredentials clientCredentials)
Erstellt einen SRP-Überprüfungscode mit einem zufälligen Salt.
|
static SrpVerifierData |
createVerifier(SrpCryptoParameter cryptoParams,
java.lang.String user,
ClientCredentials clientCredentials,
byte[] saltBytes)
Erstellt einen SRP-Überprüfungscode mit einem festen Salt.
|
static boolean |
validateVerifier(SrpVerifierData verifier,
java.lang.String user,
ClientCredentials clientCredentials)
Überprüft, ob ein Verifier zu einem Benutzernamen und Passwort passt.
|
public static SrpClientAuthentication.AuthenticationResult authenticate(java.lang.String userName, int passwordIndex, ClientCredentials clientCredentials, SrpClientAuthentication.TelegramInterface telegramInterface) throws CommunicationError, InconsistentLoginException, SrpNotSupportedException
SRP-Authentifizierung auf Client-Seite
userName
- BenutzernameclientCredentials
- Passwort oder Login-Schlüssel (SRP-“x”)telegramInterface
- Klasse/Interface zum Empfangen von Telegrammen über diese VerbindungCommunicationError
- Server antwortet nichtInconsistentLoginException
- Fehlerhafte Authentifikationsdaten (Passwort wahrscheinlich falsch)SrpNotSupportedException
- Server/Konfiguration unterstützt kein SRPpublic static SrpVerifierData createVerifier(SrpCryptoParameter cryptoParams, java.lang.String user, ClientCredentials clientCredentials)
Erstellt einen SRP-Überprüfungscode mit einem zufälligen Salt. Diese Methode eignet sich um clientseitig ein SRP-Überprüfungscode zu erstellen und um diesen dann zusammen mit dem Salt an den Server zu senden, ohne dass dieser das Passwort jemals sehen kann.
cryptoParams
- Cryptoparameteruser
- BenutzerclientCredentials
- Passwort oder Login-Tokenpublic static SrpVerifierData createVerifier(SrpCryptoParameter cryptoParams, java.lang.String user, ClientCredentials clientCredentials, byte[] saltBytes)
Erstellt einen SRP-Überprüfungscode mit einem festen Salt. Diese Methode macht dort Sinn, wo das Salt reproduzierbar identisch sein muss, z.B. wenn die Konfiguration einen Überprüfungscode für nicht vorhandene Benutzer “fälscht” (damit man nicht prüfen kann ob ein Benutzer exisitert oder nicht). Wäre das Salt zufällig könnte man durch mehrmalige Einlog-Versuche feststellen, dass sich das Salt ändert, was auf einen “gefälschten” Benutzer hindeuten würde.
cryptoParams
- Cryptoparameteruser
- BenutzerclientCredentials
- Passwort oder Login-TokensaltBytes
- Saltpublic static ClientCredentials createLoginToken(SrpVerifierData srpVerifierData, java.lang.String user, char[] password) throws InconsistentLoginException
Erstellt ein Login-Token, welcher ein binärer Code ist, bit dem sich der Client beim Server ausweisen kann ohne das Passwort im Klartext zu kennen. Dieses Token entspricht dem SRP-“x”. Es kann in der passwd-Datei gespeichert werden.
srpVerifierData
- Bestehender Überprüfungscode. Wird beim setzen des Passworts mit createVerifier(SrpCryptoParameter, String, ClientCredentials)
erzeugt und kann auch später mit UserAdministration.getSrpVerifier(String, String, String, int)
abgefragt werden.user
- Benutzernamepassword
- Zugehöriges PasswortClientCredentials.hasPassword()
liefert false, da es sich um einen Login-Token handelt). Kann mit toString in eine Hex-Darstellung umgewandelt/serialisiert werden. Die einzelnen Bytes sind mit ClientCredentials.getTokenData()
abrufbar.InconsistentLoginException
- Falls die angegebenen Daten (Benutzername/Passwort) nicht zum Verifier passenpublic static ClientCredentials createRandomToken(SrpCryptoParameter cryptoParams)
Erstellt ein zufälligen Login-Token, dem also kein (bekanntes) Klartext-Passwort zugrunde liegt.
cryptoParams
- Kryptographische Parameterpublic static boolean validateVerifier(SrpVerifierData verifier, java.lang.String user, ClientCredentials clientCredentials)
Überprüft, ob ein Verifier zu einem Benutzernamen und Passwort passt. Dies sollte nur clientseitig bzw. für Testzwecke benutzt werden, da der Server das Passwort gar nicht kennen darf.
verifier
- Bestehender Verifieruser
- BenutzernameclientCredentials
- Passwort oder Login-Token