When using Cognito’s Advanced Security and adaptive authentication features, you need to ship contextual data about the logging-in user via the UserContextData type.
Some of this type data is collected via a Javascript snippet. However, you can also ship the user’s IP address (which the snippet cannot collect) in the same payload.
When doing so, you may get an error from Cognito:
“Cannot use IP Address passed into UserContextData”
Unhelpful error from Cognito
This is likely because you’ve not enabled ‘Accept additional user context data‘ on your user pool client – though the error message is pretty opaque.
You can do this in a number of ways:
- Via the AWS console
- Via the UpdateUserPoolClient CLI function
- Via CDK, if you drop down to the Level 1 construct and set “enablePropagateAdditionalUserContextData: true” on your CfnUserPoolClient
Even the latest L2 constructs for Cognito don’t seem to support setting enablePropagateAdditionalUserContextData
when controlling a user pool client via CDK, but using the L1 escape hatch is easy enough:
const cfnUserPoolClient = userPoolClient.node.defaultChild as CfnUserPoolClient;
cfnUserPoolClient.enablePropagateAdditionalUserContextData = true;