

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Utiliser les fonctions de sécurité des groupes d’utilisateurs Amazon Cognito
<a name="managing-security"></a>

Vous souhaiterez peut-être protéger votre application contre les intrusions sur le réseau, le devinage de mots de passe, l'usurpation d'identité d'un utilisateur et les inscriptions et connexions malveillantes. Votre configuration des fonctionnalités de sécurité des groupes d'utilisateurs Amazon Cognito peut constituer un élément clé de votre architecture de sécurité. La sécurité de votre application relève de *la responsabilité du client (« Sécurité dans le cloud »*), comme décrit dans le [modèle de responsabilité AWS partagée](https://aws.amazon.com/compliance/shared-responsibility-model/). Les outils présentés dans ce chapitre contribuent à ce que la conception de la sécurité de votre application soit conforme à ces objectifs.

L'une des décisions importantes que vous devez prendre lorsque vous configurez votre groupe d'utilisateurs est d'autoriser ou non l'inscription et la connexion publiques. Certaines options de pool d'utilisateurs, telles que les clients confidentiels, la création administrative et la confirmation des utilisateurs, et les groupes d'utilisateurs sans domaine, sont soumises dans une moindre mesure aux attaques sur Internet. Cependant, un cas d'utilisation courant est celui des clients publics qui acceptent l'inscription de n'importe qui sur Internet et envoient toutes les opérations directement à votre groupe d'utilisateurs. Quelle que soit la configuration, mais particulièrement dans le cas de ces configurations publiques, nous vous recommandons de planifier et de déployer votre groupe d'utilisateurs en tenant compte des fonctionnalités de sécurité. Une sécurité insuffisante peut également affecter votre AWS facture lorsque des sources indésirables créent de nouveaux utilisateurs actifs ou tentent d'exploiter des utilisateurs existants.

La MFA et la protection contre les menaces s'appliquent aux utilisateurs [locaux](cognito-terms.md#terms-localuser). IdPs Les tiers sont responsables du niveau de sécurité des [utilisateurs fédérés.](cognito-terms.md#terms-federateduser)Fonctionnalités de sécurité des groupes d'utilisateurs

**Authentification multifactorielle (MFA)**  
Demandez un code que votre groupe d'utilisateurs enverra par e-mail (avec le plan de fonctionnalités Essentials ou Plus) ou par SMS, ou depuis une application d'authentification, pour confirmer la connexion au groupe d'utilisateurs.

**Protection contre les menaces**  
Surveillez la connexion pour détecter les indicateurs de risque et appliquez le MFA ou bloquez la connexion. Ajoutez des revendications et des champs d'application personnalisés aux jetons d'accès. Envoyez les codes MFA par e-mail.

**AWS WAF web ACLs**  
Inspectez le trafic entrant vers les [points de terminaison de votre groupe d'utilisateurs et l'API d'authentification](authentication-flows-public-server-side.md#user-pools-API-operations) pour détecter toute activité indésirable au niveau du réseau et des couches applicatives.

**Sensibilité majuscules/minuscules**  
Empêchez la création d'utilisateurs dont l'adresse e-mail ou le nom d'utilisateur préféré sont identiques à ceux d'un autre utilisateur, à l'exception des majuscules.

**Protection contre la suppression**  
Empêchez les systèmes automatisés de supprimer accidentellement vos groupes d'utilisateurs. Exiger une confirmation supplémentaire de la suppression du groupe d'utilisateurs dans le AWS Management Console.

**Erreurs d'existence de l'utilisateur**  
Protégez-vous contre la divulgation des noms d'utilisateur et des alias existants dans votre groupe d'utilisateurs. Renvoie une erreur générique en réponse à l'échec de l'authentification, que le nom d'utilisateur soit valide ou non.

**Topics**
+ [Ajout de l’authentification MFA à un groupe d’utilisateurs](user-pool-settings-mfa.md)
+ [Sécurité avancée avec protection contre les menaces](cognito-user-pool-settings-threat-protection.md)
+ [Associer une ACL AWS WAF Web à un groupe d'utilisateurs](user-pool-waf.md)
+ [Sensibilité à la casse du groupe d’utilisateurs](user-pool-case-sensitivity.md)
+ [Protection contre la suppression du groupe d'utilisateurs](user-pool-settings-deletion-protection.md)
+ [Gestion des réponses aux erreurs liées à l'existence des utilisateurs](cognito-user-pool-managing-errors.md)

# Ajout de l’authentification MFA à un groupe d’utilisateurs
<a name="user-pool-settings-mfa"></a>

La MFA ajoute un facteur *d'authentification au facteur initial que vous* *connaissez*, qui est généralement un nom d'utilisateur et un mot de passe. Vous pouvez choisir des SMS, des e-mails ou des mots de passe à usage unique basés sur le temps (TOTP) comme facteurs supplémentaires pour connecter vos utilisateurs dont le mot de passe est le principal facteur d'authentification.

L'authentification multifactorielle (MFA) renforce la sécurité des utilisateurs [locaux de votre](cognito-terms.md#terms-localuser) application. Dans le cas des [utilisateurs fédérés](cognito-terms.md#terms-federateduser), Amazon Cognito délègue tous les processus d'authentification à l'IdP et ne leur propose aucun facteur d'authentification supplémentaire.

**Note**  
La première fois qu'un nouvel utilisateur se connecte à votre application, Amazon Cognito émet des jetons OAuth 2.0, même si votre groupe d'utilisateurs nécessite le MFA. Le deuxième facteur d’authentification, lorsque votre utilisateur se connecte pour la première fois, est sa confirmation du message de vérification qu’Amazon Cognito lui envoie. Si votre groupe d’utilisateurs nécessite l’authentification MFA, Amazon Cognito invite votre utilisateur à enregistrer un facteur de connexion supplémentaire à utiliser lors de chaque tentative de connexion après la première.

Avec l'authentification adaptative, vous pouvez configurer votre groupe d'utilisateurs pour qu'il exige un facteur d'authentification supplémentaire en réponse à un niveau de risque accru. Pour ajouter l’authentification adaptative à votre groupe d’utilisateurs, consultez [Sécurité avancée avec protection contre les menaces](cognito-user-pool-settings-threat-protection.md).

Quand vous définissez l’authentification MFA sur `required` pour un groupe d’utilisateurs, tous les utilisateurs doivent l’utiliser pour se connecter. Pour se connecter, chaque utilisateur doit configurer au moins un facteur MFA. Lorsque la MFA est requise, vous devez inclure la configuration MFA dans l'intégration des utilisateurs afin que votre groupe d'utilisateurs les autorise à se connecter.

La connexion gérée invite les utilisateurs à configurer l'authentification multifacteur lorsque vous la définissez comme obligatoire. Lorsque vous configurez le MFA comme facultatif dans votre groupe d'utilisateurs, la connexion gérée n'invite pas les utilisateurs à s'y connecter. Pour utiliser une authentification MFA facultative, vous devez créer une interface dans votre application qui invite vos utilisateurs à choisir de configurer l’authentification MFA, puis qui les guide via les entrées d’API pour vérifier leur facteur de connexion supplémentaire.

**Topics**
+ [Ce qu'il faut savoir sur le MFA pour groupes d'utilisateurs](#user-pool-settings-mfa-prerequisites)
+ [Préférences MFA de l'utilisateur](#user-pool-settings-mfa-preferences)
+ [Détails de la logique MFA lors de l'exécution de l'utilisateur](#user-pool-settings-mfa-user-outcomes)
+ [Configuration d'un groupe d'utilisateurs pour l'authentification multifactorielle](#user-pool-configuring-mfa)
+ [MFA par SMS et e-mail](user-pool-settings-mfa-sms-email-message.md)
+ [Authentification MFA par jeton logiciel TOTP](user-pool-settings-mfa-totp.md)

## Ce qu'il faut savoir sur le MFA pour groupes d'utilisateurs
<a name="user-pool-settings-mfa-prerequisites"></a>

Avant de configurer MFA, prenez en compte les éléments suivants :
+ Les utilisateurs peuvent utiliser l'authentification multifacteur *ou* se connecter sans mot de passe, à une exception près : les clés d'accès avec vérification utilisateur peuvent satisfaire aux exigences de l'authentification multifacteur lorsque vous les configurez dans votre groupe d'utilisateurs. `FactorConfiguration` `MULTI_FACTOR_WITH_USER_VERIFICATION` `WebAuthnConfiguration`
  + Vous ne pouvez pas définir l'authentification MFA comme obligatoire dans les groupes d'utilisateurs qui prennent en charge les mots de passe à [usage unique](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless).
  + Vous ne pouvez pas ajouter `EMAIL_OTP` ou `SMS_OTP` ajouter `AllowedFirstAuthFactors` lorsque l'authentification MFA est requise dans votre groupe d'utilisateurs. Vous pouvez ajouter `WEB_AUTHN` quand `FactorConfiguration` est défini sur`MULTI_FACTOR_WITH_USER_VERIFICATION`.
  + La [connexion basée sur les choix](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) ne propose `PASSWORD` et ne prend en `PASSWORD_SRP` compte que tous les clients de l'application lorsque l'authentification MFA est requise dans le groupe d'utilisateurs. Pour plus d'informations sur les flux de nom d'utilisateur [Connectez-vous avec des mots de passe persistants](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-password) et de mot de passe, reportez-vous [Connectez-vous avec des mots de passe persistants et une charge utile sécurisée](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-srp) au chapitre **Authentification** de ce guide.
  + Dans les groupes d'utilisateurs où l'authentification MFA est facultative, les utilisateurs qui ont configuré un facteur MFA ne peuvent se connecter qu'à l'aide de flux d'authentification par nom d'utilisateur et mot de passe dans le cadre d'une connexion basée sur des choix. Ces utilisateurs sont éligibles à tous les flux de [connexion basés sur le client](authentication-flows-selection-sdk.md#authentication-flows-selection-client).

  Le tableau suivant décrit l'effet des paramètres MFA du groupe d'utilisateurs et de la configuration utilisateur des facteurs MFA sur la capacité des utilisateurs à se connecter sans mot de passe.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/cognito/latest/developerguide/user-pool-settings-mfa.html)
+ La méthode MFA préférée d'un utilisateur influence les méthodes qu'il peut utiliser pour récupérer son mot de passe. Les utilisateurs dont le MFA préféré est envoyé par e-mail ne peuvent pas recevoir de code de réinitialisation de mot de passe par e-mail. Les utilisateurs dont le MFA préféré est envoyé par SMS ne peuvent pas recevoir de code de réinitialisation de mot de passe par SMS.

  Vos paramètres [de récupération de mot de passe](managing-users-passwords.md#user-pool-password-reset-and-recovery) doivent fournir une autre option lorsque les utilisateurs ne sont pas éligibles à votre méthode de réinitialisation de mot de passe préférée. Par exemple, vos mécanismes de restauration peuvent avoir le courrier électronique comme priorité absolue et l'authentification MFA par e-mail peut être une option dans votre groupe d'utilisateurs. Dans ce cas, ajoutez la récupération des comptes par SMS comme deuxième option ou utilisez les opérations d'API d'administration pour réinitialiser les mots de passe de ces utilisateurs.

  Amazon Cognito répond aux demandes de réinitialisation de mot de passe des utilisateurs qui ne disposent pas d'une méthode de restauration valide en envoyant une réponse d'erreur. `InvalidParameterException`

  L'exemple de corps de demande pour [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html#API_UpdateUserPool_Examples)illustre un `AccountRecoverySetting` endroit où les utilisateurs peuvent revenir à la restauration par SMS lorsque la réinitialisation du mot de passe par e-mail n'est pas disponible.
+ Les utilisateurs ne peuvent pas recevoir le MFA et les codes de réinitialisation de mot de passe à la même adresse e-mail ou au même numéro de téléphone. S'ils utilisent des mots de passe à usage unique (OTPs) contenus dans des e-mails pour la MFA, ils doivent utiliser des SMS pour récupérer leur compte. S'ils utilisent OTPs des messages SMS pour le MFA, ils doivent utiliser des e-mails pour récupérer leur compte. Dans les groupes d'utilisateurs dotés de l'authentification multifacteur, les utilisateurs peuvent ne pas être en mesure de récupérer leur mot de passe en libre-service s'ils ont des attributs pour leur adresse e-mail mais pas de numéro de téléphone, ou s'ils ont un numéro de téléphone sans adresse e-mail.

  Pour éviter que les utilisateurs ne puissent pas réinitialiser leur mot de passe dans les groupes d'utilisateurs avec cette configuration, définissez les `phone_number` [attributs `email` et selon les besoins](user-pool-settings-attributes.md). Vous pouvez également configurer des processus qui collectent et définissent toujours ces attributs lorsque les utilisateurs s'inscrivent ou lorsque vos administrateurs créent des profils utilisateur. Lorsque les utilisateurs possèdent les deux attributs, Amazon Cognito envoie automatiquement des codes de réinitialisation de mot de passe à la destination qui ne correspond pas au facteur MFA de *l'*utilisateur.
+ Lorsque vous activez le MFA dans votre groupe d'utilisateurs et que vous choisissez le **message SMS** ou **e-mail** comme deuxième facteur, vous pouvez envoyer des messages à un numéro de téléphone ou à un attribut d'e-mail que vous n'avez pas vérifié dans Amazon Cognito. Une fois que votre utilisateur a terminé l'authentification MFA, Amazon Cognito définit `phone_number_verified` son `email_verified` attribut or sur. `true`
+ Après cinq tentatives infructueuses de présentation d’un code MFA, Amazon Cognito lance le processus de verrouillage par temporisation exponentielle décrit dans le [Comportement de verrouillage en cas d'échec des tentatives de connexion](authentication.md#authentication-flow-lockout-behavior).
+ Si votre compte se trouve dans le sandbox SMS Région AWS qui contient les ressources Amazon Simple Notification Service (Amazon SNS) pour votre groupe d'utilisateurs, vous devez vérifier les numéros de téléphone dans Amazon SNS avant de pouvoir envoyer un SMS. Pour de plus amples informations, veuillez consulter [Paramètres des SMS pour les groupes d'utilisateurs Amazon Cognito](user-pool-sms-settings.md).
+ Pour modifier le statut MFA des utilisateurs en réponse à des événements détectés avec protection contre les menaces, activez le MFA et définissez-le comme facultatif dans la console du groupe d'utilisateurs Amazon Cognito. Pour de plus amples informations, veuillez consulter [Sécurité avancée avec protection contre les menaces](cognito-user-pool-settings-threat-protection.md).
+ Les e-mails et les SMS nécessitent que vos utilisateurs disposent respectivement d'une adresse e-mail et d'un numéro de téléphone. Vous pouvez définir `email` ou selon `phone_number` les besoins des attributs de votre groupe d'utilisateurs. Dans ce cas, les utilisateurs ne peuvent pas terminer leur inscription s'ils ne fournissent pas de numéro de téléphone. Si vous ne définissez pas ces attributs comme requis mais que vous souhaitez utiliser l'authentification MFA par e-mail ou par SMS, vous demandez aux utilisateurs de saisir leur adresse e-mail ou leur numéro de téléphone lors de leur inscription. Il est recommandé de configurer votre groupe d'utilisateurs pour qu'il envoie automatiquement des messages aux utilisateurs afin de [vérifier ces attributs](signing-up-users-in-your-app.md).

  Amazon Cognito considère qu'un numéro de téléphone ou une adresse e-mail ont été vérifiés si un utilisateur a reçu avec succès un code temporaire par SMS ou e-mail et l'a renvoyé dans une demande d'[VerifyUserAttribute](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifyUserAttribute.html)API. Votre équipe peut également définir des numéros de téléphone et les marquer comme vérifiés auprès d'une application administrative qui exécute les demandes [AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html)d'API.
+ Si vous avez défini l'authentification MFA comme obligatoire et que vous avez activé plusieurs facteurs d'authentification, Amazon Cognito invite les nouveaux utilisateurs à sélectionner le facteur MFA qu'ils souhaitent utiliser. Les utilisateurs doivent disposer d'un numéro de téléphone pour configurer le MFA par SMS et d'une adresse e-mail pour configurer le MFA par e-mail. Si aucun attribut n'est défini pour aucun MFA basé sur des messages disponible, Amazon Cognito l'invite à configurer le MFA TOTP. L'invite à choisir un facteur MFA (`SELECT_MFA_TYPE`) et à configurer un facteur choisi (`MFA_SETUP`) est une réponse à un défi [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)et à des opérations d'[AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)API.

## Préférences MFA de l'utilisateur
<a name="user-pool-settings-mfa-preferences"></a>

Les utilisateurs peuvent configurer plusieurs facteurs MFA. Un seul peut être actif. Vous pouvez choisir la préférence MFA effective pour vos utilisateurs dans les paramètres du groupe d'utilisateurs ou à partir des instructions des utilisateurs. Un groupe d'utilisateurs invite un utilisateur à saisir des codes MFA lorsque les paramètres du groupe d'utilisateurs et leurs propres paramètres au niveau de l'utilisateur répondent aux conditions suivantes :

1. Vous définissez l'authentification MFA comme facultative ou obligatoire dans votre groupe d'utilisateurs.

1. L'utilisateur possède un `phone_number` attribut `email` or valide ou a configuré une application d'authentification pour TOTP.

1. Au moins un facteur MFA est actif.

1. Un facteur MFA est défini comme préféré.

### Empêcher l'utilisation du même facteur pour la connexion et le MFA
<a name="user-pool-settings-mfa-preferences-same-factor"></a>

Il est possible de configurer votre groupe d'utilisateurs de manière à ce qu'un seul facteur de connexion soit la seule option de connexion et de MFA disponible pour certains ou tous les utilisateurs. Ce résultat peut se produire lorsque votre principal cas d'utilisation de connexion est un mot de passe à usage unique par e-mail ou SMS (). OTPs Le MFA préféré d'un utilisateur peut être le même type de facteur que sa connexion dans les conditions suivantes :
+ Le MFA est obligatoire dans le groupe d'utilisateurs.
+ Les e-mails et les SMS OTP sont des options de connexion et *MFA* disponibles dans le pool d'utilisateurs.
+ L'utilisateur se connecte par e-mail ou SMS OTP.
+ Ils ont un attribut d'adresse e-mail mais pas d'attribut de numéro de téléphone, ou un attribut de numéro de téléphone mais pas d'attribut d'adresse e-mail.

Dans ce scénario, l'utilisateur peut se connecter avec un OTP d'e-mail et terminer le MFA avec un OTP d'e-mail. Cette option annule la fonction essentielle de la MFA. Les utilisateurs qui se connectent avec un mot de passe à usage unique doivent être en mesure d'utiliser des méthodes de livraison différentes pour la connexion et pour le MFA. Lorsque les utilisateurs disposent à la fois des options SMS et e-mail, Amazon Cognito attribue automatiquement un facteur différent. Par exemple, lorsqu'un utilisateur se connecte par e-mail OTP, son MFA préféré est le SMS OTP.

Suivez les étapes ci-dessous pour résoudre le problème de l'authentification à facteur identique lorsque votre groupe d'utilisateurs prend en charge l'authentification OTP à la fois pour la connexion et pour l'authentification MFA.

1. Activez le courrier électronique et le protocole OTP par SMS comme facteurs de connexion.

1. Activez le courrier électronique et le protocole OTP par SMS en tant que facteurs MFA.

1. Collecte

### Paramètres du groupe d'utilisateurs et leur effet sur les options MFA
<a name="user-pool-settings-mfa-preferences-things-to-know"></a>

La configuration de votre groupe d'utilisateurs influence les méthodes MFA que les utilisateurs peuvent choisir. Voici quelques paramètres du groupe d'utilisateurs qui influencent la capacité des utilisateurs à configurer le MFA.
+ Dans la configuration de l'**authentification multifactorielle** du menu de **connexion** de la console Amazon Cognito, vous pouvez définir l'authentification MFA comme facultative ou obligatoire, ou la désactiver. L'équivalent API de ce paramètre est le [MfaConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-MfaConfiguration)paramètre de `CreateUserPool``UpdateUserPool`, et`SetUserPoolMfaConfig`.

  Toujours dans la configuration de l'**authentification multifactorielle**, le paramètre des méthodes **MFA** détermine les facteurs MFA que les utilisateurs peuvent configurer. L'équivalent API de ce paramètre est l'[SetUserPoolMfaConfig](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserPoolMfaConfig.html)opération. 
+ Dans le menu de **connexion**, sous **Récupération du compte utilisateur**, vous pouvez configurer la manière dont votre groupe d'utilisateurs envoie des messages aux utilisateurs qui oublient leur mot de passe. La méthode MFA d'un utilisateur ne peut pas avoir la même méthode de livraison MFA que la méthode de livraison du groupe d'utilisateurs pour les codes de mot de passe oubliés. Le paramètre d'API pour la méthode de livraison du mot de passe oublié est le [AccountRecoverySetting](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-AccountRecoverySetting)paramètre de et. `CreateUserPool` `UpdateUserPool`

  Par exemple, les utilisateurs ne peuvent pas configurer l'authentification MFA par e-mail lorsque votre option de restauration est le **courrier électronique** uniquement. Cela est dû au fait que vous ne pouvez pas activer l'authentification MFA par e-mail et définir l'option de restauration sur **E-mail uniquement** dans le même groupe d'utilisateurs. Lorsque vous définissez cette option sur **E-mail si disponible, sinon sur SMS**, le courrier électronique est l'option de restauration prioritaire, mais votre groupe d'utilisateurs peut revenir aux SMS lorsqu'un utilisateur n'est pas éligible à la restauration de messages électroniques. Dans ce scénario, les utilisateurs peuvent définir le MFA par e-mail comme favori et ne peuvent recevoir un message SMS que lorsqu'ils tentent de réinitialiser leur mot de passe.
+ Si vous définissez une seule méthode MFA comme étant disponible, vous n'avez pas besoin de gérer les préférences MFA des utilisateurs.
+ Une configuration SMS active fait automatiquement des SMS une méthode MFA disponible dans votre groupe d'utilisateurs.

  Une [configuration de messagerie](user-pool-email.md) active avec vos propres ressources Amazon SES dans un groupe d'utilisateurs et le plan de fonctionnalités Essentials ou Plus font automatiquement des e-mails une méthode MFA disponible dans votre groupe d'utilisateurs.
+ Lorsque vous définissez l'authentification MFA comme obligatoire dans un groupe d'utilisateurs, les utilisateurs ne peuvent ni activer ni désactiver aucune méthode MFA. Vous ne pouvez définir qu'une méthode préférée.
+ Lorsque vous définissez l'authentification MFA comme facultative dans un groupe d'utilisateurs, la connexion gérée n'invite pas les utilisateurs à configurer l'authentification multifacteur, mais elle les invite à saisir un code MFA lorsqu'ils ont une méthode MFA préférée.
+ Lorsque vous activez [la protection contre les menaces](cognito-user-pool-settings-threat-protection.md) et que vous configurez des réponses d'authentification adaptative en mode multifonction, la MFA doit être facultative dans votre groupe d'utilisateurs. L'une des options de réponse avec l'authentification adaptative consiste à exiger l'authentification MFA pour un utilisateur dont la tentative de connexion est évaluée comme présentant un certain niveau de risque.

  Le paramètre **Attributs obligatoires** dans le menu d'**inscription** de la console détermine si les utilisateurs doivent fournir une adresse e-mail ou un numéro de téléphone pour s'inscrire dans votre application. Les e-mails et les SMS deviennent des facteurs MFA éligibles lorsqu'un utilisateur possède l'attribut correspondant. Le paramètre [Schema](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-Schema) `CreateUserPool` définit les attributs selon les besoins.
+ Lorsque vous définissez l'authentification MFA comme obligatoire dans un groupe d'utilisateurs et qu'un utilisateur se connecte avec une connexion gérée, Amazon Cognito l'invite à sélectionner une méthode MFA parmi les méthodes disponibles pour votre groupe d'utilisateurs. La connexion gérée gère la collecte d'une adresse e-mail ou d'un numéro de téléphone et la configuration de TOTP. Le schéma ci-dessous illustre la logique qui sous-tend les options proposées par Amazon Cognito aux utilisateurs.

### Configuration des préférences MFA pour les utilisateurs
<a name="user-pool-settings-mfa-preferences-configure"></a>

Vous pouvez configurer les préférences MFA pour les utilisateurs dans un modèle en libre-service avec autorisation par jeton d'accès, ou dans un modèle géré par un administrateur avec des opérations d'API administratives. Ces opérations activent ou désactivent les méthodes MFA et définissent l'une des nombreuses méthodes comme option préférée. Une fois que votre utilisateur a défini une préférence MFA, Amazon Cognito l'invite, lors de la connexion, à fournir un code correspondant à sa méthode MFA préférée. Les utilisateurs qui n'ont pas défini de préférence sont invités à choisir la méthode préférée lors d'un `SELECT_MFA_TYPE` défi.
+ Dans un modèle de libre-service utilisateur ou une application publique [SetUserMfaPreference](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserMFAPreference.html), autorisé par le jeton d'accès d'un utilisateur connecté, définit la configuration MFA.
+ Dans une application gérée par un administrateur ou confidentielle, autorisée par des informations d' AWS identification administratives [AdminSetUserPreference](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserMFAPreference.html), définit la configuration MFA.

Vous pouvez également définir les préférences MFA des utilisateurs dans le menu **Utilisateurs** de la console Amazon Cognito. Pour plus d'informations sur les modèles d'authentification publics et confidentiels de l'API des groupes d'utilisateurs Amazon Cognito, consultez. [Comprendre l'API, l'OIDC et l'authentification par pages de connexion gérées](authentication-flows-public-server-side.md#user-pools-API-operations)

## Détails de la logique MFA lors de l'exécution de l'utilisateur
<a name="user-pool-settings-mfa-user-outcomes"></a>

Pour déterminer les étapes à suivre lorsque les utilisateurs se connectent, votre groupe d'utilisateurs évalue les préférences MFA des utilisateurs, les attributs des utilisateurs[, le paramètre MFA du groupe d'utilisateurs](user-pool-settings-attributes.md), [les](#user-pool-configuring-mfa) actions de protection contre les [menaces](cognito-user-pool-settings-adaptive-authentication.md) [et](managing-users-passwords.md#user-pool-password-reset-and-recovery) les paramètres de restauration des comptes en libre-service. Il connecte ensuite les utilisateurs, les invite à choisir une méthode MFA, les invite à configurer une méthode MFA ou les invite à utiliser l'MFA. Pour configurer une méthode MFA, les utilisateurs doivent fournir une [adresse e-mail ou un numéro de téléphone ou](user-pool-settings-mfa-sms-email-message.md) [enregistrer un authentificateur TOTP](user-pool-settings-mfa-totp.md#totp-mfa-set-up-api). Ils peuvent également configurer les options MFA et [enregistrer une option préférée](#user-pool-settings-mfa-preferences-configure) à l'avance. Le schéma suivant répertorie les effets détaillés de la configuration du groupe d'utilisateurs sur les tentatives de connexion immédiatement après l'inscription initiale.

La logique illustrée ici s'applique aux applications basées sur le SDK et à la [connexion gérée](cognito-user-pools-managed-login.md), mais elle est moins visible dans la connexion gérée. Lorsque vous dépannez le MFA, revenez sur les résultats de vos utilisateurs pour vous concentrer sur les configurations du profil utilisateur et du groupe d'utilisateurs qui ont contribué à la décision.

![\[Schéma du processus décisionnel des groupes d'utilisateurs Amazon Cognito pour la sélection du MFA par les utilisateurs finaux.\]](http://docs.aws.amazon.com/fr_fr/cognito/latest/developerguide/images/cup-mfa-decision-tree.png)


La liste suivante correspond à la numérotation du diagramme logique de décision et décrit chaque étape en détail. A ![\[checkmark\]](http://docs.aws.amazon.com/fr_fr/cognito/latest/developerguide/images/checkmark.png) indique une authentification réussie et la fin du flux. A ![\[error\]](http://docs.aws.amazon.com/fr_fr/cognito/latest/developerguide/images/error.png) indique un échec de l'authentification.

1. Un utilisateur présente son nom d'utilisateur ou son nom d'utilisateur et son mot de passe sur votre écran de connexion. S'ils ne présentent pas d'informations d'identification valides, leur demande de connexion est refusée. 

1. S'ils réussissent l'authentification par nom d'utilisateur et mot de passe, déterminez si l'authentification MFA est obligatoire, facultative ou désactivée. S'il est désactivé, le nom d'utilisateur et le mot de passe corrects permettent une authentification réussie. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/fr_fr/cognito/latest/developerguide/images/checkmark.png)

   1. Si le MFA est facultatif, déterminez si l'utilisateur a déjà configuré un authentificateur TOTP. S'ils ont configuré le TOTP, demandez-leur d'activer le MFA TOTP. S'ils répondent avec succès au défi MFA, ils sont connectés. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/fr_fr/cognito/latest/developerguide/images/checkmark.png)

   1. Déterminez si la fonctionnalité d'authentification adaptative de la protection contre les menaces a obligé l'utilisateur à configurer la MFA. S'il n'a pas attribué de MFA, l'utilisateur est connecté. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/fr_fr/cognito/latest/developerguide/images/checkmark.png)

1. Si l'authentification MFA est requise ou si l'authentification adaptative a attribué une MFA, déterminez si l'utilisateur a défini un facteur MFA comme activé et préféré. Si c'est le cas, demandez-leur d'utiliser le MFA avec ce facteur. S'ils répondent avec succès au défi MFA, ils sont connectés. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/fr_fr/cognito/latest/developerguide/images/checkmark.png)

1. Si l'utilisateur n'a pas défini de préférence MFA, déterminez s'il a enregistré un authentificateur TOTP.

   1. Si l'utilisateur a enregistré un authentificateur TOTP, déterminez si le MFA TOTP est disponible dans le groupe d'utilisateurs (le MFA TOTP peut être désactivé une fois que les utilisateurs ont préalablement configuré les authentificateurs).

   1. Déterminez si le MFA par e-mail ou par SMS est également disponible dans le groupe d'utilisateurs.

   1.  Si ni le MFA par e-mail ni par SMS n'est disponible, demandez à l'utilisateur d'utiliser le MFA TOTP. S'ils répondent avec succès au défi MFA, ils sont connectés. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/fr_fr/cognito/latest/developerguide/images/checkmark.png)

   1. Si le MFA par e-mail ou SMS est disponible, déterminez si l'utilisateur possède l'attribut `email` ou `phone_number` correspondant. Dans ce cas, tout attribut qui n'est pas la principale méthode de restauration de comptes en libre-service et qui est activé pour la MFA est disponible pour eux.

   1. Proposez un `SELECT_MFA_TYPE` défi à l'utilisateur avec des `MFAS_CAN_SELECT` options telles que le TOTP et les facteurs MFA disponibles pour les SMS ou les e-mails.

   1.  Demandez à l'utilisateur de saisir le facteur qu'il a sélectionné en réponse au `SELECT_MFA_TYPE` défi. S'ils répondent avec succès au défi MFA, ils sont connectés. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/fr_fr/cognito/latest/developerguide/images/checkmark.png)

1. Si l'utilisateur n'a pas enregistré d'authentificateur TOTP, ou s'il l'a fait mais que le MFA TOTP est actuellement désactivé, déterminez s'il possède un attribut ou. `email` `phone_number`

1.  Si l'utilisateur ne possède qu'une adresse e-mail ou un numéro de téléphone, déterminez si cet attribut est également la méthode que le groupe d'utilisateurs met en œuvre pour envoyer des messages de restauration de compte afin de réinitialiser le mot de passe. Si c'est vrai, ils ne peuvent pas terminer la connexion avec le MFA requis et Amazon Cognito renvoie un message d'erreur. Pour activer la connexion pour cet utilisateur, vous devez ajouter un attribut de non-restauration ou enregistrer un authentificateur TOTP pour cet utilisateur. ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/cognito/latest/developerguide/images/error.png)

   1. S'ils disposent d'une adresse e-mail ou d'un numéro de téléphone non récupérable, déterminez si le facteur MFA par e-mail ou SMS correspondant est activé.

   1. S'ils ont un attribut d'adresse e-mail non récupérable et que l'authentification MFA par e-mail est activée, proposez-leur un `EMAIL_OTP` défi. S'ils répondent avec succès au défi MFA, ils sont connectés. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/fr_fr/cognito/latest/developerguide/images/checkmark.png)

   1. S'ils ont un attribut de numéro de téléphone non récupérable et que l'authentification MFA par SMS est activée, proposez-leur un `SMS_MFA` défi. S'ils répondent avec succès au défi MFA, ils sont connectés. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/fr_fr/cognito/latest/developerguide/images/checkmark.png)

   1. S'ils ne possèdent aucun attribut éligible à un facteur MFA activé par e-mail ou SMS, déterminez si l'authentification MFA TOTP est activée. Si l'authentification multifacteur TOTP est désactivée, ils ne peuvent pas terminer la connexion avec l'authentification MFA requise et Amazon Cognito renvoie un message d'erreur. Pour activer la connexion pour cet utilisateur, vous devez ajouter un attribut de non-restauration ou enregistrer un authentificateur TOTP pour cet utilisateur. ![\[alt text not found\]](http://docs.aws.amazon.com/fr_fr/cognito/latest/developerguide/images/error.png)
**Note**  
Cette étape a déjà été évaluée comme **Non** si l'utilisateur possède un authentificateur TOTP mais que le MFA TOTP est désactivé.

   1. Si le TOTP MFA est activé, présentez `MFA_SETUP` un défi à l'utilisateur parmi les `SOFTWARE_TOKEN_MFA` `MFAS_CAN_SETUP` options. Pour relever ce défi, vous devez enregistrer séparément un authentificateur TOTP pour l'utilisateur et y répondre. `"ChallengeName": "MFA_SETUP", "ChallengeResponses": {"USERNAME": "[username]", "SESSION": "[Session ID from VerifySoftwareToken]}"`

   1. Une fois que l'utilisateur a répondu au `MFA_SETUP` défi avec le jeton de session d'une [VerifySoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifySoftwareToken.html)demande, demandez-lui de `SOFTWARE_TOKEN_MFA` lancer un défi. S'ils répondent avec succès au défi MFA, ils sont connectés. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/fr_fr/cognito/latest/developerguide/images/checkmark.png)

1. Si l'utilisateur possède à la fois une adresse e-mail et un numéro de téléphone, déterminez quel attribut, le cas échéant, est la principale méthode pour les messages de récupération de compte pour la réinitialisation du mot de passe.

   1. Si la restauration des comptes en libre-service est désactivée, l'un ou l'autre des attributs peut être utilisé pour la MFA. Déterminez si l'un des facteurs MFA pour les e-mails et les SMS est activé ou les deux.

   1. Si les deux attributs sont activés en tant que facteur MFA, demandez à l'utilisateur de `SELECT_MFA_TYPE` relever un défi avec les `MFAS_CAN_SELECT` options `SMS_MFA` et. `EMAIL_OTP`

   1. Demandez-leur le facteur qu'ils ont sélectionné en réponse au `SELECT_MFA_TYPE` défi. S'ils répondent avec succès au défi MFA, ils sont connectés. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/fr_fr/cognito/latest/developerguide/images/checkmark.png)

   1. Si un seul attribut est un facteur MFA éligible, demandez-leur de contester le facteur restant. S'ils répondent avec succès au défi MFA, ils sont connectés. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/fr_fr/cognito/latest/developerguide/images/checkmark.png)

      Ce résultat se produit dans les scénarios suivants.

      1. Lorsqu'ils possèdent des `email` `phone_number` attributs, l'authentification MFA par SMS et e-mail est activée, et la principale méthode de récupération du compte est par e-mail ou SMS.

      1. Lorsqu'ils possèdent `email` des `phone_number` attributs, seule la MFA par SMS ou par e-mail est activée, et la restauration des comptes en libre-service est désactivée.

1. Si l'utilisateur n'a pas enregistré d'authentificateur TOTP et qu'il ne possède aucun `phone_number` attribut `email` nor, demandez-lui de lancer un défi. `MFA_SETUP` La liste `MFAS_CAN_SETUP` inclut tous les facteurs MFA activés dans le pool d'utilisateurs qui ne constituent pas la principale option de restauration de compte. Ils peuvent relever ce défi par e-mail ou par `ChallengeResponses` le biais du TOTP MFA. Pour configurer l'authentification MFA par SMS, ajoutez un attribut de numéro de téléphone séparément et redémarrez l'authentification.

   Pour le TOTP MFA, répondez par. `"ChallengeName": "MFA_SETUP", "ChallengeResponses": {"USERNAME": "[username]", "SESSION": "[Session ID from VerifySoftwareToken]"}`

   Pour le MFA par e-mail, répondez par. `"ChallengeName": "MFA_SETUP", "ChallengeResponses": {"USERNAME": "[username]", "email": "[user's email address]"}`

   1. Demandez-leur le facteur qu'ils ont sélectionné en réponse au `SELECT_MFA_TYPE` défi. S'ils répondent avec succès au défi MFA, ils sont connectés. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/fr_fr/cognito/latest/developerguide/images/checkmark.png)

## Configuration d'un groupe d'utilisateurs pour l'authentification multifactorielle
<a name="user-pool-configuring-mfa"></a>

Vous pouvez configurer le MFA dans la console Amazon Cognito ou à l'aide du fonctionnement de [SetUserPoolMfaConfig](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserPoolMfaConfig.html)l'API et des méthodes du SDK.

**Pour configurer l’authentification MFA dans la console Amazon Cognito.**

1. Connectez-vous à la [console Amazon Cognito](https://console.aws.amazon.com/cognito/home).

1. Choisissez **Groupes d’utilisateurs**.

1. Choisissez un groupe d’utilisateurs existant dans la liste ou [créez-en un](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html).

1. Choisissez le menu **de connexion**. Localisez l'**authentification multifactorielle** et choisissez **Modifier**.

1. Choisissez la méthode **MFA enforcement** que vous souhaitez utiliser avec votre groupe d’utilisateurs.  
![\[Capture d'écran de la console Amazon Cognito avec les options MFA.\]](http://docs.aws.amazon.com/fr_fr/cognito/latest/developerguide/images/cup-mfa.png)

   1. **Require MFA** (Demander l’authentification MFA). Tous les utilisateurs de votre groupe d'utilisateurs doivent se connecter à l'aide d'un SMS, d'un e-mail ou d'un code TOTP (mot de passe à usage unique basé sur le temps) comme facteur d'authentification supplémentaire.

   1. **MFA en option**. Vous pouvez donner à vos utilisateurs la possibilité d'enregistrer un facteur de connexion supplémentaire tout en autorisant les utilisateurs qui n'ont pas configuré la MFA à se connecter. Choisissez cette option si vous utilisez l’authentification adaptative. Pour plus d’informations sur l’authentification adaptative, consultez [Sécurité avancée avec protection contre les menaces](cognito-user-pool-settings-threat-protection.md).

   1. **No MFA** (Aucune authentification MFA). Vos utilisateurs ne peuvent pas enregistrer un facteur de connexion supplémentaire.

1. Choisissez les **méthodes MFA** que vous allez prendre en charge dans votre application. Vous pouvez définir le **message électronique, le message** **SMS** ou les **applications d'authentification génératrices de TOTP comme deuxième facteur**.

1. Si vous utilisez les SMS comme deuxième facteur et que vous n’avez pas configuré de rôle IAM à utiliser avec Amazon Simple Notification Service (Amazon SNS) pour les SMS, créez-en un dans la console. Dans le menu **Méthodes d'authentification** de votre groupe d'utilisateurs, recherchez **SMS** et choisissez **Modifier**. Vous pouvez également utiliser un rôle existant permettant à Amazon Cognito d’envoyer des SMS à vos utilisateurs à votre place. Pour en savoir plus, consultez [Rôles IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html).

   Si vous utilisez les e-mails comme deuxième facteur et que vous n'avez pas configuré d'identité d'origine à utiliser avec Amazon Simple Email Service (Amazon SES) pour les e-mails, créez-en une dans la console. Vous devez choisir l'option **Envoyer un e-mail avec SES**. Dans le menu **Méthodes d'authentification** de votre groupe d'utilisateurs, recherchez **E-mail** et choisissez **Modifier**. Sélectionnez une **adresse e-mail FROM** parmi les identités vérifiées disponibles dans la liste. Si vous choisissez un domaine vérifié, par exemple`example.com`, vous devez également configurer un **nom d'expéditeur FROM** dans le domaine vérifié, par exemple`admin-noreply@example.com`.

1. Sélectionnez **Enregistrer les modifications**.

# MFA par SMS et e-mail
<a name="user-pool-settings-mfa-sms-email-message"></a>

Les SMS et e-mails MFA confirment que les utilisateurs ont accès à une destination de message avant de pouvoir se connecter. Ils confirment qu'ils ont accès non seulement à un mot de passe, mais aussi aux SMS ou à la boîte de réception e-mail de l'utilisateur d'origine. Amazon Cognito demande aux utilisateurs de fournir un code court envoyé par votre groupe d'utilisateurs une fois qu'ils ont correctement fourni un nom d'utilisateur et un mot de passe.

L'authentification MFA par SMS et e-mail ne nécessite aucune configuration supplémentaire une fois que votre utilisateur a ajouté une adresse e-mail ou un numéro de téléphone à son profil. Amazon Cognito peut envoyer des messages à des adresses e-mail et à des numéros de téléphone non vérifiés. Lorsqu'un utilisateur termine son premier MFA, Amazon Cognito marque son adresse e-mail ou son numéro de téléphone comme vérifié.

L'authentification MFA commence lorsqu'un utilisateur avec MFA saisit son nom d'utilisateur et son mot de passe dans votre application. Votre application soumet ces paramètres initiaux dans une méthode du SDK qui invoque une demande d'[AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)API [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)ou. La réponse `ChallengeParameters` de l'API inclut une `CODE_DELIVERY_DESTINATION` valeur qui indique où le code d'autorisation a été envoyé. Dans votre application, affichez un formulaire qui invite l'utilisateur à vérifier son téléphone et qui inclut un élément de saisie pour le code. Lorsqu'ils saisissent leur code, soumettez-le dans une demande d'API Challenge-Réponse pour terminer le processus de connexion.

Une fois qu'un utilisateur utilisant le MFA s'est connecté avec son nom d'utilisateur et son mot de passe sur les pages de [connexion gérées](cognito-user-pools-managed-login.md), il est automatiquement invité à saisir le code MFA.

Les groupes d'utilisateurs envoient des SMS pour les notifications MFA et autres notifications Amazon Cognito avec les ressources Amazon Simple Notification Service (Amazon SNS) présentes dans votre. Compte AWS De même, les groupes d'utilisateurs envoient des e-mails contenant les ressources Amazon Simple Email Service (Amazon SES) de votre compte. Ces services connexes entraînent leurs propres frais sur votre AWS facture pour la livraison des messages. Ils ont également des exigences supplémentaires pour l'envoi de messages aux volumes de production. Consultez les liens suivants pour plus d'informations :
+ [Paramètres des SMS pour les groupes d'utilisateurs Amazon Cognito](user-pool-sms-settings.md)
+ [Tarifs des SMS dans le monde entier](https://aws.amazon.com/sns/sms-pricing/)
+ [Paramètres d'e-mail pour les groupes d'utilisateurs Amazon Cognito](user-pool-email.md)
+ [Tarification d'Amazon SES](https://aws.amazon.com/ses/pricing)

## Considérations relatives à l'authentification MFA par SMS et e-mail
<a name="user-pool-settings-mfa-sms-email-message-considerations"></a>
+ Pour permettre aux utilisateurs de se connecter par e-mail MFA, votre groupe d'utilisateurs doit disposer des options de configuration suivantes :

  1. Vous avez le plan de fonctionnalités Plus ou Essentials dans votre groupe d'utilisateurs. Pour de plus amples informations, veuillez consulter [Plans de fonctionnalités du pool d'utilisateurs](cognito-sign-in-feature-plans.md).

  1. Votre groupe d'utilisateurs envoie des e-mails avec vos propres ressources Amazon SES. Pour de plus amples informations, veuillez consulter [Configuration de l'e-mail Amazon SES](user-pool-email.md#user-pool-email-developer).
+ Le code MFA est valide pendant la **durée de session du flux d'authentification** que vous avez définie pour votre client d'application.

  Définissez la durée d'une session de flux d'authentification dans la console Amazon Cognito dans le menu **Clients de l'application** lorsque vous **modifiez** le client de votre application. Vous pouvez également définir la durée d’une session de flux d’authentification dans une demande d’API `CreateUserPoolClient` ou `UpdateUserPoolClient`. Pour de plus amples informations, veuillez consulter [Exemple de session d'authentification](authentication.md#amazon-cognito-user-pools-authentication-flow).
+ Lorsqu'un utilisateur fournit avec succès un code provenant d'un SMS ou d'un e-mail envoyé par Amazon Cognito à un numéro de téléphone ou à une adresse e-mail non vérifiés, Amazon Cognito marque l'attribut correspondant comme vérifié.
+ Pour qu'un utilisateur puisse modifier en libre-service la valeur d'un numéro de téléphone ou d'une adresse e-mail associés au MFA, il doit se connecter et autoriser la demande à l'aide d'un jeton d'accès. S'ils ne peuvent pas accéder à leur numéro de téléphone ou à leur adresse e-mail actuels, ils ne peuvent pas se connecter. Votre équipe doit modifier ces valeurs avec les AWS informations d'identification d'administrateur dans les demandes d'[AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html)API.
+ Après avoir [configuré les SMS](user-pool-sms-settings.md) dans votre groupe d'utilisateurs, vous ne pouvez pas désactiver les messages SMS en tant que facteur MFA disponible.

# Authentification MFA par jeton logiciel TOTP
<a name="user-pool-settings-mfa-totp"></a>

Lorsque vous configurez la MFA par jeton logiciel TOTP dans votre groupe d’utilisateurs, votre utilisateur se connecte avec un nom d’utilisateur et un mot de passe, puis utilise un mot de passe TOTP pour terminer l’authentification. Une fois que votre utilisateur a défini et vérifié un nom d’utilisateur et un mot de passe, il peut activer un jeton logiciel TOTP pour la MFA. Si votre application utilise l'identifiant géré par Amazon Cognito pour connecter les utilisateurs, votre utilisateur envoie son nom d'utilisateur et son mot de passe, puis soumet le mot de passe TOTP sur une page de connexion supplémentaire.

Vous pouvez activer l’authentification MFA par TOTP pour votre groupe d’utilisateurs dans la console Amazon Cognito. Vous pouvez également utiliser les opérations d’API Amazon Cognito. Au niveau du groupe d'utilisateurs, vous pouvez appeler [SetUserPoolMfaConfig](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserPoolMfaConfig.html)pour configurer le MFA et activer le MFA TOTP.

**Note**  
Si vous n’avez pas activé l’authentification MFA par jeton logiciel TOTP pour le groupe d’utilisateurs, Amazon Cognito ne peut pas utiliser le jeton pour associer ou vérifier les utilisateurs. Dans ce cas, les utilisateurs reçoivent une exception `SoftwareTokenMFANotFoundException` avec la description `Software Token MFA has not been enabled by the userPool`. Si vous désactivez ultérieurement l’authentification MFA par jeton logiciel pour le groupe d’utilisateurs, les utilisateurs qui ont précédemment associé et vérifié un jeton TOTP peuvent continuer à l’utiliser pour l’authentification MFA.

La configuration du mot de passe TOTP pour votre utilisateur est un processus en plusieurs étapes au cours duquel l’utilisateur reçoit un code secret qu’il valide en entrant un mot de passe à usage unique. Ensuite, vous pouvez activer l’authentification MFA par TOTP pour l’utilisateur ou définir TOTP comme méthode MFA préférée pour l’utilisateur.

Lorsque vous configurez votre groupe d'utilisateurs pour exiger le TOTP MFA et que vos utilisateurs s'inscrivent à votre application dans le cadre d'une connexion gérée, Amazon Cognito automatise le processus utilisateur. Amazon Cognito invite votre utilisateur à choisir une méthode MFA, affiche un code QR pour configurer son application d’authentification et vérifie son enregistrement MFA. Dans les groupes d’utilisateurs auxquels vous avez permis de choisir entre une authentification par SMS et une authentification MFA par TOTP, Amazon Cognito propose également à vos utilisateurs de choisir une méthode.

**Important**  
Lorsqu'une ACL AWS WAF Web est associée à un groupe d'utilisateurs et qu'une règle de votre ACL Web présente un CAPTCHA, cela peut provoquer une erreur irrécupérable lors de l'enregistrement TOTP de connexion gérée. Pour créer une règle comportant une action CAPTCHA et n'affectant pas la connexion gérée TOTP, consultez. [Configuration de votre ACL AWS WAF Web pour la connexion gérée (TOTP MFA)](#totp-waf) Pour plus d'informations sur AWS WAF le Web ACLs et Amazon Cognito, consultez. [Associer une ACL AWS WAF Web à un groupe d'utilisateurs](user-pool-waf.md)

Pour implémenter le MFA TOTP dans une interface utilisateur personnalisée avec AWS un SDK et l'API des groupes d'utilisateurs Amazon [Cognito, consultez](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html). [Configuration du MFA TOTP pour un utilisateur](#totp-mfa-set-up-api)

Pour ajouter l’authentification MFA à votre groupe d’utilisateurs, consultez [Ajout de l’authentification MFA à un groupe d’utilisateurs](user-pool-settings-mfa.md).

**Considérations et restrictions liées à l’authentification MFA par TOTP**

1. Amazon Cognito prend en charge l’authentification MFA par jeton logiciel via une application d’authentification qui génère des codes TOTP. Amazon Cognito ne prend pas en charge l’authentification MFA matérielle.

1. Lorsque votre groupe d’utilisateurs nécessite un mot de passe TOTP pour un utilisateur qui ne l’a pas configuré, l’utilisateur reçoit un jeton d’accès unique que votre application peut utiliser pour activer l’authentification MFA par TOTP pour l’utilisateur. Les tentatives de connexion suivantes échouent tant que l’utilisateur n’a pas enregistré un facteur de connexion TOTP supplémentaire.
   + Un utilisateur qui s'inscrit dans votre groupe d'utilisateurs à l'aide de l'`SignUp`API ou par le biais d'une connexion gérée reçoit des jetons uniques lorsqu'il termine son inscription.
   + Une fois que vous avez créé un utilisateur et que celui-ci a défini son mot de passe initial, Amazon Cognito émet des jetons à usage unique à partir de la connexion gérée à l'utilisateur. Si vous définissez un mot de passe permanent pour l’utilisateur, Amazon Cognito émet des jetons uniques lorsque l’utilisateur se connecte pour la première fois.
   + Amazon Cognito n'émet pas de jetons à usage unique à un utilisateur créé par un administrateur qui se connecte via les opérations de l'API or. [InitiateAuth[AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) Une fois que votre utilisateur a réussi à définir son mot de passe initial ou si vous avez défini un mot de passe permanent pour l’utilisateur, Amazon Cognito met immédiatement l’utilisateur au défi de configurer l’authentification MFA.

1. Si un utilisateur d'un groupe d'utilisateurs nécessitant l'authentification multifacteur a déjà reçu un jeton d'accès à usage unique mais n'a pas configuré la MFA TOTP, il ne peut pas se connecter avec une connexion gérée tant qu'il n'a pas configuré la MFA. Au lieu du jeton d'accès, vous pouvez utiliser la valeur de `session` réponse d'un `MFA_SETUP` défi envoyé à [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)ou [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)dans une [AssociateSoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AssociateSoftwareToken.html)demande.

1. Si vos utilisateurs ont configuré un mot de passe TOTP, ils peuvent l’utiliser pour l’authentification MFA même si vous désactivez le mot de passe TOTP pour le groupe d’utilisateurs par la suite.

1. Amazon Cognito n'accepte que les applications TOTPs d'authentification qui génèrent des codes avec la fonction de hachage HMAC. SHA1 Les codes générés avec le hachage SHA-256 renvoient une erreur. `Code mismatch`

## Configuration du MFA TOTP pour un utilisateur
<a name="totp-mfa-set-up-api"></a>

Lorsqu’un utilisateur se connecte pour la première fois, votre application utilise son jeton d’accès unique pour générer la clé privée TOTP et la présenter à l’utilisateur au format texte ou sous la forme d’un code QR. L’utilisateur configure son application d’authentification et fournit un mot de passe TOTP pour les tentatives de connexion suivantes. Votre application ou votre connexion gérée présente le TOTP à Amazon Cognito dans les réponses au défi MFA.

Dans certains cas, la connexion gérée invite les nouveaux utilisateurs à configurer un authentificateur TOTP. Pour plus d'informations, consultez. [Détails de la logique MFA lors de l'exécution de l'utilisateur](user-pool-settings-mfa.md#user-pool-settings-mfa-user-outcomes)

**Topics**
+ [Associer le jeton logiciel TOTP](#user-pool-settings-mfa-totp-associate-token)
+ [Vérifier le jeton TOTP](#user-pool-settings-mfa-totp-verification)
+ [Connexion avec l’authentification MFA par TOTP](#user-pool-settings-mfa-totp-sign-in)
+ [Supprimer le jeton TOTP](#user-pool-settings-mfa-totp-remove)

### Associer le jeton logiciel TOTP
<a name="user-pool-settings-mfa-totp-associate-token"></a>

Pour associer le jeton TOTP, envoyez à l’utilisateur un code secret qu’il doit valider avec un mot de passe à usage unique. L’association du jeton nécessite trois étapes.

1. Lorsque votre utilisateur choisit le jeton logiciel TOTP MFA, [AssociateSoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AssociateSoftwareToken.html)appelez pour renvoyer un code secret partagé unique généré pour le compte utilisateur. Vous pouvez autoriser à l' AssociateSoftwareToken aide d'un jeton d'accès ou d'une chaîne de session. 

1. Votre application présente à l’utilisateur la clé privée ou un code QR généré à partir de la clé privée. Votre utilisateur doit saisir la clé dans une application génératrice de TOTP telle que Google Authenticator, soit en scannant le code QR généré par votre application à partir de la clé privée, soit en saisissant manuellement la clé.

1. Votre utilisateur saisit la clé ou scanne le code QR dans une application d’authentification telle que Google Authenticator, et l’application commence à générer des codes.

### Vérifier le jeton TOTP
<a name="user-pool-settings-mfa-totp-verification"></a>

Ensuite, vérifiez le jeton TOTP. Demandez des exemples de codes à votre utilisateur et fournissez-les au service Amazon Cognito pour confirmer que l’utilisateur parvient à générer des codes TOTP, comme suit.

1. Votre application demande à votre utilisateur de fournir un code pour démontrer qu’il a correctement configuré son application d’authentification.

1. L’application d’authentification de l’utilisateur affiche un mot de passe temporaire. L’application d’authentification base le mot de passe sur la clé secrète que vous avez donnée à l’utilisateur.

1. Votre utilisateur saisit son mot de passe temporaire. Votre application transmet le mot de passe temporaire à Amazon Cognito dans une demande d’API `[VerifySoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifySoftwareToken.html)`.

1.  Amazon Cognito a conservé la clé secrète associée à l’utilisateur, génère un mot de passe TOTP et le compare à celui fourni par votre utilisateur. S’ils correspondent, `VerifySoftwareToken` renvoie une réponse `SUCCESS`.

1. Amazon Cognito associe le facteur TOTP à l’utilisateur.

1. Si l’opération `VerifySoftwareToken` renvoie une réponse `ERROR`, assurez-vous que l’horloge de l’utilisateur est correcte et que ce dernier n’a pas dépassé le nombre maximal de nouvelles tentatives. Amazon Cognito accepte les jetons TOTP qui se trouvent dans les 30 secondes précédant ou suivant la tentative, pour tenir compte d’un décalage mineur d’horloge. Une fois le problème résolu, recommencez l' VerifySoftwareToken opération.

### Connexion avec l’authentification MFA par TOTP
<a name="user-pool-settings-mfa-totp-sign-in"></a>

À ce stade, l’utilisateur se connecte à l’aide du mot de passe à usage unique à durée limitée. Le processus est le suivant.

1. L’utilisateur saisit son nom d’utilisateur et son mot de passe pour se connecter à votre application cliente.

1. La stimulation de la MFA par TOTP est appelée, et l’utilisateur est invité par votre appli à saisir un mot de passe temporaire.

1. Votre utilisateur obtient le mot de passe temporaire auprès d’une application de génération de mot de passe TOTP associée.

1. L’utilisateur entre le code TOTP dans votre application cliente. L’appli demande au service Amazon Cognito de le vérifier. Pour chaque connexion, vous [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)devez être appelé pour obtenir une réponse au nouveau défi d'authentification TOTP.

1. Si le jeton est vérifié par Amazon Cognito, la connexion est réussie et l’utilisateur poursuit le flux d’authentification. 

### Supprimer le jeton TOTP
<a name="user-pool-settings-mfa-totp-remove"></a>

Enfin, votre application doit permettre à votre utilisateur de désactiver sa configuration TOTP. Actuellement, vous ne pouvez pas supprimer le jeton logiciel TOTP d’un utilisateur. Pour remplacer le jeton logiciel de votre utilisateur, associez et vérifiez un nouveau jeton logiciel. Pour désactiver le MFA TOTP pour un utilisateur, appelez pour modifier votre utilisateur [SetUserMFAPreference](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserMFAPreference.html)afin qu'il n'utilise pas le MFA ou qu'il utilise uniquement le MFA par SMS.

1. Créez une interface dans votre application pour les utilisateurs qui souhaitent réinitialiser la MFA. Dans cette interface, invitez un utilisateur à saisir son mot de passe.

1. Si Amazon Cognito renvoie un défi MFA TOTP, mettez à jour les préférences MFA de votre utilisateur avec. [SetUserMFAPreference](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserMFAPreference.html)

1. Dans votre application, indiquez à votre utilisateur qu’il a désactivé la MFA et demandez-lui de se reconnecter.

## Configuration de votre ACL AWS WAF Web pour la connexion gérée (TOTP MFA)
<a name="totp-waf"></a>

Lorsqu'une ACL AWS WAF Web est associée à un groupe d'utilisateurs et qu'une règle de votre ACL Web présente un CAPTCHA, cela peut provoquer une erreur irrécupérable lors de l'enregistrement TOTP de connexion gérée. AWS WAF Les règles CAPTCHA *n'*ont cet effet que sur le TOTP MFA dans la connexion gérée et dans l'interface utilisateur hébergée classique. L’authentification MAF par SMS n’est pas affectée.

Amazon Cognito affiche l’erreur suivante lorsque votre règle CAPTCHA ne permet pas à un utilisateur de terminer la configuration MFA par TOTP. 

La demande n’est pas autorisée en raison du captcha WAF.

Cette erreur se produit lorsque vous AWS WAF êtes invité à saisir un CAPTCHA en réponse à [AssociateSoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AssociateSoftwareToken.html)des demandes d'[VerifySoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifySoftwareToken.html)API effectuées par votre groupe d'utilisateurs en arrière-plan. Pour créer une règle comportant une action CAPTCHA et n'affectant pas le TOTP dans les pages de connexion gérées, excluez les valeurs d'`x-amzn-cognito-operation-name`en-tête de `AssociateSoftwareToken` et de l'action CAPTCHA `VerifySoftwareToken` de votre règle.

La capture d'écran suivante montre un exemple de AWS WAF règle qui applique une action CAPTCHA à toutes les demandes dont la valeur d'`x-amzn-cognito-operation-name``AssociateSoftwareToken`en-tête n'est pas ou. `VerifySoftwareToken`

![\[Capture d'écran d'une AWS WAF règle qui applique une action CAPTCHA à toutes les demandes dont la valeur d'x-amzn-cognito-operation-nameAssociateSoftwareTokenen-tête n'est pas ou. VerifySoftwareToken\]](http://docs.aws.amazon.com/fr_fr/cognito/latest/developerguide/images/cup-WAF-rule-TOTP.png)


Pour plus d'informations sur AWS WAF le Web ACLs et Amazon Cognito, consultez. [Associer une ACL AWS WAF Web à un groupe d'utilisateurs](user-pool-waf.md)

# Sécurité avancée avec protection contre les menaces
<a name="cognito-user-pool-settings-threat-protection"></a>

Après avoir créé votre groupe d'utilisateurs, vous avez accès à la **protection contre les menaces** dans le menu de navigation de la console Amazon Cognito. Vous pouvez activer les fonctionnalités de protection contre les menaces et personnaliser les actions entreprises en réponse aux différents risques. Ou vous pouvez utiliser le mode audit pour collecter des métriques sur les risques détectés sans qu’une atténuation de sécurité ne soit déclenchée. En mode audit, la protection contre les menaces publie des statistiques sur Amazon CloudWatch. Vous pouvez consulter les statistiques une fois qu'Amazon Cognito a généré son premier événement. Consultez [Afficher les indicateurs de protection contre les menaces](metrics-for-cognito-user-pools.md#user-pool-settings-viewing-threat-protection-metrics).

La protection contre les menaces, anciennement appelée *fonctionnalités de sécurité avancées*, est un ensemble d'outils de surveillance des activités indésirables dans votre groupe d'utilisateurs et d'outils de configuration permettant de mettre fin automatiquement aux activités potentiellement malveillantes. La protection contre les menaces propose différentes options de configuration pour les opérations d'authentification standard et personnalisées. Par exemple, vous souhaiterez peut-être envoyer une notification à un utilisateur dont l'authentification personnalisée est suspecte, lorsque vous avez défini des facteurs de sécurité supplémentaires, mais que vous bloquez un utilisateur présentant le même niveau de risque grâce à une authentification de base par nom d'utilisateur/mot de passe.

La protection contre les menaces est disponible dans le plan de fonctionnalités Plus. Pour de plus amples informations, veuillez consulter [Plans de fonctionnalités du pool d'utilisateurs](cognito-sign-in-feature-plans.md).

Les options de groupe d'utilisateurs suivantes sont les composantes de la protection contre les menaces.

**Informations d’identification compromises**  
Les utilisateurs réutilisent les mots de passe de plusieurs comptes utilisateurs. La fonctionnalité des informations d’identification compromises d’Amazon Cognito compile les données issues de fuites publiques de noms d’utilisateur et de mots de passe et compare les informations d’identification de vos utilisateurs à des listes d’informations d’identification divulguées. La détection des informations d’identification compromises permet également de vérifier les mots de passe les plus courants. Vous pouvez vérifier la présence d'informations d'identification compromises dans les flux d'authentification username-and-password standard des groupes d'utilisateurs. Amazon Cognito ne détecte pas les informations d'identification compromises dans le cadre du mot de passe à distance sécurisé (SRP) ou de l'authentification personnalisée.  
Vous pouvez choisir les actions de l’utilisateur qui invitent à vérifier la présence d’informations d’identification compromises et l’action que vous souhaitez qu’Amazon Cognito entreprenne en réponse. Pour les événements de connexion, d’inscription et de changement de mot de passe, Amazon Cognito peut **Bloquer la connexion** ou **Autoriser la connexion**. Dans les deux cas, Amazon Cognito génère un journal d'activité utilisateur dans lequel vous pouvez trouver plus d'informations sur l'événement.  
**En savoir plus**  
[Travailler avec la détection des informations d'identification compromises](cognito-user-pool-settings-compromised-credentials.md)

**Authentification adaptative**  
Amazon Cognito peut consulter les informations de localisation et d’appareil issues des demandes de connexion de vos utilisateurs et appliquer une réponse automatique pour protéger les comptes utilisateurs de votre groupe d’utilisateurs contre toute activité suspecte. Vous pouvez surveiller l'activité des utilisateurs et automatiser les réponses aux niveaux de risque détectés dans le nom d'utilisateur-mot de passe et le SRP, ainsi que l'authentification personnalisée.  
Lorsque vous activez la protection contre les menaces, Amazon Cognito attribue un score de risque à l'activité des utilisateurs. Vous pouvez attribuer une réponse automatique aux activités suspectes : vous pouvez **Demander l’authentification MFA**, **Bloquer la connexion** ou simplement journaliser les détails de l’activité et le score de risque. Vous pouvez également envoyer automatiquement des e-mails pour informer votre utilisateur de l’activité suspecte afin qu’il puisse réinitialiser son mot de passe ou prendre d’autres mesures autonomes.  
**En savoir plus**  
[Utilisation de l'authentification adaptative](cognito-user-pool-settings-adaptive-authentication.md)

**Liste d'adresses IP autorisées et listes de refus**  
Avec la protection contre les menaces Amazon Cognito en mode **fonction complète**, vous pouvez créer des adresses IP, **toujours bloquer et toujours** **autoriser** les exceptions. Une session à partir d’une adresse IP figurant dans la liste d’exceptions **Always block** (Toujours bloquer) ne se voit pas attribuer de niveau de risque par authentification adaptative et ne peut pas se connecter à votre groupe d’utilisateurs.  

**Ce qu'il faut savoir sur les listes d'adresses IP autorisées et bloquées**
+ Vous devez exprimer **Always block** et **Always allow** au format CIDR`192.0.2.0/24`, par exemple un masque 24 bits ou `192.0.2.252/32` une adresse IP unique.
+  Les appareils dont les adresses IP se situent dans une plage d'adresses IP **toujours bloquées** ne peuvent pas s'inscrire ou se connecter à l'aide d'applications de connexion gérées ou basées sur le SDK, mais ils peuvent se connecter via un tiers. IdPs 
+ Les listes « **Toujours autoriser** » et « **Toujours bloquer** » n'ont aucune incidence sur l'actualisation des jetons.
+ Amazon Cognito n'applique pas de règles MFA d'authentification adaptative aux appareils appartenant à une plage d'adresses IP **Always Allow, mais applique des règles relatives aux** informations d'identification compromises.

**Exportation du journal**  
La protection contre les menaces enregistre les détails détaillés des demandes d'authentification des utilisateurs adressées à votre groupe d'utilisateurs. Ces journaux contiennent des évaluations des menaces, des informations sur les utilisateurs et des métadonnées de session telles que l'emplacement et l'appareil. Vous pouvez créer des archives externes de ces journaux à des fins de conservation et d'analyse. Les groupes d'utilisateurs d'Amazon Cognito exportent les journaux de protection contre les menaces vers Amazon S3, CloudWatch Logs et Amazon Data Firehose. Pour de plus amples informations, veuillez consulter [Afficher et exporter l'historique des événements utilisateur](cognito-user-pool-settings-adaptive-authentication.md#user-pool-settings-adaptive-authentication-event-user-history).  
**En savoir plus**  
[Exportation des journaux d’activité des utilisateurs pour la protection contre les menaces](exporting-quotas-and-usage.md#exporting-quotas-and-usage-user-activity)

**Topics**
+ [Considérations et limites relatives à la protection contre les menaces](#cognito-user-pool-threat-protection-considerations)
+ [Activer la protection contre les menaces dans les groupes d'utilisateurs](#cognito-user-pool-threat-protection-activating)
+ [Concepts d'application de la protection contre](#cognito-user-pool-settings-threat-protection-threat-protection-enforcement)
+ [Protection contre les menaces pour l'authentification standard et l'authentification personnalisée](#cognito-user-pool-settings-threat-protection-threat-protection-types)
+ [Prérequis en matière de protection contre les menaces](#cognito-user-pool-threat-protection-prerequisites)
+ [Configuration de la protection contre les menaces](#cognito-user-pool-settings-configure-threat-protection)
+ [Travailler avec la détection des informations d'identification compromises](cognito-user-pool-settings-compromised-credentials.md)
+ [Utilisation de l'authentification adaptative](cognito-user-pool-settings-adaptive-authentication.md)
+ [Collecte de données pour la protection contre les menaces dans les applications](user-pool-settings-viewing-threat-protection-app.md)

## Considérations et limites relatives à la protection contre les menaces
<a name="cognito-user-pool-threat-protection-considerations"></a>

**Les options de protection contre les menaces diffèrent selon les flux d'authentification**  
Amazon Cognito prend en charge à la fois l'authentification adaptative et la détection des informations d'identification compromises avec les flux d'authentification et. `USER_PASSWORD_AUTH` `ADMIN_USER_PASSWORD_AUTH` Vous ne pouvez activer que l'authentification adaptative pour`USER_SRP_AUTH`. Vous ne pouvez pas utiliser la protection contre les menaces avec la connexion fédérée.

**Bloquez toujours les quotas de IPs contribution aux demandes**  
Les demandes bloquées à partir des adresses IP figurant dans une liste d’exceptions **Always block** (Toujours bloquer) dans votre groupe d’utilisateurs contribuent aux [quotas de taux de demande](https://docs.aws.amazon.com/cognito/latest/developerguide/limits.html#category_operations) pour vos groupes d’utilisateurs.

**La protection contre les menaces n'applique pas de limites de taux**  
Certains trafics malveillants se caractérisent par un volume élevé de requêtes, comme les attaques par déni de service (DDoS) distribué. Les évaluations de risque qu'Amazon Cognito applique au trafic entrant sont établies par demande et ne tiennent pas compte du volume de demandes. Les demandes individuelles dans le cadre d'un événement à volume élevé peuvent recevoir un score de risque et une réponse automatique pour des raisons liées à la couche applicative qui ne sont pas liées à leur rôle dans une attaque volumétrique. Pour mettre en œuvre des défenses contre les attaques volumétriques dans vos groupes d'utilisateurs, ajoutez le AWS WAF Web ACLs. Pour de plus amples informations, veuillez consulter [Associer une ACL AWS WAF Web à un groupe d'utilisateurs](user-pool-waf.md).

**La protection contre les menaces n'affecte pas les demandes M2M**  
Les autorisations d'identification des clients sont destinées à une autorisation machine-to-machine (M2M) sans connexion aux comptes utilisateurs. La protection contre les menaces surveille uniquement les comptes utilisateurs et les mots de passe de votre groupe d'utilisateurs. Pour implémenter des fonctionnalités de sécurité dans votre activité M2M, considérez les capacités de surveillance AWS WAF des taux de demandes et du contenu. Pour de plus amples informations, veuillez consulter [Associer une ACL AWS WAF Web à un groupe d'utilisateurs](user-pool-waf.md).

## Activer la protection contre les menaces dans les groupes d'utilisateurs
<a name="cognito-user-pool-threat-protection-activating"></a>

------
#### [ Amazon Cognito user pools console ]

**Pour activer la protection contre les menaces pour un groupe d'utilisateurs**

1. Accédez à la [console Amazon Cognito](https://console.aws.amazon.com/cognito/home). Si vous y êtes invité, entrez vos AWS informations d'identification.

1. Choisissez **Groupes d’utilisateurs**.

1. Choisissez un groupe d’utilisateurs existant dans la liste ou [créez-en un](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html).

1. Si ce n'est pas déjà fait, activez le plan de fonctionnalités Plus dans le menu **Paramètres**.

1. Choisissez le menu **Protection contre les menaces**, puis sélectionnez **Activer**.

1. Sélectionnez **Enregistrer les modifications**.

------
#### [ API ]

Définissez votre plan de fonctionnalités sur Plus dans une demande d'[UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)API [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)ou d'API. L'exemple de corps de demande partiel suivant définit la protection contre les menaces en mode de fonctionnement complet. Pour un exemple de demande complet, consultez la section [Exemples](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#API_CreateUserPool_Examples).

```
"UserPoolAddOns": { 
      "AdvancedSecurityMode": "ENFORCED"
   }
```

------

La protection contre les menaces est le terme collectif désignant les fonctionnalités qui surveillent les opérations des utilisateurs pour détecter les signes de prise de contrôle de compte et répondent automatiquement à la sécurisation des comptes utilisateurs concernés. Vous pouvez appliquer des paramètres de protection contre les menaces aux utilisateurs lorsqu'ils se connectent à l'aide de flux d'authentification standard et personnalisés.

La protection contre les menaces [génère des journaux](cognito-user-pool-settings-adaptive-authentication.md#user-pool-settings-adaptive-authentication-event-user-history) détaillant la connexion, la déconnexion et les autres activités des utilisateurs. Vous pouvez exporter ces journaux vers un système tiers. Pour de plus amples informations, veuillez consulter [Afficher et exporter l'historique des événements utilisateur](cognito-user-pool-settings-adaptive-authentication.md#user-pool-settings-adaptive-authentication-event-user-history).

## Concepts d'application de la protection contre
<a name="cognito-user-pool-settings-threat-protection-threat-protection-enforcement"></a>

La protection contre les menaces commence par un mode d'*audit uniquement* dans lequel votre groupe d'utilisateurs surveille l'activité des utilisateurs, attribue des niveaux de risque et génère des journaux. Il est recommandé de l'exécuter en mode audit uniquement pendant deux semaines ou plus avant d'activer le mode fonction *complète*. Le mode multifonction inclut un ensemble de réactions automatiques en cas d'activité risquée détectée et de mots de passe compromis. Avec le mode audit uniquement, vous pouvez surveiller les évaluations des menaces effectuées par Amazon Cognito. Vous pouvez également [fournir des commentaires](cognito-user-pool-settings-adaptive-authentication.md#user-pool-settings-adaptive-authentication-feedback) qui entraînent la fonctionnalité sur les faux positifs et négatifs.

Vous pouvez configurer l'application de la protection contre les menaces au niveau du groupe d'utilisateurs afin de couvrir tous les clients d'applications du groupe d'utilisateurs, et au niveau de chaque client d'application. Les configurations de protection contre les menaces des clients de l'application remplacent la configuration du groupe d'utilisateurs. Pour configurer la protection contre les menaces pour un client d'application, accédez aux paramètres du client d'application depuis le menu **Clients d'applications** de votre groupe d'utilisateurs dans la console Amazon Cognito. Vous pouvez y **utiliser les paramètres au niveau du client** et configurer l'application exclusivement pour le client de l'application.

En outre, vous pouvez configurer la protection contre les menaces séparément pour les types d'authentification standard et personnalisés.

## Protection contre les menaces pour l'authentification standard et l'authentification personnalisée
<a name="cognito-user-pool-settings-threat-protection-threat-protection-types"></a>

La manière dont vous pouvez configurer la protection contre les menaces dépend du type d'authentification que vous effectuez dans votre groupe d'utilisateurs et dans vos clients d'applications. Chacun des types d'authentification suivants peut avoir son propre mode d'application et ses propres réponses automatisées.

**Authentification standard**  
*L'authentification standard comprend* la connexion, la déconnexion et la gestion des mots de passe des utilisateurs à l'aide de flux de noms d'utilisateur-mot de passe et de connexion gérée. La protection contre les menaces Amazon Cognito surveille les opérations à la recherche d'indicateurs de risque lorsqu'ils se connectent à l'aide d'une connexion gérée ou utilisent les paramètres d'API `AuthFlow` suivants :    
**[InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-AuthFlow)**  
`USER_PASSWORD_AUTH`,`USER_SRP_AUTH`. La fonctionnalité d'identification compromise n'a pas accès aux mots de passe `USER_SRP_AUTH` lors de la connexion et ne surveille ni ne réagit aux événements liés à ce flux.  
**[AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#CognitoUserPools-AdminInitiateAuth-request-AuthFlow)**  
`ADMIN_USER_PASSWORD_AUTH`,`USER_SRP_AUTH`. La fonctionnalité d'identification compromise n'a pas accès aux mots de passe `USER_SRP_AUTH` lors de la connexion et ne surveille ni ne réagit aux événements liés à ce flux.
Vous pouvez définir le **mode d'application** pour l'authentification standard sur **Audit uniquement** ou sur **Fonction complète**. Pour désactiver la surveillance des menaces pour l'authentification standard, définissez la protection contre les menaces sur **Aucune application**.

**Authentification personnalisée**  
*L'authentification personnalisée* consiste à se connecter par l'utilisateur à l'aide de déclencheurs [Lambda de défi personnalisés](user-pool-lambda-challenge.md). Vous ne pouvez pas effectuer d'authentification personnalisée dans la connexion gérée. La protection contre les menaces Amazon Cognito surveille les opérations à la recherche d'indicateurs de risque lorsqu'elles se connectent avec le `AuthFlow` paramètre `CUSTOM_AUTH` d'`InitiateAuth`API et. `AdminInitiateAuth`  
Vous pouvez définir le **mode d'application** pour l'authentification personnalisée sur **Audit uniquement**, **Fonction complète** ou **Aucune application**. L'option **Aucune application** désactive la surveillance des menaces pour une authentification personnalisée sans affecter les autres fonctionnalités de protection contre les menaces.

## Prérequis en matière de protection contre les menaces
<a name="cognito-user-pool-threat-protection-prerequisites"></a>

Avant de commencer, vous avez besoin de ce qui suit :
+ Un groupe d’utilisateurs avec un client d’appli. Pour de plus amples informations, veuillez consulter [Démarrage avec les groupes d'utilisateurs](getting-started-user-pools.md).
+ Définissez l’authentification multifacteur (MFA) comme **Optional (Facultative)** dans la console Amazon Cognito pour utiliser la fonction d’authentification adaptative basée sur le risque. Pour de plus amples informations, veuillez consulter [Ajout de l’authentification MFA à un groupe d’utilisateurs](user-pool-settings-mfa.md).
+ Si vous utilisez des e-mails pour les notifications, accédez à la [console Amazon SES](https://console.aws.amazon.com/ses/home) pour configurer et vérifier une adresse e-mail ou un domaine à utiliser avec vos e-mails de notification. Pour plus d’informations sur Amazon SES, consultez [Vérification des identités dans Amazon SES](https://docs.aws.amazon.com/ses/latest/dg/verify-addresses-and-domains.html).

## Configuration de la protection contre les menaces
<a name="cognito-user-pool-settings-configure-threat-protection"></a>

Suivez ces instructions pour configurer la protection des groupes d'utilisateurs contre les menaces.

**Note**  
Pour configurer une configuration de protection contre les menaces différente pour un client d'application dans la console des groupes d'utilisateurs Amazon Cognito, sélectionnez le client d'application dans le menu **Clients d'applications**, puis choisissez **Utiliser les paramètres au niveau du client**.

------
#### [ AWS Management Console ]

**Pour configurer la protection contre les menaces pour un groupe d'utilisateurs**

1. Accédez à la [console Amazon Cognito](https://console.aws.amazon.com/cognito/home). Si vous y êtes invité, entrez vos AWS informations d'identification.

1. Choisissez **Groupes d’utilisateurs**.

1. Choisissez un groupe d’utilisateurs existant dans la liste ou [créez-en un](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html).

1. Choisissez le menu **Protection contre les menaces**, puis sélectionnez **Activer**.

1. Choisissez la méthode de protection contre les menaces que vous souhaitez configurer : **authentification standard et personnalisée**. Vous pouvez définir différents modes d'application pour l'authentification personnalisée et standard, mais ils partagent la même configuration des réponses automatisées en mode **Fonction complète**.

1. Tâche de sélection **Modifier**.

1. Choisissez un **mode d'exécution**. Pour commencer à réagir immédiatement aux risques détectés, sélectionnez **Fonction complète** et configurez les réponses automatisées pour les informations d'identification compromises et l'authentification adaptative. Pour recueillir des informations dans les journaux et les connexions au niveau utilisateur CloudWatch, sélectionnez **Audit uniquement**.

   Nous vous recommandons de maintenir la protection contre les menaces en mode audit pendant deux semaines avant d'activer des actions. Pendant ce temps, Amazon Cognito peut connaître les habitudes d'utilisation des utilisateurs de votre application et vous pouvez fournir des commentaires sur les événements pour ajuster les réponses.

1. Si vous avez sélectionné **Audit uniquement**, choisissez **Enregistrer les modifications**. Si vous avez sélectionné **Fonction complète** :

   1. Indiquez que vous allez exécuter une action **personnalisée** ou utiliser **Paramètres Cognito par défaut** pour traiter les **informations d’identification compromises**. **Paramètres Cognito par défaut** :

      1. Détecter les informations d’identification compromises au moment de la **connexion**, de l’**inscription** et de la **modification du mot de passe**.

      1. Traiter les informations d’identification compromises avec l’action **Bloquer la connexion**.

   1. Si vous avez sélectionné des actions **personnalisées** pour **Compromised credentials** (Informations d’identification compromises), choisissez les actions du groupe d’utilisateurs qu’Amazon Cognito utilisera pour la **détection d’événements** et les **réponses aux informations d’identification compromises** que vous voulez qu’Amazon Cognito apporte. Vous pouvez **bloquer la connexion** ou **autoriser la connexion** avec des informations d’identification compromises.

   1. Choisissez comment répondre aux tentatives de connexion malveillantes sous **Authentification adaptative**. Indiquez si vous exécuterez une **action personnalisée** ou utiliserez **Paramètres Cognito par défaut** pour traiter une activité malveillante présumée. Lorsque vous sélectionnez **Paramètres Cognito par défaut**, Amazon Cognito bloque la connexion à tous les niveaux de risque et ne prévient pas l’utilisateur.

   1. Si vous avez sélectionné des actions **Personnalisées** pour **Authentification adaptative**, choisissez les actions de **Traitement automatique des risques** d’Amazon Cognito en réponse aux risques détectés en fonction du niveau de sévérité. Lorsque vous attribuez une réponse à un niveau de risque, vous ne pouvez pas attribuer une réponse moins restrictive à un niveau de risque plus élevé. Vous pouvez attribuer les réponses suivantes aux niveaux de risque :

      1. **Autoriser la connexion** - aucune action préventive n’est exécutée.

      1. **Authentification MFA facultative** - si l’utilisateur a configuré MFA, Amazon Cognito demandera toujours à l’utilisateur de fournir un SMS supplémentaire ou un mot de passe unique à durée limitée (TOTP) lorsqu’il se connecte. Si l’utilisateur n’a pas configuré MFA, il peut continuer à se connecter normalement.

      1. **Demander l’authentification MFA** - si l’utilisateur a configuré MFA, Amazon Cognito demandera toujours à l’utilisateur de fournir un SMS supplémentaire ou un mot de passe unique à durée limitée (TOTP). Si l’utilisateur n’a pas configuré MFA, Amazon Cognito l’invite à configurer MFA. Avant d’exiger automatiquement l’authentification MFA pour vos utilisateurs, configurez un mécanisme dans votre appli pour capturer les numéros de téléphone pour l’authentification MFA par SMS, ou pour enregistrer les applications d’authentification pour l’authentification MFA par mot de passe unique à durée limitée (TOTP).

      1. **Bloquer la connexion** : empêche l’utilisateur de se connecter.

      1. **Avertir l’utilisateur** : envoie un courriel à l’utilisateur contenant des informations sur le risque détecté par Amazon Cognito et la réponse que vous avez choisie. Vous pouvez personnaliser des modèles d’e-mail pour les messages que vous envoyez.

1. Si vous avez choisi **Notify user** (Avertir l’utilisateur) à l’étape précédente, vous pouvez personnaliser vos paramètres de distribution d’e-mails et vos modèles d’e-mail pour l’authentification adaptative.

   1. Sous **Email configuration** (Configuration d’e-mail), choisissez les paramètres **SES Region** (Région SES), **FROM email address** (Adresse e-mail d’envoi), **FROM sender name** (Nom de l’expéditeur) et **REPLY-TO email address** (Adresse e-mail de réponse) que vous souhaitez utiliser avec l’authentification adaptative. Pour plus d’informations sur l’intégration des messages électroniques de votre groupe d’utilisateurs à Amazon Simple Email Service, consultez [Paramètres d’e-mail pour les groupes d’utilisateurs Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-email.html).  
![\[Historique des événements utilisateur\]](http://docs.aws.amazon.com/fr_fr/cognito/latest/developerguide/images/cup-advanced-security-ses-notification.png)

   1. Développez **Email templates** (Modèles d’e-mail) pour personnaliser les notifications d’authentification adaptative avec les versions HTML et en texte brut des e-mails. Pour en savoir plus sur les modèles d’e-mail, consultez [Modèles de messages](cognito-user-pool-settings-message-customizations.md#cognito-user-pool-settings-message-templates).

1. Développez les **exceptions d'adresses IP** pour créer une liste **toujours autorisée** ou bloquée ou des plages d' IPv6 adresses qui seront toujours autorisées IPv4 ou **bloquées**, quelle que soit l'évaluation des risques liés à la protection contre les menaces. Indiquez les plages d’adresses IP en [notation CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation) (par exemple, 192.168.100.0/24).

1. Sélectionnez **Enregistrer les modifications**.

------
#### [ API (user pool) ]

Pour définir la configuration de protection contre les menaces pour un groupe d'utilisateurs, envoyez une demande d'[SetRiskConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetRiskConfiguration.html)API qui inclut un `UserPoolId` paramètre, mais pas de `ClientId` paramètre. Voici un exemple de corps de demande pour un groupe d'utilisateurs. Cette configuration des risques prend une série croissante d'actions en fonction de la gravité du risque et avertit les utilisateurs à tous les niveaux de risque. Il applique un bloc d'informations d'identification compromises aux opérations d'inscription.

Pour appliquer cette configuration, vous devez la `AdvancedSecurityMode` définir `ENFORCED` dans une demande séparée [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)ou dans une demande [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)d'API. Pour plus d'informations sur les modèles d'espaces réservés, comme `{username}` dans cet exemple, consultez[Configuration des messages MFA, d'authentification, de vérification et d'invitation](cognito-user-pool-settings-message-customizations.md).

```
{
   "AccountTakeoverRiskConfiguration": { 
      "Actions": { 
         "HighAction": { 
            "EventAction": "MFA_REQUIRED",
            "Notify": true
         },
         "LowAction": { 
            "EventAction": "NO_ACTION",
            "Notify": true
         },
         "MediumAction": { 
            "EventAction": "MFA_IF_CONFIGURED",
            "Notify": true
         }
      },
      "NotifyConfiguration": { 
         "BlockEmail": { 
            "Subject": "You have been blocked for suspicious activity",
            "TextBody": "We blocked {username} at {login-time} from {ip-address}."
         },
         "From": "admin@example.com",
         "MfaEmail": { 
            "Subject": "Suspicious activity detected, MFA required",
            "TextBody": "Unexpected sign-in from {username} on device {device-name}. You must use MFA."
         },
         "NoActionEmail": { 
            "Subject": "Suspicious activity detected, secure your user account",
            "TextBody": "We noticed suspicious sign-in activity by {username} from {city}, {country} at {login-time}. If this was not you, reset your password."
         },
         "ReplyTo": "admin@example.com",
         "SourceArn": "arn:aws:ses:us-west-2:123456789012:identity/admin@example.com"
      }
   },
   "CompromisedCredentialsRiskConfiguration": { 
      "Actions": { 
         "EventAction": "BLOCK"
      },
      "EventFilter": [ "SIGN_UP" ]
   },
   "RiskExceptionConfiguration": { 
      "BlockedIPRangeList": [ "192.0.2.0/24","198.51.100.0/24" ],
      "SkippedIPRangeList": [ "203.0.113.0/24" ]
   },
   "UserPoolId": "us-west-2_EXAMPLE"
}
```

------
#### [ API (app client) ]

Pour définir la configuration de protection contre les menaces pour un client d'application, envoyez une demande d'[SetRiskConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetRiskConfiguration.html)API comprenant un `UserPoolId` paramètre et un `ClientId` paramètre. Voici un exemple de corps de demande pour un client d'application. Cette configuration des risques est plus sévère que la configuration du groupe d'utilisateurs, bloquant les entrées à haut risque. Il applique également des blocs d'identifiants compromis aux opérations d'inscription, de connexion et de réinitialisation du mot de passe.

Pour appliquer cette configuration, vous devez la `AdvancedSecurityMode` définir `ENFORCED` dans une demande séparée [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)ou dans une demande [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)d'API. Pour plus d'informations sur les modèles d'espaces réservés, comme `{username}` dans cet exemple, consultez[Configuration des messages MFA, d'authentification, de vérification et d'invitation](cognito-user-pool-settings-message-customizations.md).

```
{
   "AccountTakeoverRiskConfiguration": { 
      "Actions": { 
         "HighAction": { 
            "EventAction": "BLOCK",
            "Notify": true
         },
         "LowAction": { 
            "EventAction": "NO_ACTION",
            "Notify": true
         },
         "MediumAction": { 
            "EventAction": "MFA_REQUIRED",
            "Notify": true
         }
      },
      "NotifyConfiguration": { 
         "BlockEmail": { 
            "Subject": "You have been blocked for suspicious activity",
            "TextBody": "We blocked {username} at {login-time} from {ip-address}."
         },
         "From": "admin@example.com",
         "MfaEmail": { 
            "Subject": "Suspicious activity detected, MFA required",
            "TextBody": "Unexpected sign-in from {username} on device {device-name}. You must use MFA."
         },
         "NoActionEmail": { 
            "Subject": "Suspicious activity detected, secure your user account",
            "TextBody": "We noticed suspicious sign-in activity by {username} from {city}, {country} at {login-time}. If this was not you, reset your password."
         },
         "ReplyTo": "admin@example.com",
         "SourceArn": "arn:aws:ses:us-west-2:123456789012:identity/admin@example.com"
      }
   },
   "ClientId": "1example23456789",
   "CompromisedCredentialsRiskConfiguration": { 
      "Actions": { 
         "EventAction": "BLOCK"
      },
      "EventFilter": [ "SIGN_UP", "SIGN_IN", "PASSWORD_CHANGE" ]
   },
   "RiskExceptionConfiguration": { 
      "BlockedIPRangeList": [ "192.0.2.1/32","192.0.2.2/32" ],
      "SkippedIPRangeList": [ "192.0.2.3/32","192.0.2.4/32" ]
   },
   "UserPoolId": "us-west-2_EXAMPLE"
}
```

------

# Travailler avec la détection des informations d'identification compromises
<a name="cognito-user-pool-settings-compromised-credentials"></a>

Amazon Cognito peut détecter si le nom d’utilisateur et le mot de passe d’un utilisateur ont été compromis ailleurs. Cela peut se produire lorsque des utilisateurs réutilisent des informations d’identification sur plusieurs sites, ou quand ils utilisent des mots de passe non sécurisés. Amazon Cognito contrôle [les utilisateurs locaux](cognito-terms.md#terms-localuser) qui se connectent à l'aide d'un nom d'utilisateur et d'un mot de passe, d'une connexion gérée et de l'API Amazon Cognito.

Dans le menu **Protection contre les menaces** de la console Amazon Cognito, vous pouvez configurer les informations d'identification **compromises.** Configurez **Event detection** (Détection d’événements) pour choisir les événements utilisateur que vous souhaitez surveiller à la recherche d’informations d’identification compromises. Configurez **Compromised credentials responses** (Réponses d’informations d’identification compromises) pour autoriser ou bloquer l’utilisateur si des informations d’identification compromises sont détectées. Amazon Cognito peut vérifier les informations d’identification compromises lors des connexions, des inscriptions et des modifications de mot de passe.

Lorsque vous choisissez **Autoriser la connexion**, vous pouvez consulter Amazon CloudWatch Logs pour suivre les évaluations effectuées par Amazon Cognito sur les événements des utilisateurs. Pour de plus amples informations, veuillez consulter [Afficher les indicateurs de protection contre les menaces](metrics-for-cognito-user-pools.md#user-pool-settings-viewing-threat-protection-metrics). Lorsque vous choisissez **Block sign-in** (Bloquer la connexion), Amazon Cognito empêche la connexion des utilisateurs qui utilisent des informations d’identification compromises. Quand Amazon Cognito bloque la connexion d’un utilisateur, il définit le paramètre [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UserType.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UserType.html) de l’utilisateur sur `RESET_REQUIRED`. Un utilisateur doté du statut `RESET_REQUIRED` doit modifier son mot de passe avant de pouvoir se reconnecter.

Les informations d'identification compromises peuvent vérifier les mots de passe pour les activités suivantes de l'utilisateur.

**Inscription**  
Votre groupe d'utilisateurs vérifie les mots de passe transmis par les utilisateurs lors de l'[SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)opération et depuis la page d'inscription de la connexion gérée pour détecter tout indicateur de compromission.

**Connexion**  
Votre groupe d'utilisateurs vérifie les mots de passe que les utilisateurs soumettent lors de la connexion par mot de passe pour détecter des indicateurs de compromission. Amazon Cognito peut examiner le `ADMIN_USER_PASSWORD_AUTH` flux entrant [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html), le `USER_PASSWORD_AUTH` flux entrant et l'`PASSWORD`option du `USER_AUTH` flux dans les deux cas. [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)  
Actuellement, Amazon Cognito ne vérifie pas les informations d’identification compromises pour les opérations de connexion avec un flux SRP (Secure Remote Password). SRP envoie une preuve de mot de passe hachée lors de la connexion. Amazon Cognito n’a pas accès aux mots de passe en interne. Il peut donc uniquement évaluer un mot de passe que votre client lui transmet en texte clair.

**Réinitialisation du mot de passe**  
Votre groupe d'utilisateurs vérifie la présence d'indicateurs de compromission dans les opérations de définition de nouveaux mots de passe utilisateur à l'aide de l'opération de réinitialisation des mots de passe en [ConfirmForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmForgotPassword.html)libre-service. Le code requis pour cette opération est généré par [ForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html)et [AdminResetUserPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminResetUserPassword.html).  
Les informations d'identification compromises ne vérifient pas les mots de passe temporaires ou permanents définis par l'administrateur avec. [AdminSetUserPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserPassword.html) Cependant, avec les mots de passe temporaires, votre groupe d'utilisateurs vérifie les mots de passe à partir des réponses au `NEW_PASSWORD_REQUIRED` défi dans [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)et [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html).

Pour ajouter la protection contre les informations d’identification compromises à votre groupe d’utilisateurs, consultez [Sécurité avancée avec protection contre les menaces](cognito-user-pool-settings-threat-protection.md).

# Utilisation de l'authentification adaptative
<a name="cognito-user-pool-settings-adaptive-authentication"></a>

Avec l’authentification adaptative, vous pouvez configurer votre groupe d’utilisateurs pour bloquer les connexions suspectes ou ajouter un deuxième facteur d’authentification en réponse à un niveau de risque accru. Pour chaque tentative de connexion, Amazon Cognito génère un score de risque mesurant la probabilité que la demande de connexion provienne d’une source compromise. Ce score de risque est basé sur les facteurs relatifs à l'appareil et à l'utilisateur fournis par votre application, ainsi que sur d'autres facteurs qu'Amazon Cognito obtient à partir de la demande. Certains facteurs qui contribuent à l'évaluation des risques par Amazon Cognito sont l'adresse IP, l'agent utilisateur et la distance géographique par rapport aux autres tentatives de connexion. L’authentification adaptative peut activer ou exiger l’authentification multifactorielle (MFA) pour un utilisateur de votre groupe d’utilisateurs quand Amazon Cognito détecte un risque dans la session d’un utilisateur et que l’utilisateur n’a pas encore choisi de méthode MFA. Lorsque vous activez l’authentification MFA pour un utilisateur, celui-ci est toujours invité à fournir ou à configurer un second facteur lors de l’authentification, quelle que soit la manière dont vous avez configuré l’authentification adaptative. Du point de vue de l’utilisateur, votre application lui propose de l’aider à configurer l’authentification MFA et Amazon Cognito l’empêche éventuellement de se reconnecter tant qu’il n’a pas configuré un facteur supplémentaire.

Amazon Cognito publie des statistiques concernant les tentatives de connexion, leurs niveaux de risque et les échecs rencontrés par Amazon. CloudWatch Pour de plus amples informations, veuillez consulter [Afficher les indicateurs de protection contre les menaces](metrics-for-cognito-user-pools.md#user-pool-settings-viewing-threat-protection-metrics).

Pour ajouter l’authentification adaptative à votre groupe d’utilisateurs, consultez [Sécurité avancée avec protection contre les menaces](cognito-user-pool-settings-threat-protection.md).

**Topics**
+ [Présentation de l’authentification adaptative](#security-cognito-user-pool-settings-adaptive-authentication-overview)
+ [Ajout de données de session et de périphérique utilisateur aux demandes d’API](#user-pool-settings-adaptive-authentication-device-fingerprint)
+ [Afficher et exporter l'historique des événements utilisateur](#user-pool-settings-adaptive-authentication-event-user-history)
+ [Fourniture de commentaires sur des événements](#user-pool-settings-adaptive-authentication-feedback)
+ [Envoi de messages de notification](#user-pool-settings-adaptive-authentication-messages)

## Présentation de l’authentification adaptative
<a name="security-cognito-user-pool-settings-adaptive-authentication-overview"></a>

Dans le menu **Protection contre les menaces** de la console Amazon Cognito, vous pouvez choisir les paramètres de l'authentification adaptative, notamment les mesures à prendre en fonction des différents niveaux de risque et la personnalisation des messages de notification destinés aux utilisateurs. Vous pouvez attribuer une configuration globale de protection contre les menaces à tous vos clients d'applications, mais appliquer une configuration au niveau du client à chaque client d'application.

L’authentification adaptative Amazon Cognito attribue l’un des niveaux de risque suivants à chaque session utilisateur : **élevé**, **moyen**, **faible** ou **aucun risque**.

Examinez attentivement les options qui s’offrent à vous lorsque vous modifiez **Enforcement method** (Méthode d’application) en remplaçant **Audit-only** (Audit uniquement) par **Full-function** (Fonction complète). Les réponses automatiques que vous appliquez aux niveaux de risque influent sur le niveau de risque qu’Amazon Cognito affecte aux sessions d’utilisateur suivantes présentant les mêmes caractéristiques. Par exemple, une fois que vous avez choisi de ne réaliser aucune action ou de **Allow** (Autoriser) les sessions d’utilisateur qu’Amazon Cognito évalue initialement comme présentant un risque élevé, Amazon Cognito considère que les sessions similaires présentent un risque moindre.


**Pour chaque niveau de risque, vous pouvez choisir parmi les options suivantes :**  

|  Option  |  Action  | 
| --- | --- | 
| Allow | Les utilisateurs peuvent se connecter sans facteur supplémentaire. | 
| Authentification MFA facultative | Les utilisateurs qui disposent d’un second facteur configuré doivent répondre à la demande de vérification du second facteur pour se connecter. Un numéro de téléphone pour SMS et un jeton logiciel TOTP sont les seconds facteurs disponibles. Les utilisateurs sans deuxième facteur configuré peuvent se connecter avec un seul ensemble d’informations d’identification. | 
| Demander l’authentification MFA | Les utilisateurs qui disposent d’un second facteur configuré doivent répondre à la demande de vérification du second facteur pour se connecter. Amazon Cognito bloque la connexion des utilisateurs qui ne disposent pas d’un second facteur configuré. | 
| Bloc | Amazon Cognito bloque toutes les tentatives de connexion au niveau de risque désigné. | 

**Note**  
Vous n’êtes pas tenu de vérifier les numéros de téléphone à utiliser pour l’envoi de SMS comme second facteur d’authentification.

## Ajout de données de session et de périphérique utilisateur aux demandes d’API
<a name="user-pool-settings-adaptive-authentication-device-fingerprint"></a>

Vous pouvez collecter et transmettre des informations sur la session de votre utilisateur à la protection contre les menaces Amazon Cognito lorsque vous utilisez l'API pour l'inscrire, le connecter et réinitialiser son mot de passe. Ces informations incluent l’adresse IP de votre utilisateur et un identifiant de périphérique unique.

Vous disposez peut-être d’un périphérique réseau intermédiaire entre vos utilisateurs et Amazon Cognito, comme un service proxy ou un serveur d’applications. Vous pouvez collecter les données contextuelles des utilisateurs et les transmettre à Amazon Cognito, afin que l’authentification adaptative calcule votre risque en fonction des caractéristiques du point de terminaison utilisateur, au lieu de votre serveur ou de votre proxy. Si votre application côté client appelle directement les opérations de l’API Amazon Cognito, l’authentification adaptative enregistre automatiquement l’adresse IP source. Toutefois, elle n’enregistre pas d’autres informations de périphérique, telles que l’`user-agent`, sauf si vous collectez également une empreinte digitale de périphérique.

Générez ces données à l'aide de la bibliothèque de collecte de données contextuelles Amazon Cognito et soumettez-les à la protection contre les menaces Amazon Cognito avec [ContextData](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ContextDataType.html)les paramètres et. [UserContextData](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UserContextDataType.html) La bibliothèque de collecte de données contextuelles est incluse dans le AWS SDKs. Pour de plus amples informations, veuillez consulter [Intégration de l'authentification et de l'autorisation Amazon Cognito avec des applications Web et mobiles](cognito-integrate-apps.md). Vous pouvez le soumettre `ContextData` si vous avez le plan de fonctionnalités Plus. Pour de plus amples informations, veuillez consulter [Configuration de la protection contre les menaces](cognito-user-pool-settings-threat-protection.md#cognito-user-pool-settings-configure-threat-protection).

Lorsque vous appelez les opérations d’API authentifiées Amazon Cognito suivantes depuis votre serveur d’applications, transmettez l’adresse IP du périphérique utilisateur dans le paramètre `ContextData`. En outre, transmettez le nom de votre serveur, le chemin d’accès du serveur et les données d’empreinte digitale du périphérique.
+ [AdminInitiateAuth ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)
+ [AdminRespondToAuthChallenge ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)

Lorsque vous appelez des opérations d'API non authentifiées d'Amazon Cognito, vous pouvez vous soumettre à la protection contre les menaces Amazon `UserContextData` Cognito. Ces données incluent une empreinte digitale de périphérique dans le paramètre `EncodedData`. Vous pouvez également soumettre un paramètre `IpAddress` dans `UserContextData` si les conditions suivantes sont remplies :
+ Votre groupe d'utilisateurs bénéficie du plan de fonctionnalités Plus. Pour de plus amples informations, veuillez consulter [Plans de fonctionnalités du pool d'utilisateurs](cognito-sign-in-feature-plans.md).
+ Votre client d’application possède un secret client. Pour de plus amples informations, veuillez consulter [Paramètres spécifiques à l'application avec les clients d'applications](user-pool-settings-client-apps.md).
+ Vous avez activé **Accept additional user context data** (Accepter des données contextuelles utilisateur supplémentaires) dans votre client d’application. Pour de plus amples informations, veuillez consulter [Acceptation de données contextuelles utilisateur supplémentaires (AWS Management Console)](#user-pool-settings-adaptive-authentication-accept-user-context-data).

Votre application peut renseigner le paramètre `UserContextData` avec les données d’empreinte digitale de périphérique codées et l’adresse IP du périphérique de l’utilisateur dans les opérations d’API non authentifiées Amazon Cognito suivantes.
+ [InitiateAuth ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)
+ [RespondToAuthChallenge ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)
+ [SignUp ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)
+ [ConfirmSignUp ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html)
+ [ForgotPassword ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html)
+ [ConfirmForgotPassword ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmForgotPassword.html)
+ [ResendConfirmationCode ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ResendConfirmationCode.html)

### Acceptation de données contextuelles utilisateur supplémentaires (AWS Management Console)
<a name="user-pool-settings-adaptive-authentication-accept-user-context-data"></a>

Votre groupe d’utilisateurs accepte une adresse IP dans un paramètre `UserContextData`, une fois que vous avez activé la fonction **Accept additional user context data** (Accepter des données contextuelles utilisateur supplémentaires). Vous n’avez pas besoin d’activer cette fonctionnalité si :
+ Vos utilisateurs ne se connectent qu'à l'aide d'opérations d'API authentifiées [AdminInitiateAuth ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html), telles que, et vous utilisez le `ContextData` paramètre.
+ Vous souhaitez uniquement que vos opérations d'API non authentifiées envoient une empreinte digitale de l'appareil, mais pas une adresse IP, à la protection contre les menaces Amazon Cognito.

Mettez à jour votre client d’application comme suit dans la console Amazon Cognito pour ajouter la prise en charge des données contextuelles utilisateur supplémentaires.

1. Connectez-vous à la [console Amazon Cognito](https://console.aws.amazon.com/cognito/home).

1. Dans le volet de navigation, choisissez **Manage your User groupes (Gérer vos groupes d’utilisateurs)**, puis choisissez le groupe d’utilisateurs que vous souhaitez modifier.

1. Choisissez le menu **App clients**.

1. Choisissez ou créez un client d'application. Pour plus d’informations, consultez [Configuration d’un client d’application pour groupe d’utilisateurs](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-app-idp-settings.html).

1. Choisissez **Edit** (Modifier) à partir du conteneur **App client information** (Informations sur le client d’application).

1. Dans **Advanced authentication settings** (Paramètres d’authentification avancée) pour votre client d’application, choisissez **Accept additional user context data** (Accepter des données contextuelles utilisateur supplémentaires).

1. Sélectionnez **Enregistrer les modifications**.

Pour configurer le client de votre application afin qu'il accepte les données contextuelles utilisateur dans l'API Amazon Cognito, définissez ce paramètre sur `EnablePropagateAdditionalUserContextData` `true` dans une demande [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html)or [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html). Pour plus d'informations sur l'utilisation de la protection contre les menaces dans votre application Web ou mobile, consultez[Collecte de données pour la protection contre les menaces dans les applications](user-pool-settings-viewing-threat-protection-app.md). Quand votre appli appelle Amazon Cognito à partir de votre serveur, collectez les données contextuelles utilisateur côté client. Voici un exemple d'utilisation de la méthode JavaScript `getData` SDK.

```
var EncodedData = AmazonCognitoAdvancedSecurityData.getData(username, userPoolId, clientId);
```

Lorsque vous concevez votre application pour utiliser l’authentification adaptative, nous vous recommandons d’intégrer le dernier kit SDK Amazon Cognito dans votre application. La dernière version du kit SDK collecte les informations d’empreinte digitale de l’appareil, telles que l’ID, le modèle et le fuseau horaire de celui-ci. Pour plus d'informations sur Amazon Cognito SDKs, consultez [Installer un SDK de groupe d'utilisateurs.](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-sdk-links.html) La protection contre les menaces Amazon Cognito enregistre et attribue un score de risque uniquement aux événements soumis par votre application dans le bon format. Si Amazon Cognito renvoie une réponse d'erreur, vérifiez que votre demande inclut un hachage secret valide et que le `IPaddress` paramètre est une adresse OR valide IPv4 . IPv6 

**Ressources `ContextData` et `UserContextData`**
+ AWS Amplify SDK pour Android : [GetUserContextData](https://github.com/aws-amplify/aws-sdk-android/blob/main/aws-android-sdk-cognitoidentityprovider/src/main/java/com/amazonaws/mobileconnectors/cognitoidentityprovider/CognitoUserPool.java#L626)
+ AWS Amplify SDK pour iOS : [userContextData](https://github.com/aws-amplify/aws-sdk-ios/blob/d3cd4fa0086b526f2f5c9c6c58880c9da7004c66/AWSCognitoIdentityProviderASF/AWSCognitoIdentityProviderASF.m#L21)
+ JavaScript: [amazon-cognito-advanced-security-data.min.js](https://amazon-cognito-assets.us-east-1.amazoncognito.com/amazon-cognito-advanced-security-data.min.js)

## Afficher et exporter l'historique des événements utilisateur
<a name="user-pool-settings-adaptive-authentication-event-user-history"></a>

Amazon Cognito génère un journal pour chaque événement d'authentification d'un utilisateur lorsque vous activez la protection contre les menaces. Par défaut, vous pouvez consulter les journaux des utilisateurs dans le menu **Utilisateurs** de la console Amazon Cognito ou en utilisant l'[AdminListUserAuthEvents](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminListUserAuthEvents.html)API. Vous pouvez également exporter ces événements vers un système externe tel que CloudWatch Logs, Amazon S3 ou Amazon Data Firehose. La fonctionnalité d'exportation peut rendre les informations de sécurité relatives à l'activité des utilisateurs dans votre application plus accessibles à vos propres systèmes d'analyse de sécurité.

**Topics**
+ [Afficher l'historique des événements utilisateur (AWS Management Console)](#user-pool-settings-adaptive-authentication-event-user-history-console)
+ [Affichage de l'historique des événements utilisateur (API/CLI)](#user-pool-settings-adaptive-authentication-event-user-history-api-cli)
+ [Exportation des événements d'authentification utilisateur](#user-pool-settings-adaptive-authentication-event-user-history-exporting)

### Afficher l'historique des événements utilisateur (AWS Management Console)
<a name="user-pool-settings-adaptive-authentication-event-user-history-console"></a>

Pour consulter l'historique de connexion d'un utilisateur, vous pouvez le sélectionner dans le menu **Utilisateurs** de la console Amazon Cognito. Amazon Cognito conserve l’historique des événements utilisateur pendant deux ans.

![\[Historique des événements utilisateur\]](http://docs.aws.amazon.com/fr_fr/cognito/latest/developerguide/images/cup-advanced-security-event-history.png)


Chaque événement de connexion possède un ID d’événement. L’événement a également des données contextuelles correspondantes, telles que l’emplacement, les détails de l’appareil et les résultats de détection des risques.

Vous pouvez également corréler l’ID de l’événement avec le jeton émis par Amazon Cognito au moment de l’enregistrement de l’événement. L’ID et les jetons d’accès incluent cet ID d’événement dans leur charge utile. Amazon Cognito établit également une corrélation entre l’utilisation du jeton d’actualisation et l’ID d’événement d’origine. Vous pouvez tracer l’ID d’événement d’origine en remontant jusqu’à l’ID de l’événement de connexion ayant conduit à l’émission des jetons Amazon Cognito. Vous pouvez tracer l’utilisation des jetons au sein de votre système jusqu’à un événement d’authentification particulier. Pour de plus amples informations, veuillez consulter [Comprendre les jetons Web JSON du pool d'utilisateurs (JWTs)](amazon-cognito-user-pools-using-tokens-with-identity-providers.md).

### Affichage de l'historique des événements utilisateur (API/CLI)
<a name="user-pool-settings-adaptive-authentication-event-user-history-api-cli"></a>

[Vous pouvez consulter l'historique des événements des utilisateurs à l'aide de l'opération API Amazon Cognito [AdminListUserAuthEvents](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminListUserAuthEvents.html)ou à l'aide de AWS Command Line Interface (AWS CLI) with admin-list-user-auth -events.](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/admin-list-user-auth-events.html)

------
#### [ AdminListUserAuthEvents request ]

Le corps de requête suivant `AdminListUserAuthEvents` renvoie le journal d'activité le plus récent d'un utilisateur.

```
{
  "UserPoolId": "us-west-2_EXAMPLE", 
  "Username": "myexampleuser", 
  "MaxResults": 1
}
```

------
#### [ admin-list-user-auth-events request ]

La requête suivante `admin-list-user-auth-events` renvoie le journal d'activité le plus récent d'un utilisateur.

```
aws cognito-idp admin-list-user-auth-events --max-results 1 --username myexampleuser --user-pool-id us-west-2_EXAMPLE
```

------
#### [ Response ]

Amazon Cognito renvoie le même corps de réponse JSON aux deux demandes. Voici un exemple de réponse pour un événement de connexion géré qui n'a pas été détecté comme contenant de facteurs de risque :

```
{
    "AuthEvents": [
        {
            "EventId": "[event ID]",
            "EventType": "SignIn",
            "CreationDate": "[Timestamp]",
            "EventResponse": "Pass",
            "EventRisk": {
                "RiskDecision": "NoRisk",
                "CompromisedCredentialsDetected": false
            },
            "ChallengeResponses": [
                {
                    "ChallengeName": "Password",
                    "ChallengeResponse": "Success"
                }
            ],
            "EventContextData": {
                "IpAddress": "192.168.2.1",
                "DeviceName": "Chrome 125, Windows 10",
                "Timezone": "-07:00",
                "City": "Bellevue",
                "Country": "United States"
            }
        }
    ],
    "NextToken": "[event ID]#[Timestamp]"
}
```

------

### Exportation des événements d'authentification utilisateur
<a name="user-pool-settings-adaptive-authentication-event-user-history-exporting"></a>

Configurez votre groupe d'utilisateurs pour exporter les événements utilisateur de la protection contre les menaces vers un système externe. Les systèmes externes pris en charge (Amazon S3, CloudWatch Logs et Amazon Data Firehose) peuvent ajouter des coûts à votre AWS facture pour les données que vous envoyez ou récupérez. Pour de plus amples informations, veuillez consulter [Exportation des journaux d’activité des utilisateurs pour la protection contre les menaces](exporting-quotas-and-usage.md#exporting-quotas-and-usage-user-activity).

------
#### [ AWS Management Console ]

1. Connectez-vous à la [console Amazon Cognito](https://console.aws.amazon.com/cognito/home).

1. Choisissez **Groupes d’utilisateurs**.

1. Choisissez un groupe d’utilisateurs existant dans la liste ou [créez-en un](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html).

1. Choisissez le menu **Log streaming**. Tâche de sélection **Modifier**.

1. Sous **État de la journalisation**, cochez la case à côté de **Activer l'exportation du journal d'activité utilisateur**.

1. Sous **Destination de journalisation**, choisissez Service AWS celle que vous souhaitez gérer pour vos **CloudWatch journaux : groupe** de journaux, **flux Amazon Data Firehose** ou **compartiment S3**.

1. Votre sélection remplira le sélecteur de ressources avec le type de ressource correspondant. Sélectionnez un groupe de journaux, un flux ou un bucket dans la liste. Vous pouvez également sélectionner le bouton **Créer** AWS Management Console pour accéder au service sélectionné et créer une nouvelle ressource.

1. Cliquez sur **Enregistrer les modifications**.

------
#### [ API ]

Choisissez un type de destination pour les journaux d'activité de vos utilisateurs.

Voici un exemple de corps de `SetLogDeliveryConfiguration` requête qui définit un flux Firehose comme destination du journal.

```
{
   "LogConfigurations": [
      {
         "EventSource": "userAuthEvents",
         "FirehoseConfiguration": {
            "StreamArn": "arn:aws:firehose:us-west-2:123456789012:deliverystream/example-user-pool-activity-exported"
         },
         "LogLevel": "INFO"
      }
   ],
   "UserPoolId": "us-west-2_EXAMPLE"
}
```

Voici un exemple de corps de `SetLogDeliveryConfiguration` demande qui définit un compartiment Amazon S3 comme destination du journal.

```
{
   "LogConfigurations": [
      {
         "EventSource": "userAuthEvents",
         "S3Configuration": { 
            "BucketArn": "arn:aws:s3:::amzn-s3-demo-logging-bucket"
         },
         "LogLevel": "INFO"
      }
   ],
   "UserPoolId": "us-west-2_EXAMPLE"
}
```

Voici un exemple de corps de `SetLogDeliveryConfiguration` demande qui définit un groupe de CloudWatch journaux comme destination du journal.

```
{
   "LogConfigurations": [
      {
         "EventSource": "userAuthEvents",
         "CloudWatchLogsConfiguration": { 
            "LogGroupArn": "arn:aws:logs:us-west-2:123456789012:log-group:DOC-EXAMPLE-LOG-GROUP"
         },
         "LogLevel": "INFO"
      }
   ],
   "UserPoolId": "us-west-2_EXAMPLE"
}
```

------

## Fourniture de commentaires sur des événements
<a name="user-pool-settings-adaptive-authentication-feedback"></a>

Les commentaires sur les événements ont un impact sur l’évaluation des risques en temps réel et améliorent l’algorithme d’évaluation des risques au fil du temps. Vous pouvez formuler des commentaires sur la validité des tentatives de connexion via la console Amazon Cognito et des opérations d’API. 

**Note**  
Vos commentaires sur les événements influent sur le niveau de risque qu’Amazon Cognito affecte aux sessions d’utilisateur suivantes présentant les mêmes caractéristiques.

Dans la console Amazon Cognito, choisissez un utilisateur dans le menu **Utilisateurs** et sélectionnez Envoyer **des commentaires sur les événements**. Vous pouvez passer en revue les détails de l’événement et sélectionner **Set as valid** (Définir comme valide) ou **Set as invalid** (Définir comme non valide).

La console répertorie l'historique des connexions dans les détails de l'utilisateur dans le menu **Utilisateurs**. Si vous sélectionnez une entrée, vous pouvez marquer l’événement comme étant valide ou non valide. Vous pouvez également fournir des commentaires via l'opération [AdminUpdateAuthEventFeedback](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateAuthEventFeedback.html)API du pool d'utilisateurs et via la AWS CLI commande [admin-update-auth-event-feedback](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/admin-update-auth-event-feedback.html). 

Lorsque vous sélectionnez **Set as valid** (Définir comme valide) dans la console Amazon Cognito ou que vous fournissez une valeur `valid` pour `FeedbackValue` dans l’API, vous indiquez à Amazon Cognito que vous faites confiance à une session d’utilisateur dans laquelle Amazon Cognito a évalué un certain niveau de risque. Lorsque vous sélectionnez **Set as invalid** (Définir comme non valide) dans la console Amazon Cognito ou que vous fournissez une valeur `invalid` pour `FeedbackValue` dans l’API, vous indiquez à Amazon Cognito que vous ne faites pas confiance à une session d’utilisateur, ou que vous ne pensez pas qu’Amazon Cognito a évalué un niveau de risque suffisamment haut.

## Envoi de messages de notification
<a name="user-pool-settings-adaptive-authentication-messages"></a>

Grâce à la protection contre les menaces, Amazon Cognito peut informer vos utilisateurs des tentatives de connexion risquées. Amazon Cognito peut également demander aux utilisateurs de sélectionner des liens pour indiquer si la connexion était valide ou non valide. Amazon Cognito utilise ces commentaires pour améliorer la précision de la détection des risques pour votre groupe d’utilisateurs. 

**Note**  
Amazon Cognito envoie des messages de notification aux utilisateurs uniquement lorsque leur action génère une réponse automatique au risque : bloquer la connexion, autoriser la connexion, définir le MFA comme facultatif ou exiger le MFA. Certaines demandes peuvent se voir attribuer un niveau de risque mais ne génèrent pas de réponses automatisées aux risques liés à l'authentification adaptative ; pour celles-ci, votre groupe d'utilisateurs n'envoie pas de notifications. Par exemple, des mots de passe incorrects peuvent être enregistrés avec une note de risque, mais la réponse d'Amazon Cognito est d'échouer la connexion, et non d'appliquer une règle d'authentification adaptative.

Dans la section **Automatic risk response** (Réponse automatique aux risques), choisissez **Notify Users** (Avertir les utilisateurs) pour les situations à risque faible, moyen ou élevé.

![\[Avertir les utilisateurs\]](http://docs.aws.amazon.com/fr_fr/cognito/latest/developerguide/images/cup-adaptive-auth.png)


Amazon Cognito envoie des notifications par e-mail à vos utilisateurs, qu’ils aient confirmé ou non leur adresse e-mail.

Vous pouvez personnaliser les e-mails de notification, et fournir à la fois les versions en texte brut et HTML de ces messages. Pour personnaliser vos notifications par e-mail, ouvrez les **modèles d'e-mail** depuis **Messages d'authentification adaptatifs** dans votre configuration de protection contre les menaces. Pour en savoir plus sur les modèles de courriel, consultez [Modèles de messages](cognito-user-pool-settings-message-customizations.md#cognito-user-pool-settings-message-templates).

# Collecte de données pour la protection contre les menaces dans les applications
<a name="user-pool-settings-viewing-threat-protection-app"></a>

[L'authentification adaptative](cognito-user-pool-settings-adaptive-authentication.md) Amazon Cognito évalue les niveaux de risque liés aux tentatives de prise de contrôle de compte à partir des détails contextuels des tentatives de connexion des utilisateurs. Votre application doit ajouter *des données contextuelles* aux demandes d'API afin que la protection contre les menaces Amazon Cognito puisse évaluer les risques avec plus de précision. Les données contextuelles sont des informations telles que l'adresse IP, l'agent de navigateur, les informations sur l'appareil et les en-têtes de demande qui fournissent des informations contextuelles sur la manière dont un utilisateur s'est connecté à votre groupe d'utilisateurs.

La principale responsabilité d'une application qui soumet ce contexte à Amazon Cognito est un `EncodedData` paramètre dans les demandes d'authentification adressées aux groupes d'utilisateurs. Pour ajouter ces données à vos demandes, vous pouvez implémenter Amazon Cognito avec un SDK qui génère automatiquement ces informations pour vous, ou vous pouvez implémenter un module pour JavaScript iOS ou Android qui collecte ces données. Les applications *réservées aux clients* qui envoient des demandes directes à Amazon Cognito doivent être mises en œuvre. AWS Amplify SDKs Les applications *client-serveur* dotées d'un serveur intermédiaire ou d'un composant API doivent implémenter un module SDK distinct.

Dans les scénarios suivants, votre interface d'authentification gère la collecte de données contextuelles utilisateur sans aucune configuration supplémentaire :
+ La connexion gérée collecte et soumet automatiquement les données contextuelles à la protection contre les menaces.
+ Toutes les AWS Amplify bibliothèques ont intégré la collecte de données contextuelles à leurs méthodes d'authentification.

## Soumission de données contextuelles utilisateur dans des applications clientes uniquement avec Amplify
<a name="user-pool-settings-viewing-threat-protection-app-amplify"></a>

![\[Vue d'ensemble de la collecte de données pour la protection contre les menaces dans une application Amplify.\]](http://docs.aws.amazon.com/fr_fr/cognito/latest/developerguide/images/user-pools-asf-amplify-data-collection.png)


Amplify SDKs prend en charge les clients mobiles qui s'authentifient directement auprès d'Amazon Cognito. Les clients de ce type envoient des demandes d'API directes aux opérations d'API publiques d'Amazon Cognito. Les clients Amplify collectent automatiquement des données contextuelles pour se protéger contre les menaces par défaut.

Les applications Amplify with JavaScript sont une exception. Ils nécessitent l'ajout d'un [JavaScript module](#user-pool-settings-viewing-threat-protection-app-additional-resources-js) qui collecte les données contextuelles de l'utilisateur.

Généralement, une application dans cette configuration utilise des opérations d'API non authentifiées telles que [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)et. [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html) L'[UserContextData](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UserContextDataType.html)objet permet d'évaluer plus précisément les risques liés à ces opérations. L'Amplify SDKs ajoute des informations sur le périphérique et la session à un `EncodedData` paramètre de. `UserContextData`

## Collecte de données contextuelles dans les applications client-serveur
<a name="user-pool-settings-viewing-threat-protection-app-server-side"></a>

Certaines applications disposent d'un niveau frontal qui collecte les données d'authentification des utilisateurs et d'un niveau principal d'application qui envoie des demandes d'authentification à Amazon Cognito. Il s'agit d'une architecture courante dans les serveurs Web et les applications reposant sur des microservices. Dans ces applications, vous devez importer une bibliothèque publique de collecte de données contextuelles.

![\[Vue d'ensemble de l'authentification côté serveur avec des données contextuelles de protection contre les menaces dans. JavaScript\]](http://docs.aws.amazon.com/fr_fr/cognito/latest/developerguide/images/user-pools-asf-non-amplify-data-collection.png)


Dans cette configuration, un serveur d'applications utilise généralement des opérations d'API authentifiées telles que [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)et [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html). L'[ContextData](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#CognitoUserPools-AdminInitiateAuth-request-ContextData)objet aide Amazon Cognito à évaluer les risques liés à ces opérations avec plus de précision. Le contenu est constitué des `ContextData` données codées que votre interface a transmises à votre serveur, ainsi que des informations supplémentaires provenant de la requête HTTP de l'utilisateur envoyée à votre serveur. Ces informations contextuelles supplémentaires, telles que les en-têtes HTTP et l'adresse IP, fournissent à votre serveur d'applications les caractéristiques de l'environnement de l'utilisateur.

Votre serveur d'applications peut également se connecter à l'aide d'opérations d'API non authentifiées telles que et. [InitiateAuth[RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) L'[UserContextData](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-UserContextData)objet alimente l'analyse des risques liés à la protection contre les menaces dans le cadre de ces opérations. Les opérations effectuées dans les bibliothèques de collecte de données contextuelles publiques disponibles ajoutent des informations de sécurité au `EncodedData` paramètre des demandes d'authentification. Configurez également votre groupe d'utilisateurs pour accepter des données contextuelles supplémentaires et ajoutez l'adresse IP source de l'utilisateur au `IpAddress` paramètre de`UserContextData`.

**Pour ajouter des données contextuelles aux applications client-serveur**

1. Dans votre application frontale, collectez des données contextuelles codées auprès du client à l'aide d'un système [iOS, Android ou d'un JavaScript module](#user-pool-settings-viewing-threat-protection-app-additional-resources).

1. Transmettez les données codées et les détails de la demande d'authentification à votre serveur d'applications.

1. Dans votre serveur d'applications, extrayez l'adresse IP de l'utilisateur, les en-têtes HTTP pertinents, le nom du serveur demandé et le chemin demandé à partir de la requête HTTP. Entrez ces valeurs dans le [ContextData](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#CognitoUserPools-AdminInitiateAuth-request-ContextData)paramètre de votre demande d'API à Amazon Cognito.

1. Renseignez le `EncodedData` paramètre de `ContextData` votre demande d'API avec les données d'appareil codées collectées par votre module SDK. Ajoutez ces données contextuelles à la demande d'authentification.

## Bibliothèques de données contextuelles pour les applications client-serveur
<a name="user-pool-settings-viewing-threat-protection-app-additional-resources"></a>

### JavaScript
<a name="user-pool-settings-viewing-threat-protection-app-additional-resources-js"></a>

Le `amazon-cognito-advanced-security-data.min.js` module collecte les informations `EncodedData` que vous pouvez transmettre à votre serveur d'applications.

Ajoutez le `amazon-cognito-advanced-security-data.min.js` module à votre JavaScript configuration. Remplacez `<region>` par un Région AWS dans la liste suivante : `us-east-1``us-east-2`,`us-west-2`,`eu-west-1`,`eu-west-2`, ou`eu-central-1`.

```
<script src="https://amazon-cognito-assets.<region>.amazoncognito.com/amazon-cognito-advanced-security-data.min.js"></script>
```

Pour générer un `encodedContextData` objet que vous pouvez utiliser dans le `EncodedData` paramètre, ajoutez ce qui suit à la source de votre JavaScript application :

```
var encodedContextData = AmazonCognitoAdvancedSecurityData.getData(_username, _userpoolId, _userPoolClientId);
```

### iOS/SWIFT
<a name="user-pool-settings-viewing-threat-protection-app-additional-resources-ios"></a>

Pour générer des données contextuelles, les applications iOS peuvent intégrer le [AWSCognitoIdentityProvidermodule](https://github.com/aws-amplify/aws-sdk-ios/tree/main/AWSCognitoIdentityProviderASF) ASF du [Mobile SDK for](https://github.com/aws-amplify/aws-sdk-ios/tree/main) iOS.

Pour collecter des données contextuelles codées à des fins de protection contre les menaces, ajoutez l'extrait suivant à votre application :

```
import AWSCognitoIdentityProviderASF

let deviceId = getDeviceId()
let encodedContextData = AWSCognitoIdentityProviderASF.userContextData(
                            userPoolId, 
                            username: username, 
                            deviceId: deviceId, 
                            userPoolClientId: userPoolClientId)
                                
/**
 * Reuse DeviceId from keychain or generate one for the first time.
 */
func getDeviceId() -> String {
    let deviceIdKey = getKeyChainKey(namespace: userPoolId, key: "AWSCognitoAuthAsfDeviceId")
    
   if let existingDeviceId = self.keychain.string(forKey: deviceIdKey) {
        return existingDeviceId
    }

    let newDeviceId = UUID().uuidString
    self.keychain.setString(newDeviceId, forKey: deviceIdKey)
    return newDeviceId
}

/**
 * Get a namespaced keychain key given a namespace and key
 */    
func getKeyChainKey(namespace: String, key: String) -> String {
    return "\(namespace).\(key)"
}
```

### Android
<a name="user-pool-settings-viewing-threat-protection-app-additional-resources-android"></a>

Pour générer des données contextuelles, les applications Android peuvent intégrer le [aws-android-sdk-cognitoidentityprovidermodule](https://github.com/aws-amplify/aws-sdk-android/tree/main/aws-android-sdk-cognitoidentityprovider-asf) -asf du [Mobile SDK for](https://github.com/aws-amplify/aws-sdk-android/tree/main) Android.

Pour collecter des données contextuelles codées à des fins de protection contre les menaces, ajoutez l'extrait suivant à votre application :

```
UserContextDataProvider provider = UserContextDataProvider.getInstance();
// context here is android application context.
String encodedContextData = provider.getEncodedContextData(context, username, userPoolId, userPoolClientId);
```

# Associer une ACL AWS WAF Web à un groupe d'utilisateurs
<a name="user-pool-waf"></a>

AWS WAF est un pare-feu d'applications Web. Grâce à une liste de contrôle d'accès AWS WAF Web (ACL Web), vous pouvez protéger votre groupe d'utilisateurs contre les demandes indésirables adressées à votre interface utilisateur hébergée classique, à votre connexion gérée et aux points de terminaison du service d'API Amazon Cognito. Une ACL web vous permet de contrôler avec précision toutes les requêtes web HTTPS auxquelles votre groupe d’utilisateurs répond. Pour plus d'informations sur le AWS WAF Web ACLs, consultez [la section Gestion et utilisation d'une liste de contrôle d'accès Web (ACL Web)](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl.html) dans le *manuel du AWS WAF développeur*.

Lorsqu'une ACL AWS WAF Web est associée à un groupe d'utilisateurs, Amazon Cognito transmet certains en-têtes non confidentiels et le contenu des demandes de vos utilisateurs à. AWS WAF AWS WAF inspecte le contenu de la demande, le compare aux règles que vous avez spécifiées dans votre ACL Web et renvoie une réponse à Amazon Cognito.

## Ce qu'il faut savoir sur le AWS WAF Web ACLs et Amazon Cognito
<a name="user-pool-waf-things-to-know"></a>
+ Vous ne pouvez pas configurer les règles ACL Web pour qu'elles correspondent aux informations personnelles identifiables (PII) contenues dans les demandes du groupe d'utilisateurs, par exemple les noms d'utilisateur, les mots de passe, les numéros de téléphone ou les adresses e-mail. Ces données ne seront pas disponibles pour AWS WAF. Configurez plutôt vos règles ACL Web pour qu'elles correspondent aux données de session contenues dans les en-têtes, le chemin et le corps, telles que les adresses IP, les agents de navigateur et les opérations d'API demandées.
+ Les conditions des règles ACL Web peuvent uniquement renvoyer des réponses de bloc personnalisées à la **première** demande des utilisateurs à une page de connexion gérée interactive. Lorsque les connexions suivantes répondent à une condition de réponse de blocage personnalisée, elles renvoient votre code de statut personnalisé, votre en-tête et vos réponses de redirection, mais un message de blocage par défaut.
+ Les demandes bloquées par AWS WAF ne sont pas prises en compte dans le quota de taux de demandes, quel que soit le type de demande. Le AWS WAF gestionnaire est appelé avant les gestionnaires de régulation au niveau de l'API.
+ Lorsque vous créez une liste ACL web, peu de temps s’écoule avant qu’elle ne soit entièrement propagée et ne soit disponible pour Amazon Cognito. Le temps de propagation peut aller de quelques secondes à plusieurs minutes. AWS WAF renvoie un [https://docs.aws.amazon.com/waf/latest/APIReference/API_AssociateWebACL.html#API_AssociateWebACL_Errors](https://docs.aws.amazon.com/waf/latest/APIReference/API_AssociateWebACL.html#API_AssociateWebACL_Errors)lorsque vous tentez d'associer une ACL Web avant qu'elle ne soit complètement propagée.
+ Vous pouvez associer une ACL Web à chaque groupe d'utilisateurs.
+ Votre demande peut entraîner une charge utile supérieure aux limites de ce que AWS WAF peut inspecter. Consultez la section [Gestion des composants de demandes surdimensionnés](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statement-oversize-handling.html) dans le *guide du AWS WAF développeur* pour savoir comment configurer le mode de gestion des demandes AWS WAF surdimensionnées provenant d'Amazon Cognito.
+ Vous ne pouvez pas associer une ACL Web qui utilise AWS WAF [la prévention de la prise de contrôle des fraudes (ATP)](https://docs.aws.amazon.com/waf/latest/developerguide/waf-atp.html) à un groupe d'utilisateurs Amazon Cognito. La fonctionnalité ATP se trouve dans le groupe de règles `AWS-AWSManagedRulesATPRuleSet` gérées. Avant d'associer une ACL Web à un groupe d'utilisateurs, assurez-vous qu'elle n'utilise pas ce groupe de règles géré.
+ Lorsqu'une ACL AWS WAF Web est associée à un groupe d'utilisateurs et qu'une règle de votre ACL Web présente un CAPTCHA, cela peut provoquer une erreur irrécupérable lors de l'enregistrement TOTP de connexion gérée. Pour créer une règle comportant une action CAPTCHA et n'affectant pas la connexion gérée TOTP, consultez. [Configuration de votre ACL AWS WAF Web pour la connexion gérée (TOTP MFA)](user-pool-settings-mfa-totp.md#totp-waf)

AWS WAF inspecte les demandes adressées aux points de terminaison suivants.

**Connexion gérée et interface utilisateur hébergée classique**  
Demandes adressées à tous les points de terminaison de [Points de terminaison du groupe d'utilisateurs et référence de connexion gérée](cognito-userpools-server-contract-reference.md).

**Opérations d’API publiques**  
Demandes de votre application adressées à l'API Amazon Cognito qui n'utilisent pas AWS d'informations d'identification pour les autoriser. Cela inclut les opérations d'API telles que [InitiateAuth[RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html), et [GetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html). Les opérations d'API concernées ne nécessitent AWS WAF pas d'authentification avec des informations d' AWS identification. Elles ne sont pas authentifiées ni autorisées par une chaîne de session ou un jeton d’accès. Pour de plus amples informations, veuillez consulter [Liste des opérations d'API regroupées par modèle d'autorisation](authentication-flows-public-server-side.md#user-pool-apis-auth-unauth).

Vous pouvez configurer les règles dans votre ACL web avec des actions de règles qui effectuent les opérations **Count**, **Allow** ou **Block**, ou qui présentent un **CAPTCHA** en réponse à une demande qui correspond à une règle. Pour plus d’informations, veuillez consulter la rubrique [Règles AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rules.html) dans le *Manuel du développeur AWS WAF *. En fonction de l’action de la règle, vous pouvez personnaliser la réponse qu’Amazon Cognito renvoie à vos utilisateurs.

**Important**  
Les options qui s’offrent à vous pour personnaliser la réponse aux erreurs dépendent de la manière dont vous envoyez une demande d’API.  
Vous pouvez personnaliser le code d'erreur et le corps de réponse des demandes de connexion gérées. Vous pouvez uniquement présenter un CAPTCHA à résoudre par votre utilisateur dans le cadre d'une connexion gérée.
Pour les demandes que vous faites avec l’[API de groupes d’utilisateurs](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html) Amazon Cognito, vous pouvez personnaliser le corps de la réponse d’une demande qui reçoit une réponse **Bloquer**. Vous pouvez également spécifier un code d’erreur personnalisé compris entre 400 et 499.
Le AWS Command Line Interface (AWS CLI) et le AWS SDKs renvoient une `ForbiddenException` erreur aux demandes qui produisent une réponse **Block** ou **CAPTCHA**.

## Associer une ACL web à votre groupe d’utilisateurs
<a name="user-pool-waf-setting-up"></a>

Pour utiliser une ACL Web dans votre groupe d'utilisateurs, votre principal Gestion des identités et des accès AWS (IAM) doit disposer des autorisations Amazon Cognito AWS WAF et des autorisations suivantes. Pour plus d'informations sur AWS WAF les autorisations, consultez la section [Autorisations d'AWS WAF API](https://docs.aws.amazon.com/waf/latest/developerguide/waf-api-permissions-ref.html) dans le *Guide du AWS WAF développeur*.

------
#### [ JSON ]

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Sid": "AllowWebACLUserPool",
			"Effect": "Allow",
			"Action": [
				"cognito-idp:ListResourcesForWebACL",
				"cognito-idp:GetWebACLForResource",
				"cognito-idp:AssociateWebACL"
			],
			"Resource": [
				"arn:aws:cognito-idp:*:123456789012:userpool/*"
			]
		},
		{
			"Sid": "AllowWebACLUserPoolWAFv2",
			"Effect": "Allow",
			"Action": [
				"wafv2:ListResourcesForWebACL",
				"wafv2:AssociateWebACL",
				"wafv2:DisassociateWebACL",
				"wafv2:GetWebACLForResource"
			],
			"Resource": "arn:aws:wafv2:*:123456789012:*/webacl/*/*"
		},
		{
			"Sid": "DisassociateWebACL1",
			"Effect": "Allow",
			"Action": "wafv2:DisassociateWebACL",
			"Resource": "*"
		},
		{
			"Sid": "DisassociateWebACL2",
			"Effect": "Allow",
			"Action": [
				"cognito-idp:DisassociateWebACL"
			],
			"Resource": [
				"arn:aws:cognito-idp:*:123456789012:userpool/*"
			]
		}
	]
}
```

------

[Bien que vous deviez accorder des autorisations IAM, les actions répertoriées ne concernent que des autorisations et ne correspondent à aucune opération d'API.](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html)

**Pour l'activer AWS WAF pour votre groupe d'utilisateurs et associer une ACL Web**

1. Connectez-vous à la [console Amazon Cognito](https://console.aws.amazon.com/cognito/home).

1. Dans le volet de navigation, choisissez **Groupes d’utilisateurs**, puis choisissez le groupe d’utilisateurs que vous souhaitez modifier.

1. Choisissez l'**AWS WAF**onglet dans la section **Sécurité**.

1. Choisissez **Modifier**.

1. Sélectionnez **Utiliser AWS WAF avec votre groupe d'utilisateurs**.  
![\[Capture d'écran de la boîte de AWS WAF dialogue avec l'option Utiliser AWS WAF avec votre groupe d'utilisateurs sélectionnée.\]](http://docs.aws.amazon.com/fr_fr/cognito/latest/developerguide/images/cup-WAF-console.png)

1. Choisissez une **ACL AWS WAF Web** que vous avez déjà créée, ou choisissez **Create Web ACL in AWS WAF** pour en créer une dans une nouvelle AWS WAF session dans le AWS Management Console.

1. Sélectionnez **Enregistrer les modifications**.

Pour associer par programmation une ACL Web à votre groupe d'utilisateurs dans le SDK AWS Command Line Interface ou dans un SDK, utilisez l'[AssociateWebACL](https://docs.aws.amazon.com/waf/latest/APIReference/API_AssociateWebACL.html) depuis l'API. AWS WAF Amazon Cognito ne dispose pas d’une opération d’API distincte qui associe une ACL Web.

## Tester et enregistrer sur AWS WAF le Web ACLs
<a name="user-pool-waf-evaluating-and-logging"></a>

Lorsque vous définissez une action de règle **sur Count** dans votre ACL Web AWS WAF , vous ajoutez la demande au nombre de demandes correspondant à la règle. Pour tester une ACL web avec votre groupe d’utilisateurs, définissez les actions des règles sur **Count** et examinez le volume de demandes correspondant à chaque règle. Par exemple, si une règle que vous souhaitez définir comme action **Block** correspond à un grand nombre de demandes que vous considérez comme relevant du trafic utilisateur normal. Vous devrez peut-être reconfigurer votre règle. Pour plus d'informations, consultez la section [Tester et régler vos AWS WAF protections](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-testing.html) dans le *Guide du AWS WAF développeur.*

Vous pouvez également configurer AWS WAF pour consigner les en-têtes des demandes dans un groupe de CloudWatch journaux Amazon Logs, un bucket Amazon Simple Storage Service (Amazon S3) ou un Amazon Data Firehose. Vous pouvez identifier les demandes Amazon Cognito que vous faites à l’aide de l’API des groupes d’utilisateurs grâce à `x-amzn-cognito-client-id` et `x-amzn-cognito-operation-name`. Les demandes de connexion gérées incluent uniquement l'`x-amzn-cognito-client-id`en-tête. Pour plus d’informations, consultez [Journalisation du trafic ACL web](https://docs.aws.amazon.com/waf/latest/developerguide/logging.html) dans le *Guide du développeur AWS WAF *.

AWS WAF Web ACLs sont disponibles dans tous les [plans de fonctionnalités](cognito-sign-in-feature-plans.md) du pool d'utilisateurs. Les fonctionnalités de sécurité AWS WAF complètent la protection contre les menaces d'Amazon Cognito. Vous pouvez activer les deux fonctions dans un groupe d’utilisateurs. AWS WAF facture séparément pour l’inspection des demandes du groupe d’utilisateurs. Pour plus d’informations, consultez [Tarification d’AWS WAF](https://aws.amazon.com/waf/pricing).

Les données de AWS WAF demande de journalisation sont soumises à une facturation supplémentaire par le service sur lequel vous ciblez vos logs. Pour plus d’informations, veuillez consulter la rubrique [Tarification pour la journalisation des informations sur le trafic ACL web](https://docs.aws.amazon.com/waf/latest/developerguide/logging.html#logging-pricing) dans le *Manuel du développeur AWS WAF *.

# Sensibilité à la casse du groupe d’utilisateurs
<a name="user-pool-case-sensitivity"></a>

Par défaut, les groupes d'utilisateurs Amazon Cognito que vous créez dans le groupe AWS Management Console ne distinguent pas les majuscules et minuscules. Lorsqu’un groupe d’utilisateurs n’est pas sensible à la casse,*utilisateur@exemple.com* et *User@example.com* reportez-vous au même utilisateur. Lorsque les noms d’utilisateur d’un groupe d’utilisateurs ne sont pas sensibles à la casse, il en va de même pour les attributs `preferred_username` et `email`.

L'indifférence majuscules/minuscules s'applique non seulement aux entrées d'attributs, mais également aux sorties. Les valeurs d'attributs mixtes dans les groupes d'utilisateurs qui ne distinguent pas les majuscules et minuscules sont aplaties en minuscules dans le texte de sortie du groupe d'utilisateurs. [Les réponses [UserInfo](userinfo-endpoint.md), les réponses aux requêtes utilisateur telles que la sortie de et les événements d'entrée dans les déclencheurs Lambda sont des exemples de sortie de [GetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html)texte du pool d'utilisateurs.](cognito-user-pools-working-with-lambda-triggers.md)

Pour prendre en compte les paramètres de sensibilité à la casse du groupe d’utilisateurs, identifiez les utilisateurs dans le code de votre application en fonction d’un autre attribut d’utilisateur. Comme la casse d’un nom d’utilisateur, d’un nom d’utilisateur préféré ou d’un attribut d’adresse e-mail peut varier dans différents profils d’utilisateur, reportez-vous à la place à l’attribut `sub`. Vous pouvez également créer un attribut personnalisé inaltérable dans votre groupe d’utilisateurs et attribuer votre propre valeur d’identificateur unique à l’attribut de chaque nouveau profil d’utilisateur. Quand vous créez un utilisateur pour la première fois, vous pouvez écrire une valeur dans l’attribut personnalisé inaltérable que vous avez créé.

**Note**  
Quels que soient les paramètres de sensibilité à la casse de votre groupe d’utilisateurs, Amazon Cognito exige qu’un utilisateur fédéré d’un fournisseur d’identité (IdP) SAML ou OIDC transmette une revendication `NameId` ou `sub` unique et sensible à la casse. Pour plus d'informations sur la distinction majuscules/majuscules des identificateurs uniques et sur le protocole SAML IdPs, consultez[Implémenter la connexion SAML initiée par le SP](cognito-user-pools-SAML-session-initiation.md#cognito-user-pools-saml-idp-authentication).

Création d’un groupe d’utilisateurs sensible à la casse  
Si vous créez des ressources avec le AWS Command Line Interface (AWS CLI) et des opérations d'API telles que [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html), vous devez définir le `CaseSensitive` paramètre booléen sur. `false` Ce paramètre crée un groupe d’utilisateurs insensible à la casse. Si vous ne spécifiez aucune valeur, le `CaseSensitive` utilise la valeur `true` par défaut. Les groupes d'utilisateurs que vous créez dans la console Amazon Cognito ne distinguent pas les majuscules et minuscules. Pour créer un groupe d'utilisateurs distinguant majuscules et minuscules, vous devez utiliser l'`CreateUserPool`opération. Avant le 12 février 2020, les groupes d’utilisateurs étaient sensibles à la casse, quelle que soit la plate-forme.   
Dans le menu de **connexion** du AWS Management Console et dans la `UsernameConfiguration` propriété de [DescribeUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UserPoolType.html#CognitoUserPools-Type-UserPoolType-UsernameConfiguration), vous pouvez consulter les paramètres de distinction majuscules/minuscules pour chaque groupe d'utilisateurs de votre compte.

Migration vers un nouveau groupe d’utilisateurs  
En raison des conflits potentiels entre les profils utilisateur, vous ne pouvez pas rendre insensible à la casse un groupe d’utilisateurs Amazon Cognito sensible à la casse. Au lieu de cela, migrez vos utilisateurs vers un nouveau groupe d’utilisateurs. Vous devez créer un code de migration pour résoudre les conflits liés à la casse. Ce code doit renvoyer un nouvel utilisateur unique ou rejeter la tentative de connexion s’il détecte un conflit. Dans un nouveau groupe d’utilisateurs insensible à la casse, attribuez un [Déclencheur Lambda de migration d'utilisateur](user-pool-lambda-migrate-user.md). La AWS Lambda fonction peut créer des utilisateurs dans le nouveau groupe d'utilisateurs qui ne fait pas la distinction majuscules/minuscules. Quand l’utilisateur ne parvient pas à se connecter avec le groupe d’utilisateurs insensible à la casse, la fonction Lambda détecte et duplique l’utilisateur à partir du groupe d’utilisateurs sensible à la casse. Vous pouvez également activer un déclencheur Lambda de migration utilisateur lors [ForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html)d'événements. Amazon Cognito transmet les informations utilisateur et les métadonnées d’événements de l’action de connexion ou de récupération de mot de passe à votre fonction Lambda. Vous pouvez utiliser les données d’événement pour gérer les conflits entre les noms d’utilisateur et les adresses e-mail lorsque votre fonction crée le nouvel utilisateur dans votre groupe d’utilisateurs insensible à la casse. Ces conflits concernent des noms d'utilisateur et des adresses e-mail qui seraient uniques dans un groupe d'utilisateurs distinguant majuscules et minuscules, mais identiques dans un groupe d'utilisateurs ne distinguant pas les majuscules et minuscules.   
Pour plus d'informations sur l'utilisation d'un déclencheur Lambda de migration d'utilisateurs entre des groupes d'utilisateurs Amazon Cognito, [consultez la section Migration d'utilisateurs vers des groupes d'utilisateurs Amazon Cognito sur](https://aws.amazon.com/blogs/mobile/migrating-users-to-amazon-cognito-user-pools/) le blog. AWS 

# Protection contre la suppression du groupe d'utilisateurs
<a name="user-pool-settings-deletion-protection"></a>

Pour éviter que vos administrateurs ne suppriment accidentellement votre groupe d'utilisateurs, activez la protection contre la suppression. Lorsque la protection contre la suppression est active, vous devez confirmer que vous souhaitez supprimer votre groupe d'utilisateurs avant de le supprimer. Lorsque vous supprimez un groupe d'utilisateurs dans le AWS Management Console, vous pouvez désactiver la protection contre la suppression en même temps. Lorsque vous acceptez l'invite de désactivation de la protection contre la suppression et que vous confirmez la suppression, comme illustré dans l'image suivante, Amazon Cognito supprime votre groupe d'utilisateurs.

![\[Capture d'écran AWS Management Console montrant une invite à supprimer un groupe d'utilisateurs avec une invite incluse pour désactiver également la protection contre la suppression.\]](http://docs.aws.amazon.com/fr_fr/cognito/latest/developerguide/images/amazon-cognito-delete-user-pool-deactivate-deletion-protection.png)


Lorsque vous souhaitez supprimer un groupe d'utilisateurs avec une demande d'API Amazon Cognito, vous devez d'abord le `DeletionProtection` modifier `Inactive` dans une [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)demande. Si vous ne désactivez pas la protection contre la suppression, Amazon Cognito renvoie une erreur `InvalidParameterException`. Après avoir désactivé la protection contre la suppression, vous pouvez supprimer le groupe d'utilisateurs dans une [DeleteUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUserPool.html)demande.

Amazon Cognito active par défaut **Deletion protection** (Protection contre la suppression) lorsque vous créez un nouveau groupe d'utilisateurs dans la AWS Management Console. Lorsque vous créez un groupe d'utilisateurs à l'aide de l'API `CreateUserPool`, la protection contre la suppression est inactive par défaut. Pour utiliser cette fonctionnalité dans les groupes d'utilisateurs que vous créez à l'aide du SDK AWS CLI ou d'un AWS SDK, définissez le `DeletionProtection` paramètre sur. `True`

Vous pouvez activer ou désactiver le statut de protection contre la suppression dans le conteneur de **protection contre la suppression** du menu **Paramètres** de la console Amazon Cognito.

# Pour configurer la protection contre la suppression


1. Accédez à la [console Amazon Cognito](https://console.aws.amazon.com/cognito/home). Il se peut que vous soyez invité à saisir vos AWS informations d'identification.

1. Choisissez **Groupes d’utilisateurs**.

1. Choisissez un groupe d’utilisateurs existant dans la liste ou [créez-en un](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html).

1. Choisissez le menu **Paramètres** et accédez à l'onglet **Protection contre la suppression**. Sélectionnez **Activer ou **Désactiver****.

1. Confirmez votre choix dans la boîte de dialogue suivante.

# Gestion des réponses aux erreurs liées à l'existence des utilisateurs
<a name="cognito-user-pool-managing-errors"></a>

Amazon Cognito prend en charge la personnalisation des réponses d'erreur renvoyées par les groupes d'utilisateurs. Des réponses d'erreur personnalisées sont disponibles pour les opérations de création et d'authentification, de récupération de mot de passe et de confirmation d'utilisateurs.

Utilisez le paramètre `PreventUserExistenceErrors` d'un client d'application de groupe d'utilisateurs pour activer ou désactiver les erreurs liées à l'existence de l'utilisateur. Lorsque vous créez un nouveau client d'application avec l'API des groupes d'utilisateurs Amazon Cognito, elle `PreventUserExistenceErrors` est `LEGACY` ou est désactivée par défaut. Dans la console Amazon Cognito, l'option **Empêcher les erreurs liées à l'existence des utilisateurs** (paramètre `ENABLED` pour`PreventUserExistenceErrors`) est sélectionnée par défaut. Pour mettre à jour votre `PreventUserExistenceErrors` configuration, effectuez l'une des opérations suivantes :
+ Modifiez la valeur comprise `PreventUserExistenceErrors` entre `ENABLED` et `LEGACY` dans une demande d'[https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html)API.
+ Modifiez le client de votre application dans la console Amazon Cognito et modifiez l'état de **Empêcher les erreurs d'existence des utilisateurs** entre sélectionné (`ENABLED`) et désélectionné (). `LEGACY`

Lorsque cette propriété a une valeur égale à`LEGACY`, le client de votre application renvoie une réponse `UserNotFoundException` d'erreur lorsqu'un utilisateur tente de se connecter avec un nom d'utilisateur qui n'existe pas dans votre groupe d'utilisateurs.

Lorsque cette propriété a une valeur de`ENABLED`, le client de votre application ne divulgue pas l'inexistence d'un compte utilisateur dans votre groupe d'utilisateurs avec une `UserNotFoundException` erreur. Une `PreventUserExistenceErrors` configuration de produit `ENABLED` les effets suivants lorsque vous soumettez une demande pour un nom d'utilisateur qui n'existe pas :
+ Amazon Cognito fournit des informations non spécifiques aux demandes d'API lorsque sa réponse pourrait sinon révéler l'existence d'un utilisateur valide.
+ Amazon Cognito renvoie une réponse d'échec d'authentification générique aux demandes de mot de passe oublié et aux demandes d'authentification avec des flux d'authentification, à l'*exception* de l'[authentification basée sur le choix](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) ()`USER_AUTH`, par exemple, ou. `USER_SRP_AUTH` `CUSTOM_AUTH` La réponse d'erreur vous indique que le nom d'utilisateur ou le mot de passe est incorrect.
+ Amazon Cognito répond aux demandes d'authentification basée sur les choix en effectuant une sélection aléatoire parmi les types de défis autorisés pour le groupe d'utilisateurs. Votre groupe d'utilisateurs peut renvoyer une clé d'accès, un mot de passe à usage unique ou un défi de mot de passe.
+ Le comportement de confirmation du compte Amazon Cognito et de récupération du mot de passe APIs alterne entre le renvoi d'une réponse indiquant qu'un code a été envoyé à un support de diffusion simulé et le renvoi d'une erreur. `InvalidParameterException`

Les informations suivantes détaillent les comportements des opérations du groupe d'utilisateurs lorsque `PreventUserExistenceErrors` ce paramètre est défini sur`ENABLED`.

## Opérations d'authentification et de création d'utilisateurs
<a name="cognito-user-pool-managing-errors-user-auth"></a>

Vous pouvez configurer les réponses aux erreurs dans l'authentification par nom d'utilisateur-mot de passe et par mot de passe sécurisé (SRP). Vous pouvez également personnaliser les erreurs que vous renvoyez grâce à une authentification personnalisée. L'authentification basée sur les choix n'est pas affectée par votre `PreventUserExistenceErrors` configuration.Informations relatives à l'existence des utilisateurs divulguées dans les flux d'authentification

**Authentification basée sur les choix**  
Dans le flux d'authentification `USER_AUTH` basé sur les choix, Amazon Cognito renvoie un défi à partir des principaux facteurs d'authentification disponibles, en fonction de la configuration de votre groupe d'utilisateurs et des attributs des utilisateurs. Ce flux d'authentification peut renvoyer un mot de passe, un mot de passe distant sécurisé (SRP), WebAuthn (clé d'accès), un mot de passe à usage unique (OTP) par SMS ou des défis OTP par e-mail. Lorsque cette option est `PreventUserExistenceErrors` activée, Amazon Cognito met les utilisateurs inexistants au défi de compléter une ou plusieurs des formes d'authentification disponibles. Lorsque cette option est `PreventUserExistenceErrors` inactive, Amazon Cognito renvoie une `UserNotFound` exception.

**Authentification par nom d’utilisateur et mot de passe**  
Les flux d'authentification `ADMIN_USER_PASSWORD_AUTH``USER_PASSWORD_AUTH`, et le `PASSWORD` flux de `USER_AUTH` retour `NotAuthorizedException` avec le message `Incorrect username or password` lorsqu'il `PreventUserExistenceErrors` est actif. Lorsqu'il `PreventUserExistenceErrors` est inactif, ces flux reviennent`UserNotFoundException`.

**Authentification basée sur un mot de passe distant sécurisé (Secure Remote Password, SRP)**  
Il est recommandé de n'implémenter `PreventUserExistenceErrors` que le flux `USER_SRP_AUTH` ou le `PASSWORD_SRP` flux de `USER_AUTH` groupes d'utilisateurs sans adresse e-mail, numéro de téléphone ou [alias de nom d'utilisateur préféré](user-pool-settings-attributes.md#user-pool-settings-aliases). Les utilisateurs dotés d'attributs d'alias peuvent ne pas être soumis à la suppression de leur existence dans le flux d'authentification SRP. Les flux d'authentification par nom d'utilisateur et mot de passe (`ADMIN_USER_PASSWORD_AUTH`et le `USER_AUTH` `PASSWORD` défi) suppriment complètement l'existence des utilisateurs à partir des attributs d'alias. `USER_PASSWORD_AUTH`  
[Lorsqu'un utilisateur tente de se connecter au SRP avec un nom d'utilisateur inconnu de votre client d'application, Amazon Cognito renvoie une réponse simulée lors de la première étape, comme décrit dans la RFC 5054.](https://tools.ietf.org/html/rfc5054#section-2.5.1.3) Amazon Cognito renvoie le même sel et un ID utilisateur interne au format [UUID](cognito-terms.md#terms-uuid) pour la même combinaison de nom d'utilisateur et de groupe d'utilisateurs. Lorsque vous envoyez une demande d'API `RespondToAuthChallenge` avec preuve de mot de passe, Amazon Cognito renvoie une erreur `NotAuthorizedException` générique lorsque le nom d'utilisateur ou le mot de passe sont incorrects. Pour plus d'informations sur la mise en œuvre de l'authentification SRP, consultez[Connectez-vous avec des mots de passe persistants et une charge utile sécurisée](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-srp).  
[Vous pouvez simuler une réponse générique avec authentification par nom d'utilisateur et mot de passe si vous utilisez des attributs d'alias basés sur la vérification et si le nom d'utilisateur immuable n'est pas formaté sous forme d'UUID.](cognito-terms.md#terms-uuid)

**Défi d'authentification personnalisé \$1 Déclencheur Lambda**  
Amazon Cognito lance le [défi d'authentification personnalisé que Lambda déclenche](user-pool-lambda-challenge.md) lorsque les utilisateurs tentent de se connecter via le flux d'`CUSTOM_AUTH`authentification, mais que leur nom d'utilisateur n'est pas trouvé. L'événement d'entrée inclut un paramètre booléen nommé `UserNotFound` avec la valeur `true` pour tout utilisateur inexistant. Ce paramètre apparaît dans les événements de demande que votre groupe d'utilisateurs envoie aux fonctions Lambda du défi de création, de définition et de vérification de l'authentification qui constituent l'architecture d'authentification personnalisée. Lorsque vous examinez cet indicateur dans la logique de votre fonction Lambda, vous pouvez simuler des défis d'authentification personnalisés pour un utilisateur qui n'existe pas.

**Déclencheur Lambda avant authentification**  
Amazon Cognito invoque le [déclencheur de pré-authentification](user-pool-lambda-pre-authentication.md) lorsque les utilisateurs tentent de se connecter mais que leur nom d'utilisateur est introuvable. L'événement d'entrée inclut un `UserNotFound` paramètre dont la valeur est `true` pour tout utilisateur inexistant.

La liste suivante décrit l'effet de la création d'un compte utilisateur `PreventUserExistenceErrors` sur celui-ci.Informations relatives à la divulgation de l'existence des utilisateurs dans les flux de création d'utilisateurs

**SignUp**  
L'`SignUp`opération revient toujours `UsernameExistsException` lorsqu'un nom d'utilisateur est déjà utilisé. Si vous ne voulez pas qu'Amazon Cognito renvoie une erreur `UsernameExistsException` pour les adresses e-mail et les numéros de téléphone au moment où vous inscrivez des utilisateurs dans votre application, utilisez des attributs d'alias basés sur la vérification. Pour en savoir plus sur les alias, consultez la section [Personnalisation des attributs de connexion](user-pool-settings-attributes.md#user-pool-settings-aliases).  
Pour voir un exemple de la façon dont Amazon Cognito peut empêcher l'utilisation de demandes d'API `SignUp` pour découvrir les utilisateurs de votre groupe d'utilisateurs, consultez [Prévention des erreurs `UsernameExistsException` pour les adresses e-mail et les numéros de téléphone au moment de l'inscription](#cognito-user-pool-managing-errors-prevent-userexistence-errors).

**Utilisateurs importés**  
Si l'option `PreventUserExistenceErrors` est activée, lors de l'authentification d'utilisateurs importés, une erreur `NotAuthorizedException` générique est renvoyée, indiquant que le nom d'utilisateur ou le mot de passe étaient incorrects au lieu de renvoyer `PasswordResetRequiredException`. Pour plus d’informations, consultez [Obligation pour les utilisateurs importés de réinitialiser leur mot de passe](cognito-user-pools-using-import-tool.md#cognito-user-pools-using-import-tool-password-reset).

**Déclencheur Lambda de migration d'utilisateur**  
Amazon Cognito renvoie une réponse simulée pour des utilisateurs inexistants quand une réponse vide a été définie dans le contexte d'événement d'origine par le déclencheur Lambda. Pour de plus amples informations, veuillez consulter [Importation d'utilisateurs avec un déclencheur Lambda de migration d'utilisateur](cognito-user-pools-import-using-lambda.md). 

### Prévention des erreurs `UsernameExistsException` pour les adresses e-mail et les numéros de téléphone au moment de l'inscription
<a name="cognito-user-pool-managing-errors-prevent-userexistence-errors"></a>

L'exemple suivant montre comment, au moment de configurer des attributs d'alias dans votre groupe d'utilisateurs, vous pouvez empêcher que des adresses e-mail et des numéros de téléphone en double ne génèrent des erreurs `UsernameExistsException` en réponse à des demandes d'API `SignUp`. Vous devez avoir créé votre groupe d'utilisateurs avec l'adresse e-mail ou le numéro de téléphone en tant qu'attribut d'alias. Pour en savoir plus, consultez la section *Personnalisation des attributs de connexion* du document [Attributs de groupe d'utilisateurs](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-attributes.html#user-pool-settings-aliases).

1. Jie s'inscrit pour obtenir un nouveau nom d'utilisateur et fournit également l'adresse e-mail `jie@example.com`. Amazon Cognito envoie un code à son adresse e-mail.

   **Exemple de AWS CLI commande**

   ```
   aws cognito-idp sign-up --client-id 1234567890abcdef0 --username jie --password PASSWORD --user-attributes Name="email",Value="jie@example.com"
   ```

   **Exemple de réponse**

   ```
   {
       "UserConfirmed": false, 
       "UserSub": "<subId>", 
       "CodeDeliveryDetails": {
           "AttributeName": "email", 
           "Destination": "j****@e****", 
           "DeliveryMedium": "EMAIL"
       }
   }
   ```

1. Jie fournit le code qui lui a été envoyé pour confirmer que l'adresse e-mail lui appartient. Cela termine son inscription en tant qu'utilisateur.

   **Exemple de AWS CLI commande**

   ```
   aws cognito-idp confirm-sign-up --client-id 1234567890abcdef0 --username=jie --confirmation-code xxxxxx
   ```

1. Shirley inscrit un nouveau compte d'utilisateur et fournit l'adresse e-mail `jie@example.com`. Amazon Cognito ne renvoie pas d'erreur `UsernameExistsException` et envoie un code de confirmation à l'adresse e-mail de Jie.

   **Exemple de AWS CLI commande**

   ```
   aws cognito-idp sign-up --client-id 1234567890abcdef0 --username shirley --password PASSWORD --user-attributes Name="email",Value="jie@example.com"
   ```

   **Exemple de réponse**

   ```
   {
       "UserConfirmed": false, 
       "UserSub": "<new subId>", 
       "CodeDeliveryDetails": {
           "AttributeName": "email", 
           "Destination": "j****@e****", 
           "DeliveryMedium": "EMAIL"
       }
   }
   ```

1. Dans un autre scénario, Shirley est propriétaire de `jie@example.com`. Shirley récupère le code qu'Amazon Cognito a envoyé à l'adresse e-mail de Jie et tente de confirmer le compte.

   **Exemple de AWS CLI commande**

   ```
   aws cognito-idp confirm-sign-up --client-id 1234567890abcdef0 --username=shirley --confirmation-code xxxxxx
   ```

   **Exemple de réponse**

   ```
   An error occurred (AliasExistsException) when calling the ConfirmSignUp operation: An account with the email already exists.
   ```

Amazon Cognito ne renvoie pas d'erreur à la demande `aws cognito-idp sign-up` de Shirley, bien que `jie@example.com` soit attribué à un utilisateur existant. Shirley doit prouver qu'elle est propriétaire de l'adresse e-mail avant qu'Amazon Cognito ne renvoie une réponse d'erreur. Dans un groupe d'utilisateurs doté d'attributs d'alias, ce comportement empêche l'utilisation de l'API `SignUp` publique pour vérifier l'existence d'un utilisateur à partir d'une adresse e-mail ou d'un numéro de téléphone donnés.

Ce comportement est différent de la réponse qu'Amazon Cognito renvoie à une demande `SignUp` associée à un nom d'utilisateur existant, comme le montre l'exemple suivant. Bien que cette réponse fasse découvrir à Shirley qu'il existe déjà un utilisateur doté du nom d'utilisateur `jie`, elle ne lui apprend rien concernant les adresses e-mail et les numéros de téléphone associés à cet utilisateur.

**Exemple de commande d'interface de ligne de commande**

```
aws cognito-idp sign-up --client-id 1example23456789 --username jie --password PASSWORD
      --user-attributes Name="email",Value="shirley@example.com"
```

**Exemple de réponse**

```
An error occurred (UsernameExistsException) when calling the SignUp operation: User already exists
```

## Opérations de réinitialisation de mot de passe
<a name="cognito-user-pool-managing-errors-password-reset"></a>

Amazon Cognito renvoie les réponses suivantes aux opérations de réinitialisation du mot de passe utilisateur lorsque vous empêchez les erreurs liées à l'existence d'un utilisateur.

**ForgotPassword**  
Quand un utilisateur n'est pas trouvé, est désactivé ou ne dispose d’aucun mécanisme de communication vérifié pour récupérer son mot de passe, Amazon Cognito renvoie `CodeDeliveryDetails` avec un mode de communication simulé pour un utilisateur. Le mode de communication simulé est déterminé par le format du nom d'utilisateur d'entrée et les paramètres de vérification du pool d'utilisateurs.

**ConfirmForgotPassword**  
Amazon Cognito renvoie l'erreur `CodeMismatchException` pour des utilisateurs inexistants ou désactivés. Si aucun code n'est demandé lors de l'utilisation de `ForgotPassword`, Amazon Cognito renvoie l'erreur `ExpiredCodeException`.

## Opérations de confirmation
<a name="cognito-user-pool-managing-errors-confirmation"></a>

Amazon Cognito renvoie les réponses suivantes aux opérations de confirmation et de vérification de l'utilisateur lorsque vous empêchez les erreurs liées à l'existence d'un utilisateur.

**ResendConfirmationCode**  
Amazon Cognito renvoie `CodeDeliveryDetails` pour un utilisateur désactivé ou inexistant. Amazon Cognito envoie un code de confirmation au courriel ou au numéro de téléphone de l'utilisateur existant.

**ConfirmSignUp**  
 `ExpiredCodeException` renvoie si un code a expiré. Amazon Cognito retourne `NotAuthorizedException` quand un utilisateur n'est pas autorisé. Si le code ne correspond pas à ce que le serveur attend, Amazon Cognito renvoie `CodeMismatchException`. 