public class SrpServerAuthentication
extends java.lang.Object
Wrapper-Klasse, die die Nimbus-SRP-Implementierung serverseitig kapselt
Modifier and Type | Field and Description |
---|---|
private com.nimbusds.srp6.SRP6ServerSession |
_srp6ServerSession |
private SrpCryptoParameter |
_srpCryptoParams |
Constructor and Description |
---|
SrpServerAuthentication(SrpCryptoParameter srpCryptoParams)
Erstellt eine neue SrpServerAuthentication-Instanz
|
Modifier and Type | Method and Description |
---|---|
java.lang.String |
getAuthenticatedUser()
Gibt den Namen des authentifizierten Benutzers zurück
|
java.math.BigInteger |
getSessionKey()
Gibt den Sitzungsschlüssel zurück
|
SrpCryptoParameter |
getSrpCryptoParams()
Gibt die kryptographischen Parameter zurück
|
java.math.BigInteger |
step1(java.lang.String userName,
java.math.BigInteger salt,
java.math.BigInteger verifier,
boolean mockUser)
SRP-Authentifizierung Schritt 1.
|
java.math.BigInteger |
step2(java.math.BigInteger a,
java.math.BigInteger m1)
SRP-Authentifizierung Schritt 2.
|
private final com.nimbusds.srp6.SRP6ServerSession _srp6ServerSession
private final SrpCryptoParameter _srpCryptoParams
public SrpServerAuthentication(SrpCryptoParameter srpCryptoParams)
Erstellt eine neue SrpServerAuthentication-Instanz
srpCryptoParams
- Kryptographische Parameter, die der Server zur Verifizierung verwendet und an den Client übermitteltpublic java.math.BigInteger step1(java.lang.String userName, java.math.BigInteger salt, java.math.BigInteger verifier, boolean mockUser)
SRP-Authentifizierung Schritt 1. Der Client übermittelt seinen Benutzernamen an den Server, welcher daraufhin zu diesem Benutzer das gespeicherte Salt und den Überprüfungscode aus der Konfiguration holt.
userName
- Benutzername (vom Client)salt
- Salt (von der Konfiguration)verifier
- Überprüfungscode (von der Konfiguration)mockUser
- Der Benutzer existiert nicht. Falls true können daher vorgetäuschte Fake-Verifier- und Salt-Werte an den Benutzer gesendet werden, damit dieser nicht unterscheiden kann, ob der Benutzer existiert oder nicht (und damit kein zusätzliches Telegramm für eine negative Quittung gebraucht wird). Das Verhalten dieser Methode ist identisch, egal wie dieser Parameter gesetzt wird, aber falls dieser Parameter true ist, wird ein Flag gesetzt, sodass in Schritt 2 die Authentifizierung auf jeden Fall abgelehnt wird, auch wenn der Client irgendwie eine gültige Antwort generieren kann (was aber praktisch ausgeschlossen ist).public java.math.BigInteger step2(java.math.BigInteger a, java.math.BigInteger m1) throws InconsistentLoginException
SRP-Authentifizierung Schritt 2. Der Client übermittelt seinen öffentlichen Client-Wert A und den Überprüfungscode M1 an den Server, welcher mit dem Überprüfungscode M2 antwortet.
a
- Öffentlicher Client-Wert Am1
- Überprüfungscode M1InconsistentLoginException
- Wenn der Client falsche Login-Daten benutztpublic java.math.BigInteger getSessionKey()
Gibt den Sitzungsschlüssel zurück
public java.lang.String getAuthenticatedUser()
Gibt den Namen des authentifizierten Benutzers zurück
public SrpCryptoParameter getSrpCryptoParams()
Gibt die kryptographischen Parameter zurück