

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.

# Flux d’authentification
<a name="amazon-cognito-user-pools-authentication-flow-methods"></a>

Le processus d'authentification auprès des groupes d'utilisateurs Amazon Cognito peut être décrit comme un *flux* dans lequel les utilisateurs font un choix initial, soumettent des informations d'identification et répondent à des défis supplémentaires. Lorsque vous implémentez l'authentification de connexion gérée dans votre application, Amazon Cognito gère le flux de ces demandes et de ces défis. Lorsque vous implémentez des flux avec un AWS SDK dans le back-end de votre application, vous devez élaborer la logique des demandes, inviter les utilisateurs à saisir des informations et relever les défis.

En tant qu'administrateur d'applications, vos caractéristiques d'utilisateur, vos exigences de sécurité et votre modèle d'autorisation vous aident à déterminer comment vous souhaitez autoriser les utilisateurs à se connecter. Posez-vous les questions suivantes.
+ Dois-je autoriser les utilisateurs à se connecter avec les informations d'identification d'[autres fournisseurs d'identité (IdPs)](#amazon-cognito-user-pools-authentication-flow-methods-federated) ?
+ Le [nom d'utilisateur et le mot de passe](#amazon-cognito-user-pools-authentication-flow-methods-password) sont-ils une preuve d'identité suffisante ?
+ Mes demandes d'authentification par nom d'utilisateur/mot de passe peuvent-elles être interceptées ? Est-ce que je veux que mon application transmette des mots de passe ou [négocie l'authentification à l'aide de hachages et de sels](#amazon-cognito-user-pools-authentication-flow-methods-srp) ?
+ Dois-je autoriser les utilisateurs à ignorer la saisie du mot de passe et à [recevoir un mot de passe à usage unique](#amazon-cognito-user-pools-authentication-flow-methods-passwordless) qui les connecte ?
+ Dois-je autoriser les utilisateurs à se connecter à l'aide d'une [empreinte digitale, d'un visage ou d'une clé de sécurité matérielle](#amazon-cognito-user-pools-authentication-flow-methods-passkey) ?
+ Quand dois-je exiger l'[authentification multifactorielle (MFA](#amazon-cognito-user-pools-authentication-flow-methods-mfa)), le cas échéant ?
+ Est-ce que je souhaite [conserver les sessions utilisateur sans avoir à nouveau à saisir les informations d'identification](#amazon-cognito-user-pools-authentication-flow-methods-refresh) ?
+ Est-ce que je souhaite [étendre mon modèle d'autorisation](#amazon-cognito-user-pools-authentication-flow-methods-custom) au-delà des fonctionnalités intégrées d'Amazon Cognito ?

Lorsque vous aurez les réponses à ces questions, vous pourrez apprendre à activer les fonctionnalités pertinentes et à les implémenter dans les demandes d'authentification effectuées par votre application.

Une fois que vous avez configuré les flux de connexion pour un utilisateur, vous pouvez vérifier son statut actuel en matière de MFA [et](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) de facteurs d'authentification basés sur le choix à l'aide des demandes adressées à [GetUserAuthFactors](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserAuthFactors.html)l'opération API. Cette opération nécessite une autorisation avec le jeton d'accès d'un utilisateur connecté. Il renvoie les facteurs d'authentification utilisateur et les paramètres MFA.

**Topics**
+ [Connectez-vous avec un tiers IdPs](#amazon-cognito-user-pools-authentication-flow-methods-federated)
+ [Connectez-vous avec des mots de passe persistants](#amazon-cognito-user-pools-authentication-flow-methods-password)
+ [Connectez-vous avec des mots de passe persistants et une charge utile sécurisée](#amazon-cognito-user-pools-authentication-flow-methods-srp)
+ [Connexion sans mot de passe avec mots de passe uniques](#amazon-cognito-user-pools-authentication-flow-methods-passwordless)
+ [Connexion sans mot de passe avec clés de passe WebAuthn](#amazon-cognito-user-pools-authentication-flow-methods-passkey)
+ [MFA après connexion](#amazon-cognito-user-pools-authentication-flow-methods-mfa)
+ [Actualiser les jetons](#amazon-cognito-user-pools-authentication-flow-methods-refresh)
+ [Authentification personnalisée](#amazon-cognito-user-pools-authentication-flow-methods-custom)
+ [Flux d'authentification pour la migration d'utilisateurs](#amazon-cognito-user-pools-user-migration-authentication-flow)

## Connectez-vous avec un tiers IdPs
<a name="amazon-cognito-user-pools-authentication-flow-methods-federated"></a>

Les groupes d'utilisateurs Amazon Cognito servent d'intermédiaire pour les sessions d'authentification entre les services IdPs Sign in with Apple, Login with Amazon et OpenID Connect (OIDC). Ce processus est également appelé *connexion fédérée ou authentification* *fédérée*. L'authentification fédérée n'utilise aucun des flux d'authentification que vous pouvez intégrer à votre client d'application. Au lieu de cela, vous attribuez un groupe d'utilisateurs configuré IdPs à votre client d'application. La connexion fédérée se produit lorsque les utilisateurs sélectionnent leur IdP dans la connexion gérée ou lorsque votre application ouvre une session avec une redirection vers leur page de connexion IdP.

Avec la connexion fédérée, vous déléguez les facteurs d'authentification principaux et MFA à l'IdP de l'utilisateur. Amazon Cognito n'ajoute pas les autres flux avancés de cette section à un utilisateur fédéré, sauf si vous [les liez à un](cognito-user-pools-identity-federation-consolidate-users.md) utilisateur local. Les utilisateurs fédérés non liés ont des noms d'utilisateur, mais il s'agit d'un magasin de données attributaires mappées qui ne sont généralement pas utilisées pour la connexion indépendamment du flux basé sur le navigateur.

**Ressources de mise en œuvre**
+ [Connexion au groupe d'utilisateurs avec des fournisseurs d'identité tiers](cognito-user-pools-identity-federation.md)

## Connectez-vous avec des mots de passe persistants
<a name="amazon-cognito-user-pools-authentication-flow-methods-password"></a>

Dans les groupes d'utilisateurs Amazon Cognito, chaque utilisateur possède un nom d'utilisateur. Il peut s'agir d'un numéro de téléphone, d'une adresse e-mail ou d'un identifiant choisi ou fourni par l'administrateur. Les utilisateurs de ce type peuvent se connecter à l'aide de leur nom d'utilisateur et de leur mot de passe, et éventuellement fournir un MFA. Les groupes d'utilisateurs peuvent effectuer une connexion par nom d'utilisateur et mot de passe à l'aide d'opérations d'API et de méthodes SDK publiques ou autorisées par l'IAM. Votre application peut directement envoyer le mot de passe à votre groupe d'utilisateurs pour authentification. Votre groupe d'utilisateurs répond à des défis supplémentaires ou aux jetons Web JSON (JWTs) résultant d'une authentification réussie.

------
#### [ Activate password sign-in ]

Pour activer l'[authentification basée sur le client](authentication-flows-selection-sdk.md#authentication-flows-selection-client) avec nom d'utilisateur et mot de passe, configurez le client de votre application pour l'autoriser. Dans la console Amazon Cognito, accédez au menu **Clients de l'application** sous **Applications** dans la configuration de votre groupe d'utilisateurs. **Pour autoriser la connexion par mot de passe simple pour une application mobile ou native côté client, modifiez un client d'application et choisissez **Se connecter avec un nom d'utilisateur et un mot de passe : ALLOW\_USER\_PASSWORD\_AUTH sous** Flux d'authentification.** Pour autoriser la connexion par mot de passe simple pour une application côté serveur, modifiez un client d'application et choisissez **Se connecter avec des informations d'identification administratives côté serveur : ALLOW\_ADMIN\_USER\_PASSWORD\_AUTH**.

Pour activer l'[authentification basée sur les choix](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) avec nom d'utilisateur et mot de passe, configurez le client de votre application pour l'autoriser. Modifiez le client de votre application et choisissez la **connexion basée sur les choix :** ALLOW\_USER\_AUTH.

![Capture d'écran de la console Amazon Cognito illustrant le choix des flux d'authentification par mot de passe simple pour un client d'application. Les options ALLOW_USER_PASSWORD_AUTH, ALLOW_ADMIN_USER_PASSWORD_AUTH et ALLOW_USER_AUTH ont été sélectionnées.](http://docs.aws.amazon.com/fr_fr/cognito/latest/developerguide/images/screenshot-choose-password-admin-password-and-user-auth.png)


Pour vérifier que l'authentification par mot de passe est disponible dans les flux d'authentification basés sur les choix, accédez au **menu de connexion et consultez** la section sous **Options pour la connexion basée sur les choix**. Vous pouvez vous connecter avec une authentification par mot de passe simple si le **mot de passe** est visible sous Choix **disponibles.** L'option **Mot de passe** inclut les variantes d'authentification par nom d'utilisateur et mot de passe simples et SRP.

![Capture d'écran de la console Amazon Cognito qui illustre le choix de l'authentification par mot de passe dans la configuration de connexion basée sur le choix USER_AUTH pour un groupe d'utilisateurs. L'option Mot de passe apparaît comme active.](http://docs.aws.amazon.com/fr_fr/cognito/latest/developerguide/images/screenshot-password-flow-in-user-auth.png)


Configurez `ExplicitAuthFlows` avec vos options username-and-password d'authentification préférées dans une [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html)demande [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html)ou.

```
"ExplicitAuthFlows": [ 
   "ALLOW_USER_PASSWORD_AUTH",
   "ALLOW_ADMIN_USER_PASSWORD_AUTH",
   "ALLOW_USER_AUTH"
]
```

Dans une [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)demande [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)ou, configurez `Policies` avec les flux d'authentification basés sur les choix que vous souhaitez prendre en charge. La `PASSWORD` valeur in `AllowedFirstAuthFactors` inclut à la fois les options de flux d'authentification par mot de passe brut et SRP.

```
"Policies": {
   "SignInPolicy": {
      "AllowedFirstAuthFactors": [
         "PASSWORD",
         "EMAIL_OTP",
         "WEB_AUTHN"
      ]
   }
}
```

------
#### [ Choice-based sign-in with a password ]

Pour connecter un utilisateur à une application à l'aide de l'authentification par nom d'utilisateur et mot de passe, configurez le corps de votre [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)requête [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)ou de la manière suivante. Cette demande de connexion aboutit ou passe au défi suivant si l'utilisateur actuel est éligible à l'authentification par nom d'utilisateur/mot de passe. Dans le cas contraire, il fournit une liste des défis d'authentification par facteur principal disponibles. Cet ensemble de paramètres est le minimum requis pour la connexion. Des paramètres supplémentaires sont disponibles.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "{{testuser}}",
      "PREFERRED_CHALLENGE" : "{{PASSWORD}}",
      "PASSWORD" : "{{[User's password]}}"
   },
   "ClientId": "{{1example23456789}}"
}
```

Vous pouvez également omettre la `PREFERRED_CHALLENGE` valeur et recevoir une réponse contenant une liste des facteurs de connexion éligibles pour l'utilisateur.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "{{testuser}}"
   },
   "ClientId": "{{1example23456789}}"
}
```

Si vous n'avez pas soumis de défi préféré ou si l'utilisateur soumis n'est pas éligible à son défi préféré, Amazon Cognito renvoie une liste d'options dans. `AvailableChallenges` En `AvailableChallenges` cas d'inclusion `ChallengeName` d'un ou`PASSWORD`, vous pouvez poursuivre l'authentification avec une réponse [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)ou un [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)défi au format suivant. Vous devez transmettre un `Session` paramètre qui associe la réponse au défi à la réponse de l'API à votre demande de connexion initiale. Cet ensemble de paramètres est le minimum requis pour la connexion. Des paramètres supplémentaires sont disponibles.

```
{
   "ChallengeName": "{{PASSWORD}}",
   "ChallengeResponses": { 
      "USERNAME" : "{{testuser}}",
      "PASSWORD" : "{{[User's Password]}}"
   },
   "ClientId": "{{1example23456789}}",
   "Session": "{{[Session ID from the previous response}}"
}
```

Amazon Cognito répond aux demandes de défi préféré éligibles et réussies à l'aide de jetons ou d'un `PASSWORD` défi supplémentaire tel que l'authentification multifactorielle (MFA).

------
#### [ Client-based sign-in with a password ]

Pour connecter un utilisateur à une application côté client avec une authentification par nom d'utilisateur et mot de passe, configurez le corps de votre demande comme suit. [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) Cet ensemble de paramètres est le minimum requis pour la connexion. Des paramètres supplémentaires sont disponibles.

```
{
   "AuthFlow": "USER_PASSWORD_AUTH",
   "AuthParameters": { 
      "USERNAME" : "{{testuser}}",
      "PASSWORD" : "{{[User's password]}}"
   },
   "ClientId": "{{1example23456789}}"
}
```

Pour connecter un utilisateur à une application côté serveur avec une authentification par nom d'utilisateur et mot de passe, configurez le corps de votre demande comme suit. [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html) Votre application doit signer cette demande avec des AWS informations d'identification. Cet ensemble de paramètres est le minimum requis pour la connexion. Des paramètres supplémentaires sont disponibles.

```
{
   "AuthFlow": "ADMIN_USER_PASSWORD_AUTH",
   "AuthParameters": { 
      "USERNAME" : "{{testuser}}",
      "PASSWORD" : "{{[User's password]}}"
   },
   "ClientId": "{{1example23456789}}"
}
```

Amazon Cognito répond aux demandes réussies à l'aide de jetons ou à un défi supplémentaire, tel que l'authentification multifactorielle (MFA).

------

## Connectez-vous avec des mots de passe persistants et une charge utile sécurisée
<a name="amazon-cognito-user-pools-authentication-flow-methods-srp"></a>

Le protocole SRP (Secure Remote Password) constitue une autre forme de méthode de connexion par nom d'utilisateur et mot de passe dans les groupes d'utilisateurs. Cette option envoie la preuve de la connaissance d'un mot de passe (hachage et sel de mot de passe) que votre groupe d'utilisateurs peut vérifier. En l'absence d'informations secrètes lisibles dans la demande adressée à Amazon Cognito, votre application est la seule entité qui traite les mots de passe saisis par les utilisateurs. L'authentification SRP implique des calculs mathématiques qu'il est préférable d'effectuer par un composant existant que vous pouvez importer dans votre SDK. Le SRP est généralement implémenté dans des applications côté client telles que les applications mobiles. Pour plus d'informations sur le protocole, consultez la page d'[accueil du Stanford SRP](http://srp.stanford.edu/). [Wikipédia](https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol) propose également des ressources et des exemples. [Diverses bibliothèques publiques](https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol#Implementations) sont disponibles pour effectuer les calculs SRP pour vos flux d'authentification.

La initiate-challenge-respond séquence d'authentification Amazon Cognito valide les utilisateurs et leurs mots de passe avec le SRP. Vous devez configurer votre groupe d'utilisateurs et votre client d'application pour prendre en charge l'authentification SRP, puis implémenter la logique des demandes de connexion et des réponses aux défis dans votre application. Vos bibliothèques SRP peuvent générer des nombres aléatoires et des valeurs calculées qui démontrent à votre groupe d'utilisateurs que vous êtes en possession du mot de passe d'un utilisateur. Votre application saisit ces valeurs calculées dans les `ChallengeParameters` champs au format JSON `AuthParameters` et dans les opérations d'API des groupes d'utilisateurs Amazon Cognito et dans les méthodes du SDK pour l'authentification.

------
#### [ Activate SRP sign-in ]

Pour activer l'[authentification basée sur le client](authentication-flows-selection-sdk.md#authentication-flows-selection-client) avec nom d'utilisateur et SRP, configurez le client de votre application pour l'autoriser. Dans la console Amazon Cognito, accédez au menu **Clients de l'application** sous **Applications** dans la configuration de votre groupe d'utilisateurs. **Pour autoriser la connexion SRP pour une application mobile ou native côté client, modifiez un client d'application et choisissez **Se connecter avec un mot de passe distant sécurisé (SRP) : ALLOW\_USER\_SRP\_AUTH** sous Flux d'authentification.**

Pour activer l'[authentification basée sur les choix](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) avec nom d'utilisateur et SRP, modifiez le client de votre application et choisissez **Connexion basée sur les choix :** ALLOW\_USER\_AUTH.

![Capture d'écran de la console Amazon Cognito illustrant le choix des flux d'authentification à distance sécurisés par mot de passe pour un client d'application. Les options ALLOW_USER_SRP_AUTH et ALLOW_USER_AUTH ont été sélectionnées.](http://docs.aws.amazon.com/fr_fr/cognito/latest/developerguide/images/screenshot-choose-SRP-and-user-auth.png)


Pour vérifier que l'authentification SRP est disponible dans vos flux d'authentification basés sur les choix, accédez au **menu de connexion et consultez** la section sous **Options pour** la connexion basée sur les choix. Vous pouvez vous connecter avec l'authentification SRP si le **mot de passe** est visible sous **Choix disponibles**. L'option **Mot de passe** inclut les variantes d'authentification en texte clair et SRP par nom d'utilisateur/mot de passe.

![Capture d'écran de la console Amazon Cognito qui illustre le choix de l'authentification par mot de passe dans la configuration de connexion basée sur le choix USER_AUTH pour un groupe d'utilisateurs. L'option Mot de passe est affichée comme étant active.](http://docs.aws.amazon.com/fr_fr/cognito/latest/developerguide/images/screenshot-password-flow-in-user-auth.png)


Configurez `ExplicitAuthFlows` avec vos options username-and-password d'authentification préférées dans une [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html)demande [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html)ou.

```
"ExplicitAuthFlows": [ 
   "ALLOW_USER_SRP_AUTH",
   "ALLOW_USER_AUTH"
]
```

Dans une [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)demande [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)ou, configurez `Policies` avec les flux d'authentification basés sur les choix que vous souhaitez prendre en charge. La `PASSWORD` valeur in `AllowedFirstAuthFactors` inclut à la fois les options de flux d'authentification en texte brut et SRP.

```
"Policies": {
   "SignInPolicy": {
      "AllowedFirstAuthFactors": [
         "PASSWORD",
         "EMAIL_OTP",
         "WEB_AUTHN"
      ]
   }
}
```

------
#### [ Choice-based sign-in with SRP ]

Pour connecter un utilisateur à une application avec une authentification par nom d'utilisateur et mot de passe avec SRP, configurez le corps de votre demande [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)ou [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)de la manière suivante. Cette demande de connexion aboutit ou passe au défi suivant si l'utilisateur actuel est éligible à l'authentification par nom d'utilisateur/mot de passe. Dans le cas contraire, il fournit une liste des défis d'authentification par facteur principal disponibles. Cet ensemble de paramètres est le minimum requis pour la connexion. Des paramètres supplémentaires sont disponibles.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "{{testuser}}",
      "PREFERRED_CHALLENGE" : "{{PASSWORD_SRP}}",
      "SRP_A" : "{{[g^a % N]}}"
   },
   "ClientId": "{{1example23456789}}"
}
```

Vous pouvez également omettre la `PREFERRED_CHALLENGE` valeur et recevoir une réponse contenant une liste des facteurs de connexion éligibles pour l'utilisateur.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "{{testuser}}"
   },
   "ClientId": "{{1example23456789}}"
}
```

Si vous n'avez pas soumis de défi préféré ou si l'utilisateur soumis n'est pas éligible à son défi préféré, Amazon Cognito renvoie une liste d'options dans. `AvailableChallenges` En `AvailableChallenges` cas d'inclusion `ChallengeName` d'un ou`PASSWORD_SRP`, vous pouvez poursuivre l'authentification avec une réponse [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)ou un [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)défi au format suivant. Vous devez transmettre un `Session` paramètre qui associe la réponse au défi à la réponse de l'API à votre demande de connexion initiale. Cet ensemble de paramètres est le minimum requis pour la connexion. Des paramètres supplémentaires sont disponibles.

```
{
   "ChallengeName": "{{PASSWORD_SRP}}",
   "ChallengeResponses": { 
      "USERNAME" : "{{testuser}}",
      "SRP_A" : "{{[g^a % N]}}"
   },
   "ClientId": "{{1example23456789}}",
   "Session": "{{[Session ID from the previous response}}"
}
```

Amazon Cognito répond aux demandes de défi préféré éligibles et aux réponses de défi par `PASSWORD_SRP` un défi. `PASSWORD_VERIFIER` Votre client doit effectuer les calculs du SRP et répondre au défi par le biais d'une [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)demande [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)ou d'une demande.

```
{
   "ChallengeName": "PASSWORD_VERIFIER",
   "ChallengeResponses": { 
      "PASSWORD_CLAIM_SIGNATURE" : "{{string}}",
      "PASSWORD_CLAIM_SECRET_BLOCK" : "{{string}}",
      "TIMESTAMP" : "{{string}}"
   },
   "ClientId": "{{1example23456789}}",
   "Session": "{{[Session ID from the previous response]}}"
}
```

En cas de réponse réussie à un `PASSWORD_VERIFIER` défi, Amazon Cognito émet des jetons ou un autre défi obligatoire tel que l'authentification multifactorielle (MFA).

------
#### [ Client-based sign-in with SRP ]

L'authentification SRP est plus courante pour l'authentification côté client que pour l'authentification côté serveur. Toutefois, vous pouvez utiliser l'authentification SRP avec [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)et [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html). Pour connecter un utilisateur à une application, configurez le corps de votre `AdminInitiateAuth` demande `InitiateAuth` ou de votre demande comme suit. Cet ensemble de paramètres est le minimum requis pour la connexion. Des paramètres supplémentaires sont disponibles.

Le client génère `SRP_A` à partir d'un générateur modulo N *g* élevé à la puissance d'un entier aléatoire secret *a.*

```
{
   "AuthFlow": "USER_SRP_AUTH",
   "AuthParameters": { 
      "USERNAME" : "{{testuser}}",
      "SRP_A" : "{{[g^a % N]}}"
   },
   "ClientId": "{{1example23456789}}"
}
```

Amazon Cognito répond par une question de sécurité `PASSWORD_VERIFIER`. Votre client doit effectuer les calculs du SRP et répondre au défi par le biais d'une [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)demande [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)ou d'une demande.

```
{
   "ChallengeName": "PASSWORD_VERIFIER",
   "ChallengeResponses": { 
      "PASSWORD_CLAIM_SIGNATURE" : "{{string}}",
      "PASSWORD_CLAIM_SECRET_BLOCK" : "{{string}}",
      "TIMESTAMP" : "{{string}}"
   },
   "ClientId": "{{1example23456789}}",
   "Session": "{{[Session ID from the previous response]}}"
}
```

En cas de réponse réussie à un `PASSWORD_VERIFIER` défi, Amazon Cognito émet des jetons ou un autre défi obligatoire tel que l'authentification multifactorielle (MFA).

------

## Connexion sans mot de passe avec mots de passe uniques
<a name="amazon-cognito-user-pools-authentication-flow-methods-passwordless"></a>

Les mots de passe peuvent être perdus ou volés. Vous souhaiterez peut-être vérifier uniquement que vos utilisateurs ont accès à une adresse e-mail, à un numéro de téléphone ou à une application d'authentification vérifiés. La solution consiste à se connecter *sans mot* de passe. Votre application peut inviter les utilisateurs à saisir leur nom d'utilisateur, leur adresse e-mail ou leur numéro de téléphone. Amazon Cognito génère ensuite un mot de passe à usage unique (OTP), un code qu'ils doivent confirmer. Un code réussi termine l'authentification.

Les flux d'authentification par mot de passe à usage unique (OTP) ne sont pas compatibles avec l'authentification multifactorielle (MFA) requise dans votre groupe d'utilisateurs. L'authentification par clé d'accès avec vérification de l'utilisateur peut satisfaire aux exigences de la MFA lorsque vous `FactorConfiguration` définissez cette option. `MULTI_FACTOR_WITH_USER_VERIFICATION` Si le MFA est facultatif dans votre groupe d'utilisateurs, les utilisateurs qui ont activé le MFA ne peuvent pas se connecter avec un premier facteur OTP. Les utilisateurs qui n'ont pas de préférence MFA dans un groupe d'utilisateurs optionnel peuvent se connecter sans mot de passe. Pour de plus amples informations, veuillez consulter [Ce qu'il faut savoir sur le MFA pour groupes d'utilisateurs](user-pool-settings-mfa.md#user-pool-settings-mfa-prerequisites).

Lorsqu'un utilisateur saisit correctement un code reçu dans un SMS ou un e-mail dans le cadre de l'authentification sans mot de passe, en plus d'authentifier l'utilisateur, votre groupe d'utilisateurs marque l'adresse e-mail ou l'attribut de numéro de téléphone non vérifié de l'utilisateur comme vérifié. Le statut de l'utilisateur est également passé de `UNCONFIRMED` à`CONFIRMED`, que vous ayez ou non configuré votre groupe d'utilisateurs pour [vérifier automatiquement les](signing-up-users-in-your-app.md) adresses e-mail ou les numéros de téléphone.

**Nouvelles options avec connexion sans mot de passe**  
Lorsque vous activez l'authentification sans mot de passe dans votre groupe d'utilisateurs, cela modifie le fonctionnement de certains flux d'utilisateurs.

1. Les utilisateurs peuvent s'inscrire sans mot de passe et choisir un facteur sans mot de passe lorsqu'ils se connectent. Vous pouvez également créer des utilisateurs sans mot de passe en tant qu'administrateur.

1. Les utilisateurs que vous [importez à l'aide d'un fichier CSV](cognito-user-pools-using-import-tool.md) peuvent se connecter immédiatement sans mot de passe. Ils ne sont pas tenus de définir un mot de passe avant de se connecter.

1. Les utilisateurs qui n'ont pas de mot de passe peuvent envoyer des demandes d'[ChangePassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ChangePassword.html)API sans le `PreviousPassword` paramètre.

**Connexion automatique avec OTPs**  
Les utilisateurs qui s'inscrivent et confirment leur compte utilisateur par e-mail ou SMS OTPs peuvent se connecter automatiquement en utilisant le facteur sans mot de passe correspondant à leur message de confirmation. Dans l'interface utilisateur de connexion gérée, les utilisateurs qui confirment leurs comptes et sont éligibles à la connexion OTP avec le mode de livraison du code de confirmation passent automatiquement à leur première connexion après avoir fourni le code de confirmation. Dans votre application personnalisée dotée d'un AWS SDK, transmettez les paramètres suivants à une opération [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)or [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html).
+ Le `Session` paramètre issu de la réponse de [ConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html)l'API en tant que paramètre de `Session` demande.
+ Un [AuthFlow](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-AuthFlow)de`USER_AUTH`.

Vous pouvez réussir un [PREFERRED\_CHALLENGE](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-AuthParameters) de `EMAIL_OTP` ou`SMS_OTP`, mais ce n'est pas obligatoire. Le `Session` paramètre fournit une preuve d'authentification et Amazon Cognito l'ignore `AuthParameters` lorsque vous transmettez un code de session valide.

L'opération de connexion renvoie la réponse indiquant la réussite de l'authentification [AuthenticationResult](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AuthenticationResultType.html), sans difficulté supplémentaire si les conditions suivantes sont réunies.
+ Le `Session` code est valide et n'a pas expiré.
+ L'utilisateur est éligible à la méthode d'authentification OTP.

------
#### [ Activate passwordless sign-in ]

**Console**  
Pour activer la connexion sans mot de passe, configurez votre groupe d'utilisateurs pour autoriser la connexion principale avec un ou plusieurs types sans mot de passe, puis configurez votre client d'application pour autoriser le flux. `USER_AUTH` Dans la console Amazon Cognito, accédez au menu de **connexion** sous **Authentification** dans la configuration de votre groupe d'utilisateurs. Modifiez **les options pour une connexion basée sur le choix** et choisissez le mot de passe à **usage unique pour les e-mails ou le mot de passe** à usage **unique pour les SMS**. Vous pouvez activer les deux options. Enregistrez vos modifications.

Accédez au menu des **clients de l'application** et choisissez un client d'application ou créez-en un nouveau. Sélectionnez **Modifier**, puis **sélectionnez un type d'authentification lors de la connexion : ALLOW\_USER\_AUTH**.

**API/SDK**  
Dans l'API des groupes d'utilisateurs, configurez `SignInPolicy` avec les options sans mot de passe appropriées dans une demande [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)or [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html).

```
"SignInPolicy": { 
    "AllowedFirstAuthFactors": [ 
        "EMAIL_OTP",
        "SMS_OTP"
    ]
}
```

Configurez votre client `ExplicitAuthFlows` d'application avec l'option requise dans une [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html)demande [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html)ou.

```
"ExplicitAuthFlows": [ 
   "ALLOW_USER_AUTH"
]
```

------
#### [ Sign in with passwordless ]

La connexion sans mot de passe n'a pas de [fonction client](authentication-flows-selection-sdk.md#authentication-flows-selection-client) `AuthFlow` que vous pouvez spécifier dans et. [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) L'authentification OTP n'est disponible que dans la version [basée sur le choix](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) `AuthFlow``USER_AUTH`, où vous pouvez demander une option de connexion préférée ou choisir l'option sans mot de passe parmi celles d'un utilisateur. [AvailableChallenges](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-response-AvailableChallenges) Pour connecter un utilisateur à une application, configurez le corps de votre `AdminInitiateAuth` demande `InitiateAuth` ou de votre demande comme suit. Cet ensemble de paramètres est le minimum requis pour la connexion. Des paramètres supplémentaires sont disponibles.

Dans cet exemple, nous ne savons pas de quelle manière l'utilisateur souhaite se connecter. Si nous ajoutons un `PREFERRED_CHALLENGE` paramètre et que le défi préféré est disponible pour l'utilisateur, Amazon Cognito répond par ce défi.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "{{testuser}}"
   },
   "ClientId": "{{1example23456789}}"
}
```

Vous pouvez plutôt ajouter `"PREFERRED_CHALLENGE": "EMAIL_OTP"` ou `"PREFERRED_CHALLENGE": "SMS_OTP"` à `AuthParameters` dans cet exemple. Si l'utilisateur est éligible à cette méthode préférée, votre groupe d'utilisateurs envoie immédiatement un code à l'adresse e-mail ou au numéro de téléphone de l'utilisateur et renvoie `"ChallengeName": "EMAIL_OTP"` ou`"ChallengeName": "SMS_OTP"`.

Si vous ne spécifiez pas de défi préféré, Amazon Cognito répond avec un `AvailableChallenges` paramètre.

```
{
   "AvailableChallenges": [ 
      "EMAIL_OTP", 
      "SMS_OTP",
      "PASSWORD"
    ],
   "Session": "{{[Session ID]}}"
}
```

Cet utilisateur est éligible à une connexion sans mot de passe avec un e-mail OTP, un SMS OTP et un nom d'utilisateur-mot de passe. Votre application peut demander à l'utilisateur de faire sa sélection ou effectuer une sélection en fonction de la logique interne. Il procède ensuite à une [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)demande [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)ou qui sélectionne le défi. Supposons que l'utilisateur souhaite effectuer une authentification sans mot de passe avec un message électronique OTP.

```
{
   "ChallengeName": "SELECT_CHALLENGE",
   "ChallengeResponses": { 
      "USERNAME" : "{{testuser}}",
      "ANSWER" : "EMAIL_OTP" 
   },
   "ClientId": "{{1example23456789}}",
   "Session": "{{[Session ID from the previous response]}}"
}
```

Amazon Cognito répond par un `EMAIL_OTP` défi et envoie un code à l'adresse e-mail vérifiée de votre utilisateur. Votre candidature doit ensuite répondre à nouveau à ce défi.

Ce serait également la prochaine réponse au défi si vous en faites la demande `EMAIL_OTP` en tant que`PREFERRED_CHALLENGE`.

```
{
   "ChallengeName": "EMAIL_OTP",
   "ChallengeResponses": {
      "USERNAME" : "{{testuser}}", 
      "EMAIL_OTP_CODE" : "{{123456}}" 
   },
   "ClientId": "{{1example23456789}}",
   "Session": "{{[Session ID from the previous response]}}"
}
```

------

## Connexion sans mot de passe avec clés de passe WebAuthn
<a name="amazon-cognito-user-pools-authentication-flow-methods-passkey"></a>

Les clés d'accès sont sécurisées et imposent un niveau d'effort relativement faible aux utilisateurs. La connexion par clé d'accès utilise des *authentificateurs*, des appareils externes avec lesquels les utilisateurs peuvent s'authentifier. Les mots de passe classiques exposent les utilisateurs à des vulnérabilités telles que le phishing, le devinage de mots de passe et le vol d'informations d'identification. Grâce aux clés d'accès, votre application peut bénéficier de mesures de sécurité avancées sur les téléphones portables et autres appareils connectés ou intégrés aux systèmes d'information. Un processus de connexion par clé d'accès courant commence par un appel à votre appareil qui appelle votre mot de passe ou votre gestionnaire *d'informations d'identification*, par exemple le trousseau iOS ou le gestionnaire de mots de passe Google Chrome. Le gestionnaire d'informations d'identification intégré à l'appareil les invite à sélectionner une clé d'accès et à l'autoriser à l'aide d'un mécanisme d'identification ou de déverrouillage de l'appareil existant. Les téléphones modernes sont équipés de scanners faciaux, de lecteurs d'empreintes digitales, de modèles de déverrouillage et d'autres mécanismes, dont certains répondent à la fois à ce que *vous connaissez* et à *ce que vous utilisez* selon les principes d'une authentification forte. Dans le cas de l'authentification par clé biométrique, les clés d'accès représentent *ce* que vous êtes.

Vous souhaiterez peut-être remplacer les mots de passe par l'authentification par empreinte digitale, faciale ou clé de sécurité. Il s'agit d'une *clé d'accès* ou *WebAuthn*d'une authentification. Il est courant que les développeurs d'applications autorisent les utilisateurs à enregistrer un appareil biométrique après s'être connectés pour la première fois avec un mot de passe. Avec les groupes d'utilisateurs Amazon Cognito, votre application peut configurer cette option de connexion pour les utilisateurs. L'authentification par clé d'accès peut satisfaire aux exigences d'authentification multifactorielle (MFA) lorsque votre groupe d'utilisateurs est configuré sur. `FactorConfiguration` `MULTI_FACTOR_WITH_USER_VERIFICATION` Dans cette configuration, l'authentification par clé d'accès avec vérification de l'utilisateur est considérée comme une authentification multifactorielle.

Les flux d'authentification par mot de passe à usage unique (OTP) ne sont pas compatibles avec l'authentification multifactorielle (MFA) requise dans votre groupe d'utilisateurs. L'authentification par clé d'accès avec vérification de l'utilisateur peut satisfaire aux exigences de la MFA lorsque vous `FactorConfiguration` définissez cette option. `MULTI_FACTOR_WITH_USER_VERIFICATION` Si le MFA est facultatif dans votre groupe d'utilisateurs, les utilisateurs qui ont activé le MFA ne peuvent pas se connecter avec un premier facteur OTP. Les utilisateurs qui n'ont pas de préférence MFA dans un groupe d'utilisateurs optionnel peuvent se connecter sans mot de passe. Pour de plus amples informations, veuillez consulter [Ce qu'il faut savoir sur le MFA pour groupes d'utilisateurs](user-pool-settings-mfa.md#user-pool-settings-mfa-prerequisites).

### Que sont les clés d'accès ?
<a name="amazon-cognito-user-pools-authentication-flow-methods-passkey-what-are"></a>

Les clés d'accès simplifient l'expérience utilisateur en éliminant le besoin de mémoriser ou de saisir OTPs des mots de passe complexes. Les clés de passe sont basées sur WebAuthn les CTAP2 normes élaborées par le [World Wide Web Consortium](https://www.w3.org/TR/webauthn-3/) (W3C) et l'alliance FIDO (Fast Identity Online). *Les navigateurs et les plateformes mettent en œuvre ces normes, fournissent des applications Web ou mobiles APIs pour démarrer un processus d'enregistrement ou d'authentification par clé d'accès, ainsi qu'une interface utilisateur permettant à l'utilisateur de sélectionner un authentificateur par clé d'accès et d'interagir avec celui-ci.*

Lorsqu'un utilisateur enregistre un authentificateur auprès d'un site Web ou d'une application, celui-ci crée une paire de clés publique-privée. WebAuthn les navigateurs et les plateformes soumettent la clé publique au back-end de l'application du site Web ou de l'application. L'authentificateur conserve la clé privée, la clé et les métadonnées relatives à l'utilisateur et à l'application. IDs Lorsque l'utilisateur souhaite s'authentifier dans l'application enregistrée avec son authentificateur enregistré, l'application génère un défi aléatoire. La réponse à ce défi est la signature numérique du défi générée avec la clé privée de l'authentificateur pour cette application et cet utilisateur, ainsi que les métadonnées pertinentes. Le navigateur ou la plateforme d'application reçoit la signature numérique et la transmet au back-end de l'application. L'application valide ensuite la signature avec la clé publique enregistrée.

**Note**  
Votre application ne reçoit aucun secret d'authentification fourni par les utilisateurs à leur authentificateur, pas plus qu'elle ne reçoit d'informations sur la clé privée.

Voici quelques exemples et fonctionnalités des authentificateurs actuellement sur le marché. Un authentificateur peut répondre à l'une ou à l'ensemble de ces catégories.
+ Certains authentificateurs vérifient *l'utilisateur* à l'aide de facteurs tels qu'un code PIN, une saisie biométrique avec un visage ou une empreinte digitale, ou un mot de passe avant d'accorder l'accès, garantissant ainsi que seul l'utilisateur légitime peut autoriser les actions. Les autres authentificateurs ne disposent pas de fonctionnalités de vérification utilisateur, et certains peuvent ignorer la vérification utilisateur lorsqu'une application ne l'exige pas.
+ Certains authentificateurs, par exemple les jetons YubiKey matériels, sont portables. Ils communiquent avec les appareils via des connexions USB, Bluetooth ou NFC. Certains authentificateurs sont locaux et liés à une plate-forme, par exemple Windows Hello sur un PC ou Face ID sur un iPhone. Un authentificateur lié à l'appareil peut être transporté par l'utilisateur s'il est suffisamment petit, comme un appareil mobile. Parfois, les utilisateurs peuvent connecter leur authentificateur matériel à de nombreuses plateformes différentes grâce à une communication sans fil. Par exemple, les utilisateurs de navigateurs de bureau peuvent utiliser leur smartphone comme authentificateur par clé d'accès lorsqu'ils scannent un code QR.
+ Certaines clés d'accès liées à la plateforme sont synchronisées avec le cloud afin de pouvoir être utilisées à partir de plusieurs emplacements. Par exemple, les clés d'accès Face ID sur les iPhones synchronisent les métadonnées des clés d'accès avec les comptes Apple des utilisateurs dans leur trousseau iCloud. Ces clés d'accès permettent une authentification fluide sur tous les appareils Apple, au lieu d'obliger les utilisateurs à enregistrer chaque appareil indépendamment. Les applications d'authentification logicielles telles que 1Password, Dashlane et Bitwarden synchronisent les clés d'accès sur toutes les plateformes sur lesquelles l'utilisateur a installé l'application.

En WebAuthn termes de terminologie, les sites Web et les applications sont *des parties fiables*. Chaque clé d'accès est associée à un identifiant de partie utilisatrice spécifique, un identifiant unifié qui représente les sites Web ou les applications qui acceptent l'authentification par clé d'accès. Les développeurs doivent sélectionner avec soin leur identifiant de partie utilisatrice afin de disposer de la bonne portée de l'authentification. Un identifiant de partie de confiance typique est le nom de domaine racine d'un serveur Web. Une clé d'accès avec cette spécification d'identifiant de partie utilisatrice peut authentifier ce domaine et ces sous-domaines. Les navigateurs et les plateformes refusent l'authentification par clé d'accès lorsque l'URL du site Web auquel un utilisateur souhaite accéder ne correspond pas à l'identifiant de la partie utilisatrice. De même, pour les applications mobiles, une clé d'accès ne peut être utilisée que si le chemin de l'application est présent dans les fichiers d'`.well-known`association que l'application met à disposition sur le chemin indiqué par l'identifiant de la partie utilisatrice.

Les clés d'accès sont *détectables*. Ils peuvent être automatiquement reconnus et utilisés par un navigateur ou une plateforme sans que l'utilisateur ait à saisir un nom d'utilisateur. Lorsqu'un utilisateur visite un site Web ou une application qui prend en charge l'authentification par clé d'accès, il peut choisir parmi une liste de clés d'accès que le navigateur ou la plateforme connaît déjà, ou il peut scanner un code QR.

### Comment Amazon Cognito implémente-t-il l'authentification par clé d'accès ?
<a name="amazon-cognito-user-pools-authentication-flow-methods-passkey-cognito"></a>

**Les clés d'accès sont une fonctionnalité optionnelle disponible dans tous les [plans de fonctionnalités](cognito-sign-in-feature-plans.md), à l'exception de Lite.** Il n'est disponible que dans le [flux d'authentification basé sur les choix](authentication-flows-selection-sdk.md#authentication-flows-selection-choice). Avec la [connexion gérée](authentication-flows-selection-managedlogin.md), Amazon Cognito gère la logique de l'authentification par clé d'accès. Vous pouvez également utiliser l'[API des groupes d'utilisateurs Amazon Cognito AWS SDKs](#amazon-cognito-user-pools-authentication-flow-methods) pour effectuer une authentification par clé d'accès dans le back-end de votre application.

Amazon Cognito reconnaît les clés d'accès créées à l'aide de l'un des deux algorithmes cryptographiques asymétriques ES256 (-7) et (-257). RS256 La plupart des authentificateurs prennent en charge les deux algorithmes. Par défaut, les utilisateurs peuvent configurer n'importe quel type d'authentificateur, par exemple des jetons matériels, des téléphones intelligents mobiles et des applications d'authentification logicielle. Amazon Cognito ne prend actuellement pas en charge l'application des [attestations](https://csrc.nist.gov/glossary/term/attestation).

Dans votre groupe d'utilisateurs, vous pouvez configurer la vérification des utilisateurs pour qu'elle soit préférée ou obligatoire. Ce paramètre est défini par défaut sur préféré dans les demandes d'API qui ne fournissent pas de valeur, et le paramètre préféré est sélectionné par défaut dans la console Amazon Cognito. Lorsque vous définissez la validation utilisateur sur « préféré », les utilisateurs peuvent configurer des authentificateurs qui ne disposent pas de la fonctionnalité de vérification utilisateur, et les opérations d'enregistrement et d'authentification peuvent réussir sans vérification de l'utilisateur. Pour rendre obligatoire la vérification des utilisateurs lors de l'enregistrement et de l'authentification par clé d'accès, remplacez ce paramètre par obligatoire.

L'ID de la partie de confiance (RP) que vous avez défini dans la configuration de votre clé d'accès est une décision importante. Lorsque vous ne spécifiez pas le contraire et que la [version de votre marque de domaine](managed-login-branding.md) est une connexion gérée, votre groupe d'utilisateurs attend par défaut le nom de votre [domaine personnalisé](cognito-user-pools-add-custom-domain.md) comme identifiant RP. Si vous n'avez pas de domaine personnalisé et que vous ne spécifiez pas le contraire, votre groupe d'utilisateurs utilise par défaut un ID RP de votre domaine [préfixe](cognito-user-pools-assign-domain-prefix.md). Vous pouvez également configurer votre RP ID pour qu'il soit un nom de domaine ne figurant pas dans la liste des suffixes publics (PSL). La saisie de votre identifiant RP s'applique à l'enregistrement et à l'authentification par clé d'accès dans le cadre de la connexion gérée et de l'authentification du SDK. La clé de passe ne fonctionne que dans les applications mobiles où Amazon Cognito peut localiser `.well-known` un fichier d'association avec votre ID RP comme domaine. Il est recommandé de déterminer et de définir la valeur de votre identifiant de partie de confiance avant que votre site Web ou votre application ne soit accessible au public. Si vous modifiez votre identifiant RP, vos utilisateurs doivent s'enregistrer à nouveau avec le nouveau RP ID.

Chaque utilisateur peut enregistrer jusqu'à 20 clés d'accès. Ils ne peuvent enregistrer une clé d'accès qu'après s'être connectés au moins une fois à votre groupe d'utilisateurs. La connexion gérée élimine les efforts importants liés à l'enregistrement par clé d'accès. Lorsque vous activez l'authentification par clé d'accès pour un groupe d'utilisateurs et un client d'application, votre groupe d'utilisateurs doté d'un domaine de connexion géré rappelle aux utilisateurs finaux d'enregistrer une clé d'accès après avoir ouvert un nouveau compte utilisateur. Vous pouvez également appeler le navigateur des utilisateurs à tout moment pour les diriger vers une page de connexion gérée pour l'enregistrement par clé d'accès. Les utilisateurs doivent fournir un nom d'utilisateur pour qu'Amazon Cognito puisse lancer l'authentification par clé d'accès. La connexion gérée gère cela automatiquement. La page de connexion invite à saisir un nom d'utilisateur, confirme que l'utilisateur possède au moins une clé d'accès enregistrée, puis invite à se connecter par clé d'accès. De même, les applications basées sur le SDK doivent demander un nom d'utilisateur et le fournir dans la demande d'authentification.

Lorsque vous configurez l'authentification du groupe d'utilisateurs à l'aide de clés d'accès et que vous disposez d'un domaine personnalisé et d'un domaine préfixe, l'ID RP est par défaut le nom de domaine complet (FQDN) de votre domaine personnalisé. **Pour définir un domaine de préfixe comme ID RP dans la console Amazon Cognito, supprimez votre domaine personnalisé ou entrez le FQDN du domaine de préfixe en tant que domaine tiers.**

------
#### [ Activate passkey sign-in ]

**Console**  
Pour activer la connexion à l'aide de clés d'accès, configurez votre groupe d'utilisateurs pour autoriser la connexion principale avec un ou plusieurs types sans mot de passe, puis configurez votre client d'application pour autoriser le flux. `USER_AUTH` Dans la console Amazon Cognito, accédez au menu de **connexion** sous **Authentification** dans la configuration de votre groupe d'utilisateurs. **Modifiez **les options pour la connexion basée sur les choix** et ajoutez le mot de **passe à** la liste des choix disponibles.**

Accédez au menu **Méthodes d'authentification** et modifiez le mot de **passe.**
+ La **vérification utilisateur** est le paramètre permettant de déterminer si votre groupe d'utilisateurs nécessite des dispositifs à clé d'accès qui effectuent des vérifications supplémentaires pour vérifier que l'utilisateur actuel est autorisé à utiliser une clé d'accès. Pour encourager les utilisateurs à configurer un appareil avec validation utilisateur, mais sans l'exiger, sélectionnez **Préféré**. Pour prendre en charge uniquement les appareils dotés d'une vérification utilisateur, sélectionnez **Obligatoire**. Pour plus d'informations, consultez la section [Vérification des utilisateurs](https://www.w3.org/TR/webauthn-2/#user-verification) sur w3.org.
+ Le **domaine pour l'identifiant de partie fiable** est l'identifiant que votre application transmettra aux demandes d'enregistrement par clé d'accès des utilisateurs. Il définit l'objectif de la relation de confiance avec l'émetteur des clés d'accès des utilisateurs. Votre identifiant de partie de confiance peut être : le domaine de votre groupe d'utilisateurs si   
**Domaine Cognito**  
Le [domaine du préfixe](cognito-user-pools-assign-domain-prefix.md) Amazon Cognito de votre groupe d'utilisateurs.  
**Domaine personnalisé**  
Le [domaine personnalisé](cognito-user-pools-add-custom-domain.md) de votre groupe d'utilisateurs.  
**Domaine tiers**  
Domaine des applications qui n'utilisent pas les pages de connexion gérées par les groupes d'utilisateurs. Ce paramètre est généralement associé aux groupes d'utilisateurs qui n'ont pas de [domaine](cognito-user-pools-assign-domain.md) et qui effectuent l'authentification à l'aide d'un AWS SDK et de l'API des groupes d'utilisateurs dans le backend.

Accédez au menu des **clients de l'application** et choisissez un client d'application ou créez-en un nouveau. Sélectionnez **Modifier** et sous **Flux d'authentification**, choisissez **Sélectionner un type d'authentification lors de la connexion : ALLOW\_USER\_AUTH**.

**API/SDK**  
Dans l'API des groupes d'utilisateurs, configurez `SignInPolicy` avec les options de clé d'accès appropriées dans une [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)demande [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)or. L'`WEB_AUTHN`option d'authentification par clé d'accès doit être accompagnée d'au moins une autre option. L'enregistrement par clé d'accès nécessite une session d'authentification existante.

```
"SignInPolicy": { 
    "AllowedFirstAuthFactors": [ 
        "PASSWORD",
        "WEB_AUTHN"
    ]
}
```

Configurez vos préférences de vérification utilisateur et votre identifiant RP dans les `WebAuthnConfiguration` paramètres d'une [SetUserPoolMfaConfig](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserPoolMfaConfig.html#CognitoUserPools-SetUserPoolMfaConfig-request-WebAuthnConfiguration)demande. La `RelyingPartyId` cible prévue des résultats de l'authentification par clé d'accès peut être le préfixe de votre groupe d'utilisateurs ou votre domaine personnalisé, ou un domaine de votre choix.

```
"WebAuthnConfiguration": { 
   "RelyingPartyId": "{{example.auth.us-east-1.amazoncognito.com}}",
   "UserVerification": "{{preferred}}",
   "FactorConfiguration": "{{SINGLE_FACTOR}}"
}
```

Configurez votre client `ExplicitAuthFlows` d'application avec l'option requise dans une [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html)demande [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html)ou.

```
"ExplicitAuthFlows": [ 
   "ALLOW_USER_AUTH"
]
```

------
#### [ Register a passkey (managed login) ]

La connexion gérée gère l'enregistrement des clés d'accès par l'utilisateur. Lorsque l'authentification par clé de passe est active dans votre groupe d'utilisateurs, Amazon Cognito invite les utilisateurs à configurer une clé d'accès lorsqu'ils créent un nouveau compte utilisateur.

Amazon Cognito n'invite pas les utilisateurs à configurer une clé d'accès s'ils se sont déjà inscrits et n'ont pas configuré de clé d'accès, ou si vous avez créé leur compte en tant qu'administrateur. Les utilisateurs dans cet état doivent se connecter à l'aide d'un autre facteur, tel qu'un mot de passe ou un OTP sans mot de passe, avant de pouvoir enregistrer une clé d'accès.

**Pour enregistrer une clé d'accès**

1. Dirigez l'utilisateur vers votre [page de connexion](authorization-endpoint.md).

   ```
   https://{{auth.example.com}}/oauth2/authorize/?client_id={{1example23456789}}&response_type={{code}}&scope={{email+openid+phone}}&redirect_uri={{https%3A%2F%2Fwww.example.com}}
   ```

1. Traitez le résultat de l'authentification fourni par l'utilisateur. Dans cet exemple, Amazon Cognito les redirige `www.example.com` avec un code d'autorisation que votre application échange contre des jetons.

1. Dirigez l'utilisateur vers votre page de clé d'enregistrement. L'utilisateur disposera d'un cookie de navigateur qui conserve sa session de connexion. L'URL du mot de passe prend `client_id` et définit ses `redirect_uri` paramètres. Amazon Cognito autorise uniquement les utilisateurs authentifiés à accéder à cette page. Connectez-vous à votre utilisateur à l'aide d'un mot de passe, d'un e-mail OTP ou d'un SMS OTP, puis appelez une URL correspondant au modèle suivant.

   Vous pouvez également ajouter d'autres [Point de terminaison d’autorisation](authorization-endpoint.md) paramètres à cette requête, tels que `response_type` et`scope`.

   ```
   https://{{auth.example.com}}/passkeys/add?client_id={{1example23456789}}&redirect_uri={{https%3A%2F%2Fwww.example.com}}
   ```

------
#### [ Register a passkey (SDK) ]

Vous enregistrez les informations d'identification par clé d'accès avec les métadonnées d'un [PublicKeyCreationOptions](https://www.w3.org/TR/webauthn-3/#dictdef-publickeycredentialcreationoptions)objet. Vous pouvez générer cet objet avec les informations d'identification d'un utilisateur connecté et les présenter dans une demande d'API à son émetteur de clé d'accès. L'émetteur renverra un objet [RegistrationResponseJSON](https://www.w3.org/TR/webauthn-3/#dictdef-registrationresponsejson) qui confirme l'enregistrement de la clé d'accès.

Pour démarrer le processus d'enregistrement par clé d'accès, connectez un utilisateur à l'aide d'une option de connexion existante. Autorisez la demande [d'[StartWebAuthnRegistration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_StartWebAuthnRegistration.html)API autorisée par](authentication-flows-public-server-side.md#user-pool-apis-auth-unauth-token-auth) jeton avec le jeton d'accès de l'utilisateur actuel. Le corps d'un exemple de `GetWebAuthnRegistrationOptions` demande est présenté ci-dessous.

```
{
   "AccessToken": "eyJra456defEXAMPLE"
}
```

La réponse de votre groupe d'utilisateurs contient l'`PublicKeyCreationOptions`objet. Présentez cet objet dans une demande d'API à l'émetteur de l'utilisateur. Il fournit des informations telles que la clé publique et l'identifiant de la partie utilisatrice. L'émetteur répondra par un `RegistrationResponseJSON` objet.

Présentez la réponse d'enregistrement dans une demande d'[CompleteWebAuthnRegistration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CompleteWebAuthnRegistration.html)API, à nouveau autorisée avec le jeton d'accès de l'utilisateur. Lorsque votre groupe d'utilisateurs répond par une réponse HTTP 200 avec un corps vide, le mot de passe de votre utilisateur est enregistré.

------
#### [ Sign in with a passkey ]

La connexion sans mot de passe n'a pas de nom `AuthFlow` que vous pouvez spécifier dans et. [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) Vous devez plutôt déclarer un `AuthFlow` de `USER_AUTH` et demander une option de connexion ou choisir votre option sans mot de passe dans la réponse de votre groupe d'utilisateurs. Pour connecter un utilisateur à une application, configurez le corps de votre `AdminInitiateAuth` demande `InitiateAuth` ou de votre demande comme suit. Cet ensemble de paramètres est le minimum requis pour la connexion. Des paramètres supplémentaires sont disponibles.

Dans cet exemple, nous savons que l'utilisateur souhaite se connecter avec un mot de passe, et nous ajoutons un `PREFERRED_CHALLENGE` paramètre.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "{{testuser}}",
      "PREFERRED_CHALLENGE" : "WEB_AUTHN"
   },
   "ClientId": "{{1example23456789}}"
}
```

Amazon Cognito répond par une question de sécurité `WEB_AUTHN`. Votre candidature doit répondre à ce défi. Lancez une demande de connexion auprès du fournisseur de clé d'accès de l'utilisateur. Il renverra un objet [AuthenticationResponseJSON](https://www.w3.org/TR/webauthn-3/#dictdef-authenticationresponsejson).

```
{
   "ChallengeName": "WEB_AUTHN",
   "ChallengeResponses": {
      "USERNAME" : "{{testuser}}", 
      "CREDENTIAL" : "{{{AuthenticationResponseJSON}}}" 
   },
   "ClientId": "{{1example23456789}}",
   "Session": "{{[Session ID from the previous response]}}"
}
```

------

## MFA après connexion
<a name="amazon-cognito-user-pools-authentication-flow-methods-mfa"></a>

Vous pouvez configurer les utilisateurs qui se connectent à l'aide d'un flux de nom d'utilisateur et de mot de passe pour qu'ils soient invités à effectuer une vérification supplémentaire à l'aide d'un mot de passe à usage unique provenant d'un e-mail, d'un message SMS ou d'une application de génération de code. La MFA est différente de la connexion sans mot de passe avec des mots de passe à usage unique. Cependant, les clés d'accès avec vérification utilisateur peuvent satisfaire aux exigences de la MFA lorsque vous les `FactorConfiguration` configurez `MULTI_FACTOR_WITH_USER_VERIFICATION` comme dans votre groupe d'utilisateurs. `WebAuthnConfiguration` Pour les flux basés sur des mots de passe, la MFA dans les groupes d'utilisateurs est un modèle défi-réponse dans lequel l'utilisateur démontre d'abord qu'il connaît le mot de passe, puis qu'il a accès à son appareil à second facteur enregistré.

**Ressources de mise en œuvre**
+ [Ajout de l’authentification MFA à un groupe d’utilisateurs](user-pool-settings-mfa.md)

## Actualiser les jetons
<a name="amazon-cognito-user-pools-authentication-flow-methods-refresh"></a>

Lorsque vous souhaitez que les utilisateurs restent connectés sans saisir à nouveau leurs informations d'identification, les *jetons d'actualisation* sont l'outil dont dispose votre application pour conserver la session d'un utilisateur. Les applications peuvent présenter des jetons d'actualisation à votre groupe d'utilisateurs et les échanger contre de nouveaux identifiants et jetons d'accès. Grâce à l'actualisation des jetons, vous pouvez vous assurer qu'un utilisateur connecté est toujours actif, obtenir des informations actualisées sur les attributs et mettre à jour les droits de contrôle d'accès sans intervention de l'utilisateur.

**Ressources de mise en œuvre**
+ [Actualiser les jetons](amazon-cognito-user-pools-using-the-refresh-token.md)

## Authentification personnalisée
<a name="amazon-cognito-user-pools-authentication-flow-methods-custom"></a>

Vous souhaiterez peut-être configurer une méthode d'authentification pour vos utilisateurs qui n'est pas répertoriée ici. Vous pouvez le faire grâce à une *authentification personnalisée à l'*aide de déclencheurs Lambda. Dans une séquence de fonctions Lambda, Amazon Cognito lance un défi, pose une question à laquelle les utilisateurs doivent répondre, vérifie l'exactitude de la réponse, puis détermine si un autre défi doit être lancé. Les questions et réponses peuvent inclure des questions de sécurité, des demandes adressées à un service CAPTCHA, des demandes à une API de service MFA externe, ou tout cela en séquence.

**Ressources de mise en œuvre**
+ [Déclencheurs Lambda création d'une stimulation d'authentification personnalisée](user-pool-lambda-challenge.md)

### Flux d'authentification personnalisé
<a name="amazon-cognito-user-pools-custom-authentication-flow"></a>

Les groupes d'utilisateurs Amazon Cognito permettent aussi d'utiliser les flux d'authentification personnalisés, qui peuvent vous aider à créer un modèle d'authentification basé sur une demande de vérification/réponse à l'aide des déclencheurs AWS Lambda .

Le flux d'authentification personnalisé permet des cycles de stimulation/réponse personnalisés pour répondre à des besoins différents. Le flux commence par un appel à l'opération d'API `InitiateAuth` qui indique le type d'authentification qui sera utilisé, et fournit les paramètres d'authentification initiaux. Amazon Cognito répond à l'appel `InitiateAuth` avec l'un des types d'informations suivants : 
+ Une stimulation pour l'utilisateur avec une session et des paramètres.
+ Une erreur si l'utilisateur ne parvient pas à s'authentifier.
+ Les jetons d'identification, d'accès et d'actualisation si les paramètres fournis dans l'appel `InitiateAuth` sont suffisants pour connecter l'utilisateur. (En règle générale, l'utilisateur ou l'appli doit d'abord répondre à une stimulation, mais votre code personnalisé doit le déterminer.)

 Si Amazon Cognito répond à l'appel `InitiateAuth` avec une demande de vérification, l'application recueille davantage d'informations et appelle l'opération `RespondToAuthChallenge`. Cet appel fournit les réponses à la demande de vérification et les renvoie à la session. Amazon Cognito répond à l'appel `RespondToAuthChallenge` de la même manière qu'à l'appel `InitiateAuth`. Si l'utilisateur s'est connecté, Amazon Cognito fournit des jetons ou si l'utilisateur n'est pas connecté, Amazon Cognito fournit une autre demande de vérification ou une erreur. Si Amazon Cognito renvoie une autre demande de vérification, la séquence se reproduit et l'application appelle `RespondToAuthChallenge` jusqu'à ce que l'utilisateur se connecte avec succès ou qu'une erreur soit retournée. Pour plus d'informations sur les opérations d'API `InitiateAuth` et `RespondToAuthChallenge`, consultez la [documentation sur les API](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html). 

### Flux d'authentification personnalisé et stimulations
<a name="Custom-authentication-flow-and-challenges"></a>

Pour initier un flux d'authentification personnalisé, une appli peut appeler `InitiateAuth` avec `CUSTOM_AUTH` comme paramètre `Authflow`. Avec un flux d'authentification personnalisé, trois déclencheurs Lambda contrôlent les demandes de vérification et la vérification des réponses.
+ Le déclencheur Lambda `DefineAuthChallenge` utilise en entrée un tableau de session de demandes de vérification et de réponses précédentes. Il affiche ensuite le nom de la demande de vérification suivante et les booléens qui indiquent si l'utilisateur est authentifié et peut recevoir des jetons. Ce déclencheur Lambda est une machine d'état qui contrôle le parcours de l'utilisateur au fil des stimulations.
+ Le déclencheur Lambda `CreateAuthChallenge` prend un nom de demande de vérification en entrée et génère le défi et les paramètres permettant d'évaluer la réponse. Quand `DefineAuthChallenge` retourne `CUSTOM_CHALLENGE` comme demande de vérification suivante, le flux d'authentification appelle `CreateAuthChallenge`. Le déclencheur Lambda `CreateAuthChallenge` transmet le type de demande de vérification suivant dans le paramètre de métadonnées de demande de vérification.
+ La fonction Lambda `VerifyAuthChallengeResponse` évalue la réponse et renvoie une valeur booléenne indiquant si la réponse était valide.

Un flux d'authentification personnalisé peut également utiliser une combinaison de stimulations intégrées, telles que la vérification de mot de passe via le protocole SRP et la MFA par SMS. Il peut utiliser des stimulations personnalisées, telles que CAPTCHA ou des questions secrètes.

### Utiliser la vérification de mot de passe par protocole SRP dans le flux d'authentification personnalisé
<a name="Using-SRP-password-verification-in-custom-authentication-flow"></a>

Si vous souhaitez inclure le protocole SRP dans un flux d'authentification personnalisé, vous devez commencer par SRP.
+ Pour lancer la vérification de mot de passe par protocole SRP dans un flux personnalisé, l'appli appelle `InitiateAuth` avec `CUSTOM_AUTH` en tant que `Authflow`. Dans le mappage `AuthParameters`, la demande de votre application inclut `SRP_A:` (la valeur SRP A) et `CHALLENGE_NAME: SRP_A`.
+ Le flux `CUSTOM_AUTH` invoque le déclencheur Lambda `DefineAuthChallenge` avec une session initiale de `challengeName: SRP_A` et `challengeResult: true`. Votre fonction Lambda répond avec `challengeName: PASSWORD_VERIFIER`, `issueTokens: false` et `failAuthentication: false`.
+  L'appli doit ensuite appeler `RespondToAuthChallenge` avec `challengeName: PASSWORD_VERIFIER` et les autres paramètres requis pour le protocole SRP dans la carte `challengeResponses`. 
+ Si Amazon Cognito vérifie le mot de passe, `RespondToAuthChallenge` appelle le déclencheur Lambda `DefineAuthChallenge` avec une deuxième session de `challengeName: PASSWORD_VERIFIER` et `challengeResult: true`. À ce stade, le déclencheur Lambda `DefineAuthChallenge` répond avec `challengeName: CUSTOM_CHALLENGE` pour démarrer la stimulation personnalisée.
+ Si l'authentification MFA est activée pour un utilisateur, une fois qu'Amazon Cognito a vérifié le mot de passe, l'utilisateur est invité à configurer MFA ou à se connecter avec MFA.

**Note**  
La page web de connexion hébergée Amazon Cognito ne peut pas activer les [Déclencheurs Lambda création d'une stimulation d'authentification personnalisée](user-pool-lambda-challenge.md).

Pour plus d'informations sur les déclencheurs Lambda, ainsi qu'un exemple de code, consultez [Personnalisation des flux de travail de groupe d'utilisateurs avec des déclencheurs Lambda](cognito-user-pools-working-with-lambda-triggers.md).

## Flux d'authentification pour la migration d'utilisateurs
<a name="amazon-cognito-user-pools-user-migration-authentication-flow"></a>

Un déclencheur Lambda de migration d'utilisateur facilite la migration d'utilisateurs à partir d'un système de gestion des utilisateurs hérité vers votre groupe d'utilisateurs. Si vous choisissez le flux d'authentification `USER_PASSWORD_AUTH`, les utilisateurs n'ont pas à réinitialiser leurs mots de passe durant la migration des utilisateurs. Ce flux envoie les mots de passe de vos utilisateurs au service via une connexion SSL cryptée pendant l'authentification.

Lorsque vous avez migré tous vos utilisateurs, changez de flux et passez au flux SRP plus sécurisé. Le flux SRP n'envoie aucun mot de passe sur le réseau.

Pour en savoir plus sur les déclencheurs Lambda, consultez [Personnalisation des flux de travail de groupe d'utilisateurs avec des déclencheurs Lambda](cognito-user-pools-working-with-lambda-triggers.md).

Pour plus d'informations sur la migration d'utilisateurs avec un déclencheur Lambda, consultez [Importation d'utilisateurs avec un déclencheur Lambda de migration d'utilisateur](cognito-user-pools-import-using-lambda.md).