Class ScramClient
java.lang.Object
org.wildfly.security.mechanism.scram.ScramClient
A client-side implementation for the SCRAM authentication.
- Author:
- David M. Lloyd
-
Method Summary
Modifier and TypeMethodDescriptionReturns the ID of the user to be authorized.byte[]Returns a copy of the binding data for the "PLUS" channel binding option.Returns the binding type for the "PLUS" channel binding option.Create an initial response.Returns the SCRAM mechanism used for the authentication.handleInitialChallenge(ScramInitialClientMessage initialResponse, ScramInitialServerMessage initialChallenge) Handles the initial challenge from the server and create a response from the client.parseFinalServerMessage(byte[] messageBytes) Parses the final server message and createsScramFinalServerMessagefrom parsed information.parseInitialServerMessage(ScramInitialClientMessage initialResponse, byte[] bytes) Parses the initial server message and createsScramInitialServerMessagefrom parsed information.voidverifyFinalChallenge(ScramFinalClientMessage finalResponse, ScramFinalServerMessage finalChallenge) Verifies the final challenge received from the server.
-
Method Details
-
getMechanism
Returns the SCRAM mechanism used for the authentication.- Returns:
- the SCRAM mechanism used for the authentication.
-
getAuthorizationId
Returns the ID of the user to be authorized.- Returns:
- the ID of the user to be authorized.
-
getBindingType
Returns the binding type for the "PLUS" channel binding option.- Returns:
- the binding type for the "PLUS" channel binding option.
-
getBindingData
public byte[] getBindingData()Returns a copy of the binding data for the "PLUS" channel binding option.- Returns:
- a copy of the binding data for the "PLUS" channel binding option.
-
getInitialResponse
Create an initial response. This will cause the callback handler to be initialized with an authentication name.- Returns:
- the initial response to send to the server
- Throws:
AuthenticationMechanismException- if the client authentication failed for some reason
-
parseInitialServerMessage
public ScramInitialServerMessage parseInitialServerMessage(ScramInitialClientMessage initialResponse, byte[] bytes) throws AuthenticationMechanismException Parses the initial server message and createsScramInitialServerMessagefrom parsed information. Also checks if the message have all necessary properties.- Parameters:
initialResponse- the initial client response for the server.bytes- the byte array containing the initial server message to parse.- Returns:
- the initial server message.
- Throws:
AuthenticationMechanismException- if an error occurs during the parsing.
-
handleInitialChallenge
public ScramFinalClientMessage handleInitialChallenge(ScramInitialClientMessage initialResponse, ScramInitialServerMessage initialChallenge) throws AuthenticationMechanismException Handles the initial challenge from the server and create a response from the client. The method uses a password credential obtained from the callback handler to derive a salted password, which is then used to generate a client key, stored key, and client proof.- Parameters:
initialResponse- the initial client message.initialChallenge- the initial server message.- Returns:
- the final client message.
- Throws:
AuthenticationMechanismException- if an error occurs while obtaining the password, creating theScramFinalClientMessageor the mechanism in the initial response or challenge message does not match the mechanism expected by the server
-
parseFinalServerMessage
public ScramFinalServerMessage parseFinalServerMessage(byte[] messageBytes) throws AuthenticationMechanismException Parses the final server message and createsScramFinalServerMessagefrom parsed information. Also checks if the message have all necessary properties.- Parameters:
messageBytes- the byte array of the final server message.- Returns:
- the final server message.
- Throws:
AuthenticationMechanismException- if an error occurs during the parsing or the server rejected the authentication request.
-
verifyFinalChallenge
public void verifyFinalChallenge(ScramFinalClientMessage finalResponse, ScramFinalServerMessage finalChallenge) throws AuthenticationMechanismException Verifies the final challenge received from the server.- Parameters:
finalResponse- the final client message.finalChallenge- the final server message.- Throws:
AuthenticationMechanismException- if an error occurs during the verification or the server signature is invalid.
-