Create Auth challenge Lambda trigger
The create auth challenge trigger is a Lambda function that has the details of each
challenge declared by the define auth challenge trigger. It processes the challenge name
declared by the define auth challenge trigger and returns a
publicChallengeParameters
that your application must present to the user.
This function then provides your user pool with the answer to the challenge,
privateChallengeParameters
, that your user pool passes to the verify auth
challenge trigger. Where your define auth challenge trigger manages the challenge sequence,
your create auth challenge trigger manages the challenge contents.
- Create auth challenge
-
Amazon Cognito invokes this trigger after Define Auth Challenge if a custom challenge has been specified as part of the Define Auth Challenge trigger. It creates a custom authentication flow.
This Lambda trigger is invoked to create a challenge to present to the user. The request
for this Lambda trigger includes the challengeName
and session
. The
challengeName
is a string and is the name of the next challenge to the
user. The value of this attribute is set in the Define Auth Challenge Lambda trigger.
The challenge loop will repeat until all challenges are answered.
Create Auth challenge Lambda trigger parameters
The request that Amazon Cognito passes to this Lambda function is a combination of the parameters below and the common parameters that Amazon Cognito adds to all requests.
Create Auth challenge request parameters
- userAttributes
-
One or more name-value pairs representing user attributes.
- userNotFound
-
This boolean is populated when
PreventUserExistenceErrors
is set toENABLED
for your User Pool client. - challengeName
-
The name of the new challenge.
- session
-
The session element is an array of
ChallengeResult
elements, each of which contains the following elements:- challengeName
-
The challenge type. One of:
"CUSTOM_CHALLENGE"
,"PASSWORD_VERIFIER"
,"SMS_MFA"
,"DEVICE_SRP_AUTH"
,"DEVICE_PASSWORD_VERIFIER"
, or"ADMIN_NO_SRP_AUTH"
. - challengeResult
-
Set to
true
if the user successfully completed the challenge, orfalse
otherwise. - challengeMetadata
-
Your name for the custom challenge. Used only if
challengeName
is"CUSTOM_CHALLENGE"
.
- clientMetadata
-
One or more key-value pairs that you can provide as custom input to the Lambda function that you specify for the create auth challenge trigger. You can use the ClientMetadata parameter in the AdminRespondToAuthChallenge and RespondToAuthChallenge API actions to pass this data to your Lambda function. The request that invokes the create auth challenge function does not include data passed in the ClientMetadata parameter in AdminInitiateAuth and InitiateAuth API operations.
Create Auth challenge response parameters
- publicChallengeParameters
-
One or more key-value pairs for the client app to use in the challenge to be presented to the user. This parameter should contain all of the necessary information to present the challenge to the user accurately.
- privateChallengeParameters
-
This parameter is only used by the Verify Auth Challenge Response Lambda trigger. This parameter should contain all of the information that is required to validate the user's response to the challenge. In other words, the
publicChallengeParameters
parameter contains the question that is presented to the user andprivateChallengeParameters
contains the valid answers for the question. - challengeMetadata
-
Your name for the custom challenge, if this is a custom challenge.
Create Auth challenge example
A CAPTCHA is created as a challenge to the user. The URL for the CAPTCHA image is
added to the public challenge parameters as "captchaUrl
", and the expected
answer is added to the private challenge parameters.