Class ChallengeResponseType
- All Implemented Interfaces:
Serializable,SdkPojo,ToCopyableBuilder<ChallengeResponseType.Builder,ChallengeResponseType>
The responses to the challenge that you received in the previous request. Each challenge has its own required response parameters. The following examples are partial JSON request bodies that highlight challenge-response parameters.
You must provide a SECRET_HASH parameter in all challenge responses to an app client that has a client secret.
Include a DEVICE_KEY for device authentication.
- SELECT_CHALLENGE
-
"ChallengeName": "SELECT_CHALLENGE", "ChallengeResponses": { "USERNAME": "[username]", "ANSWER": "[Challenge name]"}Available challenges are
PASSWORD,PASSWORD_SRP,EMAIL_OTP,SMS_OTP, andWEB_AUTHN.Complete authentication in the
SELECT_CHALLENGEresponse forPASSWORD,PASSWORD_SRP, andWEB_AUTHN:-
"ChallengeName": "SELECT_CHALLENGE", "ChallengeResponses": { "ANSWER": "WEB_AUTHN", "USERNAME": "[username]", "CREDENTIAL": "[AuthenticationResponseJSON]"} -
"ChallengeName": "SELECT_CHALLENGE", "ChallengeResponses": { "ANSWER": "PASSWORD", "USERNAME": "[username]", "PASSWORD": "[password]"} -
"ChallengeName": "SELECT_CHALLENGE", "ChallengeResponses": { "ANSWER": "PASSWORD_SRP", "USERNAME": "[username]", "SRP_A": "[SRP_A]"}
For
SMS_OTPandEMAIL_OTP, respond with the username and answer. Your user pool will send a code for the user to submit in the next challenge response.-
"ChallengeName": "SELECT_CHALLENGE", "ChallengeResponses": { "ANSWER": "SMS_OTP", "USERNAME": "[username]"} -
"ChallengeName": "SELECT_CHALLENGE", "ChallengeResponses": { "ANSWER": "EMAIL_OTP", "USERNAME": "[username]"}
-
- WEB_AUTHN
-
"ChallengeName": "WEB_AUTHN", "ChallengeResponses": { "USERNAME": "[username]", "CREDENTIAL": "[AuthenticationResponseJSON]"} - PASSWORD
-
"ChallengeName": "PASSWORD", "ChallengeResponses": { "USERNAME": "[username]", "PASSWORD": "[password]"} - PASSWORD_SRP
-
"ChallengeName": "PASSWORD_SRP", "ChallengeResponses": { "USERNAME": "[username]", "SRP_A": "[SRP_A]"} - SMS_OTP
-
"ChallengeName": "SMS_OTP", "ChallengeResponses": {"SMS_OTP_CODE": "[code]", "USERNAME": "[username]"} - EMAIL_OTP
-
"ChallengeName": "EMAIL_OTP", "ChallengeResponses": {"EMAIL_OTP_CODE": "[code]", "USERNAME": "[username]"} - SMS_MFA
-
"ChallengeName": "SMS_MFA", "ChallengeResponses": {"SMS_MFA_CODE": "[code]", "USERNAME": "[username]"} - PASSWORD_VERIFIER
-
This challenge response is part of the SRP flow. Amazon Cognito requires that your application respond to this challenge within a few seconds. When the response time exceeds this period, your user pool returns a
NotAuthorizedExceptionerror."ChallengeName": "PASSWORD_VERIFIER", "ChallengeResponses": {"PASSWORD_CLAIM_SIGNATURE": "[claim_signature]", "PASSWORD_CLAIM_SECRET_BLOCK": "[secret_block]", "TIMESTAMP": [timestamp], "USERNAME": "[username]"} - CUSTOM_CHALLENGE
-
"ChallengeName": "CUSTOM_CHALLENGE", "ChallengeResponses": {"USERNAME": "[username]", "ANSWER": "[challenge_answer]"} - NEW_PASSWORD_REQUIRED
-
"ChallengeName": "NEW_PASSWORD_REQUIRED", "ChallengeResponses": {"NEW_PASSWORD": "[new_password]", "USERNAME": "[username]"}To set any required attributes that
InitiateAuthreturned in anrequiredAttributesparameter, add"userAttributes.[attribute_name]": "[attribute_value]". This parameter can also set values for writable attributes that aren't required by your user pool.In a
NEW_PASSWORD_REQUIREDchallenge response, you can't modify a required attribute that already has a value. InAdminRespondToAuthChallengeorRespondToAuthChallenge, set a value for any keys that Amazon Cognito returned in therequiredAttributesparameter, then use theAdminUpdateUserAttributesorUpdateUserAttributesAPI operation to modify the value of any additional attributes. - SOFTWARE_TOKEN_MFA
-
"ChallengeName": "SOFTWARE_TOKEN_MFA", "ChallengeResponses": {"USERNAME": "[username]", "SOFTWARE_TOKEN_MFA_CODE": [authenticator_code]} - DEVICE_SRP_AUTH
-
"ChallengeName": "DEVICE_SRP_AUTH", "ChallengeResponses": {"USERNAME": "[username]", "DEVICE_KEY": "[device_key]", "SRP_A": "[srp_a]"} - DEVICE_PASSWORD_VERIFIER
-
"ChallengeName": "DEVICE_PASSWORD_VERIFIER", "ChallengeResponses": {"DEVICE_KEY": "[device_key]", "PASSWORD_CLAIM_SIGNATURE": "[claim_signature]", "PASSWORD_CLAIM_SECRET_BLOCK": "[secret_block]", "TIMESTAMP": [timestamp], "USERNAME": "[username]"} - MFA_SETUP
-
"ChallengeName": "MFA_SETUP", "ChallengeResponses": {"USERNAME": "[username]"}, "SESSION": "[Session ID from VerifySoftwareToken]" - SELECT_MFA_TYPE
-
"ChallengeName": "SELECT_MFA_TYPE", "ChallengeResponses": {"USERNAME": "[username]", "ANSWER": "[SMS_MFA|EMAIL_MFA|SOFTWARE_TOKEN_MFA]"}
For more information about SECRET_HASH, see Computing secret hash values. For information about DEVICE_KEY, see Working with user devices in your user pool.
- See Also:
-
Nested Class Summary
Nested Classes -
Method Summary
Modifier and TypeMethodDescriptionbuilder()final ChallengeNameThe type of challenge that your previous authentication request returned in the parameterChallengeName, for exampleSMS_MFA.final StringThe type of challenge that your previous authentication request returned in the parameterChallengeName, for exampleSMS_MFA.final ChallengeResponseThe set of key-value pairs that provides a response to the requested challenge.final StringThe set of key-value pairs that provides a response to the requested challenge.final booleanfinal booleanequalsBySdkFields(Object obj) final <T> Optional<T>getValueForField(String fieldName, Class<T> clazz) final inthashCode()static Class<? extends ChallengeResponseType.Builder>final StringtoString()Returns a string representation of this object.Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface software.amazon.awssdk.utils.builder.ToCopyableBuilder
copy
-
Method Details
-
challengeName
The type of challenge that your previous authentication request returned in the parameter
ChallengeName, for exampleSMS_MFA.If the service returns an enum value that is not available in the current SDK version,
challengeNamewill returnChallengeName.UNKNOWN_TO_SDK_VERSION. The raw value returned by the service is available fromchallengeNameAsString().- Returns:
- The type of challenge that your previous authentication request returned in the parameter
ChallengeName, for exampleSMS_MFA. - See Also:
-
challengeNameAsString
The type of challenge that your previous authentication request returned in the parameter
ChallengeName, for exampleSMS_MFA.If the service returns an enum value that is not available in the current SDK version,
challengeNamewill returnChallengeName.UNKNOWN_TO_SDK_VERSION. The raw value returned by the service is available fromchallengeNameAsString().- Returns:
- The type of challenge that your previous authentication request returned in the parameter
ChallengeName, for exampleSMS_MFA. - See Also:
-
challengeResponse
The set of key-value pairs that provides a response to the requested challenge.
If the service returns an enum value that is not available in the current SDK version,
challengeResponsewill returnChallengeResponse.UNKNOWN_TO_SDK_VERSION. The raw value returned by the service is available fromchallengeResponseAsString().- Returns:
- The set of key-value pairs that provides a response to the requested challenge.
- See Also:
-
challengeResponseAsString
The set of key-value pairs that provides a response to the requested challenge.
If the service returns an enum value that is not available in the current SDK version,
challengeResponsewill returnChallengeResponse.UNKNOWN_TO_SDK_VERSION. The raw value returned by the service is available fromchallengeResponseAsString().- Returns:
- The set of key-value pairs that provides a response to the requested challenge.
- See Also:
-
toBuilder
- Specified by:
toBuilderin interfaceToCopyableBuilder<ChallengeResponseType.Builder,ChallengeResponseType>
-
builder
-
serializableBuilderClass
-
hashCode
public final int hashCode() -
equals
-
equalsBySdkFields
- Specified by:
equalsBySdkFieldsin interfaceSdkPojo
-
toString
Returns a string representation of this object. This is useful for testing and debugging. Sensitive data will be redacted from this string using a placeholder value. -
getValueForField
-
sdkFields
-
sdkFieldNameToField
- Specified by:
sdkFieldNameToFieldin interfaceSdkPojo
-