SetRiskConfiguration
Configures threat protection for a user pool or app client. Sets configuration for the following.
-
Responses to risks with adaptive authentication
-
Responses to vulnerable passwords with compromised-credentials detection
-
Notifications to users who have had risky activity detected
-
IP-address denylist and allowlist
To delete the risk configuration for UserPoolId
or ClientId
,
pass null values for all four configuration types.
To activate Amazon Cognito advanced security features, update the user pool to include the
UserPoolAddOns
key AdvancedSecurityMode
.
To activate this setting, your user pool must be on the
Plus tier.
Request Syntax
{
"AccountTakeoverRiskConfiguration": {
"Actions": {
"HighAction": {
"EventAction": "string
",
"Notify": boolean
},
"LowAction": {
"EventAction": "string
",
"Notify": boolean
},
"MediumAction": {
"EventAction": "string
",
"Notify": boolean
}
},
"NotifyConfiguration": {
"BlockEmail": {
"HtmlBody": "string
",
"Subject": "string
",
"TextBody": "string
"
},
"From": "string
",
"MfaEmail": {
"HtmlBody": "string
",
"Subject": "string
",
"TextBody": "string
"
},
"NoActionEmail": {
"HtmlBody": "string
",
"Subject": "string
",
"TextBody": "string
"
},
"ReplyTo": "string
",
"SourceArn": "string
"
}
},
"ClientId": "string
",
"CompromisedCredentialsRiskConfiguration": {
"Actions": {
"EventAction": "string
"
},
"EventFilter": [ "string
" ]
},
"RiskExceptionConfiguration": {
"BlockedIPRangeList": [ "string
" ],
"SkippedIPRangeList": [ "string
" ]
},
"UserPoolId": "string
"
}
Request Parameters
For information about the parameters that are common to all actions, see Common Parameters.
The request accepts the following data in JSON format.
- AccountTakeoverRiskConfiguration
-
The settings for automated responses and notification templates for adaptive authentication with threat protection.
Type: AccountTakeoverRiskConfigurationType object
Required: No
- ClientId
-
The ID of the app client where you want to set a risk configuration. If
ClientId
is null, then the risk configuration is mapped toUserPoolId
. When the client ID is null, the same risk configuration is applied to all the clients in the userPool.When you include a
ClientId
parameter, Amazon Cognito maps the configuration to the app client. When you include bothClientId
andUserPoolId
, Amazon Cognito maps the configuration to the app client only.Type: String
Length Constraints: Minimum length of 1. Maximum length of 128.
Pattern:
[\w+]+
Required: No
- CompromisedCredentialsRiskConfiguration
-
The configuration of automated reactions to detected compromised credentials. Includes settings for blocking future sign-in requests and for the types of password-submission events you want to monitor.
Type: CompromisedCredentialsRiskConfigurationType object
Required: No
- RiskExceptionConfiguration
-
A set of IP-address overrides to threat protection. You can set up IP-address always-block and always-allow lists.
Type: RiskExceptionConfigurationType object
Required: No
- UserPoolId
-
The ID of the user pool where you want to set a risk configuration. If you include
UserPoolId
in your request, don't includeClientId
. When the client ID is null, the same risk configuration is applied to all the clients in the userPool. When you include bothClientId
andUserPoolId
, Amazon Cognito maps the configuration to the app client only.Type: String
Length Constraints: Minimum length of 1. Maximum length of 55.
Pattern:
[\w-]+_[0-9a-zA-Z]+
Required: Yes
Response Syntax
{
"RiskConfiguration": {
"AccountTakeoverRiskConfiguration": {
"Actions": {
"HighAction": {
"EventAction": "string",
"Notify": boolean
},
"LowAction": {
"EventAction": "string",
"Notify": boolean
},
"MediumAction": {
"EventAction": "string",
"Notify": boolean
}
},
"NotifyConfiguration": {
"BlockEmail": {
"HtmlBody": "string",
"Subject": "string",
"TextBody": "string"
},
"From": "string",
"MfaEmail": {
"HtmlBody": "string",
"Subject": "string",
"TextBody": "string"
},
"NoActionEmail": {
"HtmlBody": "string",
"Subject": "string",
"TextBody": "string"
},
"ReplyTo": "string",
"SourceArn": "string"
}
},
"ClientId": "string",
"CompromisedCredentialsRiskConfiguration": {
"Actions": {
"EventAction": "string"
},
"EventFilter": [ "string" ]
},
"LastModifiedDate": number,
"RiskExceptionConfiguration": {
"BlockedIPRangeList": [ "string" ],
"SkippedIPRangeList": [ "string" ]
},
"UserPoolId": "string"
}
}
Response Elements
If the action is successful, the service sends back an HTTP 200 response.
The following data is returned in JSON format by the service.
- RiskConfiguration
-
The API response that contains the risk configuration that you set and the timestamp of the most recent change.
Type: RiskConfigurationType object
Errors
For information about the errors that are common to all actions, see Common Errors.
- CodeDeliveryFailureException
-
This exception is thrown when a verification code fails to deliver successfully.
HTTP Status Code: 400
- InternalErrorException
-
This exception is thrown when Amazon Cognito encounters an internal error.
HTTP Status Code: 500
- InvalidEmailRoleAccessPolicyException
-
This exception is thrown when Amazon Cognito isn't allowed to use your email identity. HTTP status code: 400.
HTTP Status Code: 400
- InvalidParameterException
-
This exception is thrown when the Amazon Cognito service encounters an invalid parameter.
HTTP Status Code: 400
- NotAuthorizedException
-
This exception is thrown when a user isn't authorized.
HTTP Status Code: 400
- ResourceNotFoundException
-
This exception is thrown when the Amazon Cognito service can't find the requested resource.
HTTP Status Code: 400
- TooManyRequestsException
-
This exception is thrown when the user has made too many requests for a given operation.
HTTP Status Code: 400
- UserPoolAddOnNotEnabledException
-
This exception is thrown when user pool add-ons aren't enabled.
HTTP Status Code: 400
Examples
Example
The following example request configures the requested app client with adaptive authentication actions, compromised-credentials behavior, and IP-address exceptions. It also configures user notification templates.
Sample Request
POST HTTP/1.1
Host: cognito-idp.us-west-2.amazonaws.com
X-Amz-Date: 20230613T200059Z
Accept-Encoding: gzip, deflate, br
X-Amz-Target: AWSCognitoIdentityProviderService.SetRiskConfiguration
User-Agent: <UserAgentString>
Authorization: AWS4-HMAC-SHA256 Credential=<Credential>, SignedHeaders=<Headers>, Signature=<Signature>
Content-Length: <PayloadSizeBytes>
{
"AccountTakeoverRiskConfiguration": {
"Actions": {
"HighAction": {
"EventAction": "MFA_REQUIRED",
"Notify": true
},
"LowAction": {
"EventAction": "NO_ACTION",
"Notify": true
},
"MediumAction": {
"EventAction": "MFA_IF_CONFIGURED",
"Notify": true
}
},
"NotifyConfiguration": {
"BlockEmail": {
"HtmlBody": "<!DOCTYPE html>\n<html>\n<head>\n\t<title>HTML email context</title>\n\t<meta charset=\"utf-8\">\n</head>\n<body>\n<pre>We blocked an unrecognized sign-in to your account with this information:\n<ul>\n<li>Time: {login-time}</li>\n<li>Device: {device-name}</li>\n<li>Location: {city}, {country}</li>\n</ul>\nIf this sign-in was not by you, you should change your password and notify us by clicking on <a href={one-click-link-invalid}>this link</a>\nIf this sign-in was by you, you can follow <a href={one-click-link-valid}>this link</a> to let us know</pre>\n</body>\n</html>",
"Subject": "Blocked sign-in attempt",
"TextBody": "We blocked an unrecognized sign-in to your account with this information:\nTime: {login-time}\nDevice: {device-name}\nLocation: {city}, {country}\nIf this sign-in was not by you, you should change your password and notify us by clicking on {one-click-link-invalid}\nIf this sign-in was by you, you can follow {one-click-link-valid} to let us know"
},
"From": "admin@example.com",
"MfaEmail": {
"HtmlBody": "<!DOCTYPE html>\n<html>\n<head>\n\t<title>HTML email context</title>\n\t<meta charset=\"utf-8\">\n</head>\n<body>\n<pre>We required you to use multi-factor authentication for the following sign-in attempt:\n<ul>\n<li>Time: {login-time}</li>\n<li>Device: {device-name}</li>\n<li>Location: {city}, {country}</li>\n</ul>\nIf this sign-in was not by you, you should change your password and notify us by clicking on <a href={one-click-link-invalid}>this link</a>\nIf this sign-in was by you, you can follow <a href={one-click-link-valid}>this link</a> to let us know</pre>\n</body>\n</html>",
"Subject": "New sign-in attempt",
"TextBody": "We required you to use multi-factor authentication for the following sign-in attempt:\nTime: {login-time}\nDevice: {device-name}\nLocation: {city}, {country}\nIf this sign-in was not by you, you should change your password and notify us by clicking on {one-click-link-invalid}\nIf this sign-in was by you, you can follow {one-click-link-valid} to let us know"
},
"NoActionEmail": {
"HtmlBody": "<!DOCTYPE html>\n<html>\n<head>\n\t<title>HTML email context</title>\n\t<meta charset=\"utf-8\">\n</head>\n<body>\n<pre>We observed an unrecognized sign-in to your account with this information:\n<ul>\n<li>Time: {login-time}</li>\n<li>Device: {device-name}</li>\n<li>Location: {city}, {country}</li>\n</ul>\nIf this sign-in was not by you, you should change your password and notify us by clicking on <a href={one-click-link-invalid}>this link</a>\nIf this sign-in was by you, you can follow <a href={one-click-link-valid}>this link</a> to let us know</pre>\n</body>\n</html>",
"Subject": "New sign-in attempt",
"TextBody": "We observed an unrecognized sign-in to your account with this information:\nTime: {login-time}\nDevice: {device-name}\nLocation: {city}, {country}\nIf this sign-in was not by you, you should change your password and notify us by clicking on {one-click-link-invalid}\nIf this sign-in was by you, you can follow {one-click-link-valid} to let us know"
},
"ReplyTo": "admin@example.com",
"SourceArn": "arn:aws:ses:us-west-2:123456789012:identity/admin@example.com"
}
},
"ClientId": "1example23456789",
"CompromisedCredentialsRiskConfiguration": {
"Actions": {
"EventAction": "BLOCK"
},
"EventFilter": [
"PASSWORD_CHANGE",
"SIGN_UP",
"SIGN_IN"
]
},
"RiskExceptionConfiguration": {
"BlockedIPRangeList": [
"192.0.2.1/32",
"192.0.2.2/32"
],
"SkippedIPRangeList": [
"203.0.113.1/32",
"203.0.113.2/32"
]
},
"UserPoolId": "us-west-2_EXAMPLE"
}
Sample Response
HTTP/1.1 200 OK
Date: Tue, 13 Jun 2023 20:00:59 GMT
Content-Type: application/x-amz-json-1.0
Content-Length: <PayloadSizeBytes>
x-amzn-requestid: a1b2c3d4-e5f6-a1b2-c3d4-EXAMPLE11111
Connection: keep-alive
{
"RiskConfiguration": {
"AccountTakeoverRiskConfiguration": {
"Actions": {
"HighAction": {
"EventAction": "MFA_REQUIRED",
"Notify": true
},
"LowAction": {
"EventAction": "NO_ACTION",
"Notify": true
},
"MediumAction": {
"EventAction": "MFA_IF_CONFIGURED",
"Notify": true
}
},
"NotifyConfiguration": {
"BlockEmail": {
"HtmlBody": "<!DOCTYPE html>\n<html>\n<head>\n\t<title>HTML email context</title>\n\t<meta charset=\"utf-8\">\n</head>\n<body>\n<pre>We blocked an unrecognized sign-in to your account with this information:\n<ul>\n<li>Time: {login-time}</li>\n<li>Device: {device-name}</li>\n<li>Location: {city}, {country}</li>\n</ul>\nIf this sign-in was not by you, you should change your password and notify us by clicking on <a href={one-click-link-invalid}>this link</a>\nIf this sign-in was by you, you can follow <a href={one-click-link-valid}>this link</a> to let us know</pre>\n</body>\n</html>",
"Subject": "Blocked sign-in attempt",
"TextBody": "We blocked an unrecognized sign-in to your account with this information:\nTime: {login-time}\nDevice: {device-name}\nLocation: {city}, {country}\nIf this sign-in was not by you, you should change your password and notify us by clicking on {one-click-link-invalid}\nIf this sign-in was by you, you can follow {one-click-link-valid} to let us know"
},
"From": "admin@example.com",
"MfaEmail": {
"HtmlBody": "<!DOCTYPE html>\n<html>\n<head>\n\t<title>HTML email context</title>\n\t<meta charset=\"utf-8\">\n</head>\n<body>\n<pre>We required you to use multi-factor authentication for the following sign-in attempt:\n<ul>\n<li>Time: {login-time}</li>\n<li>Device: {device-name}</li>\n<li>Location: {city}, {country}</li>\n</ul>\nIf this sign-in was not by you, you should change your password and notify us by clicking on <a href={one-click-link-invalid}>this link</a>\nIf this sign-in was by you, you can follow <a href={one-click-link-valid}>this link</a> to let us know</pre>\n</body>\n</html>",
"Subject": "New sign-in attempt",
"TextBody": "We required you to use multi-factor authentication for the following sign-in attempt:\nTime: {login-time}\nDevice: {device-name}\nLocation: {city}, {country}\nIf this sign-in was not by you, you should change your password and notify us by clicking on {one-click-link-invalid}\nIf this sign-in was by you, you can follow {one-click-link-valid} to let us know"
},
"NoActionEmail": {
"HtmlBody": "<!DOCTYPE html>\n<html>\n<head>\n\t<title>HTML email context</title>\n\t<meta charset=\"utf-8\">\n</head>\n<body>\n<pre>We observed an unrecognized sign-in to your account with this information:\n<ul>\n<li>Time: {login-time}</li>\n<li>Device: {device-name}</li>\n<li>Location: {city}, {country}</li>\n</ul>\nIf this sign-in was not by you, you should change your password and notify us by clicking on <a href={one-click-link-invalid}>this link</a>\nIf this sign-in was by you, you can follow <a href={one-click-link-valid}>this link</a> to let us know</pre>\n</body>\n</html>",
"Subject": "New sign-in attempt",
"TextBody": "We observed an unrecognized sign-in to your account with this information:\nTime: {login-time}\nDevice: {device-name}\nLocation: {city}, {country}\nIf this sign-in was not by you, you should change your password and notify us by clicking on {one-click-link-invalid}\nIf this sign-in was by you, you can follow {one-click-link-valid} to let us know"
},
"ReplyTo": "admin@example.com",
"SourceArn": "arn:aws:ses:us-west-2:123456789012:identity/admin@example.com"
}
},
"ClientId": "1example23456789",
"CompromisedCredentialsRiskConfiguration": {
"Actions": {
"EventAction": "BLOCK"
},
"EventFilter": [
"PASSWORD_CHANGE",
"SIGN_UP",
"SIGN_IN"
]
},
"RiskExceptionConfiguration": {
"BlockedIPRangeList": [
"192.0.2.1/32",
"192.0.2.2/32"
],
"SkippedIPRangeList": [
"203.0.113.1/32",
"203.0.113.2/32"
]
},
"UserPoolId": "us-west-2_EXAMPLE"
}
}
See Also
For more information about using this API in one of the language-specific AWS SDKs, see the following: