/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include The request to respond to an authentication challenge.See
* Also:
AWS
* API Reference
The app client ID.
*/ inline const Aws::String& GetClientId() const{ return m_clientId; } inline bool ClientIdHasBeenSet() const { return m_clientIdHasBeenSet; } inline void SetClientId(const Aws::String& value) { m_clientIdHasBeenSet = true; m_clientId = value; } inline void SetClientId(Aws::String&& value) { m_clientIdHasBeenSet = true; m_clientId = std::move(value); } inline void SetClientId(const char* value) { m_clientIdHasBeenSet = true; m_clientId.assign(value); } inline RespondToAuthChallengeRequest& WithClientId(const Aws::String& value) { SetClientId(value); return *this;} inline RespondToAuthChallengeRequest& WithClientId(Aws::String&& value) { SetClientId(std::move(value)); return *this;} inline RespondToAuthChallengeRequest& WithClientId(const char* value) { SetClientId(value); return *this;} ///@} ///@{ /** *The challenge name. For more information, see InitiateAuth.
* ADMIN_NO_SRP_AUTH isn't a valid value.
The session that should be passed both ways in challenge-response calls to
* the service. If InitiateAuth or RespondToAuthChallenge
* API call determines that the caller must pass another challenge, they return a
* session with other challenge parameters. This session should be passed as it is
* to the next RespondToAuthChallenge API call.
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.
* "ChallengeName": "SMS_MFA",
* "ChallengeResponses": {"SMS_MFA_CODE": "[code]", "USERNAME":
* "[username]"}
* "ChallengeName": "EMAIL_OTP", "ChallengeResponses": {"EMAIL_OTP_CODE":
* "[code]", "USERNAME": "[username]"}
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
* NotAuthorizedException error.
"ChallengeName":
* "PASSWORD_VERIFIER", "ChallengeResponses": {"PASSWORD_CLAIM_SIGNATURE":
* "[claim_signature]", "PASSWORD_CLAIM_SECRET_BLOCK": "[secret_block]",
* "TIMESTAMP": [timestamp], "USERNAME": "[username]"}
Add
* "DEVICE_KEY" when you sign in with a remembered device.
"ChallengeName": "CUSTOM_CHALLENGE",
* "ChallengeResponses": {"USERNAME": "[username]", "ANSWER":
* "[challenge_answer]"}
Add "DEVICE_KEY" when you sign
* in with a remembered device.
* "ChallengeName": "NEW_PASSWORD_REQUIRED", "ChallengeResponses":
* {"NEW_PASSWORD": "[new_password]", "USERNAME": "[username]"}
To
* set any required attributes that InitiateAuth returned in an
* requiredAttributes parameter, 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_REQUIRED challenge
* response, you can't modify a required attribute that already has a value. In
* RespondToAuthChallenge, set a value for any keys that Amazon
* Cognito returned in the requiredAttributes parameter, then use the
* UpdateUserAttributes API operation to modify the value of any
* additional attributes.
* "ChallengeName": "SOFTWARE_TOKEN_MFA", "ChallengeResponses": {"USERNAME":
* "[username]", "SOFTWARE_TOKEN_MFA_CODE": [authenticator_code]}
"ChallengeName": "DEVICE_SRP_AUTH",
* "ChallengeResponses": {"USERNAME": "[username]", "DEVICE_KEY": "[device_key]",
* "SRP_A": "[srp_a]"}
* "ChallengeName": "DEVICE_PASSWORD_VERIFIER", "ChallengeResponses":
* {"DEVICE_KEY": "[device_key]", "PASSWORD_CLAIM_SIGNATURE": "[claim_signature]",
* "PASSWORD_CLAIM_SECRET_BLOCK": "[secret_block]", "TIMESTAMP": [timestamp],
* "USERNAME": "[username]"}
* "ChallengeName": "MFA_SETUP", "ChallengeResponses": {"USERNAME":
* "[username]"}, "SESSION": "[Session ID from VerifySoftwareToken]"
"ChallengeName":
* "SELECT_MFA_TYPE", "ChallengeResponses": {"USERNAME": "[username]", "ANSWER":
* "[SMS_MFA or 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.
The Amazon Pinpoint analytics metadata that contributes to your metrics for
* RespondToAuthChallenge calls.
Contextual data about your user session, such as the device fingerprint, IP * address, or location. Amazon Cognito advanced security evaluates the risk of an * authentication event based on the context that your app generates and passes to * Amazon Cognito when it makes API requests.
*/ inline const UserContextDataType& GetUserContextData() const{ return m_userContextData; } inline bool UserContextDataHasBeenSet() const { return m_userContextDataHasBeenSet; } inline void SetUserContextData(const UserContextDataType& value) { m_userContextDataHasBeenSet = true; m_userContextData = value; } inline void SetUserContextData(UserContextDataType&& value) { m_userContextDataHasBeenSet = true; m_userContextData = std::move(value); } inline RespondToAuthChallengeRequest& WithUserContextData(const UserContextDataType& value) { SetUserContextData(value); return *this;} inline RespondToAuthChallengeRequest& WithUserContextData(UserContextDataType&& value) { SetUserContextData(std::move(value)); return *this;} ///@} ///@{ /** *A map of custom key-value pairs that you can provide as input for any custom * workflows that this action triggers.
You create custom workflows by
* assigning Lambda functions to user pool triggers. When you use the
* RespondToAuthChallenge API action, Amazon Cognito invokes any functions that are
* assigned to the following triggers: post authentication, pre token
* generation, define auth challenge, create auth challenge, and
* verify auth challenge. When Amazon Cognito invokes any of these
* functions, it passes a JSON payload, which the function receives as input. This
* payload contains a clientMetadata attribute, which provides the
* data that you assigned to the ClientMetadata parameter in your
* RespondToAuthChallenge request. In your function code in Lambda, you can process
* the clientMetadata value to enhance your workflow for your specific
* needs.
For more information, see * Customizing user pool Workflows with Lambda Triggers in the Amazon * Cognito Developer Guide.
When you use the ClientMetadata * parameter, remember that Amazon Cognito won't do the following:
Store the ClientMetadata value. This data is available only to Lambda * triggers that are assigned to a user pool to support custom workflows. If your * user pool configuration doesn't include triggers, the ClientMetadata parameter * serves no purpose.
Validate the ClientMetadata value.
*Encrypt the ClientMetadata value. Don't use Amazon Cognito to * provide sensitive information.