

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.

# Authentification auprès des groupes d'utilisateurs Amazon Cognito
<a name="authentication"></a>

Amazon Cognito propose plusieurs méthodes d'authentification des utilisateurs. Les utilisateurs peuvent se connecter à l'aide de mots de WebAuthn passe et de clés d'accès. Amazon Cognito peut leur envoyer un mot de passe à usage unique par e-mail ou SMS. Vous pouvez implémenter des fonctions Lambda qui orchestrent votre propre séquence de défis et de réponses. Il s'agit de *flux d'authentification*. Dans les flux d'authentification, les utilisateurs fournissent un secret et Amazon Cognito le vérifie, puis émet des jetons Web JSON (JWTs) pour que les applications puissent les traiter avec les bibliothèques OIDC. Dans ce chapitre, nous verrons comment configurer vos groupes d'utilisateurs et vos clients d'applications pour différents flux d'authentification dans différents environnements d'applications. Vous découvrirez les options relatives à l'utilisation des pages de connexion hébergées de la connexion gérée et à la création de votre propre logique et de votre propre interface dans un AWS SDK.

Tous les groupes d'utilisateurs, que vous possédiez un domaine ou non, peuvent authentifier les utilisateurs dans l'API des groupes d'utilisateurs. Si vous ajoutez un domaine à votre groupe d'utilisateurs, vous pouvez utiliser les [points de terminaison de groupe d'utilisateurs](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-userpools-server-contract-reference.html). L'API des groupes d'utilisateurs prend en charge divers modèles d'autorisation et flux de demandes pour les demandes d'API.

Pour vérifier l'identité des utilisateurs, Amazon Cognito prend en charge les flux d'authentification qui intègrent des types de défis en plus des mots de passe tels que les mots de passe à usage unique et les clés d'accès pour e-mails et SMS.

**Topics**
+ [Mettre en œuvre des flux d'authentification](#authentication-implement)
+ [Ce qu'il faut savoir sur l'authentification auprès des groupes d'utilisateurs](#authentication-flow-things-to-know)
+ [Exemple de session d'authentification](#amazon-cognito-user-pools-authentication-flow)
+ [Configuration des méthodes d'authentification pour la connexion gérée](authentication-flows-selection-managedlogin.md)
+ [Gérez les méthodes d'authentification dans AWS SDKs](authentication-flows-selection-sdk.md)
+ [Flux d’authentification](amazon-cognito-user-pools-authentication-flow-methods.md)
+ [Modèles d'autorisation pour l'authentification par API et SDK](authentication-flows-public-server-side.md)

## Mettre en œuvre des flux d'authentification
<a name="authentication-implement"></a>

Que vous implémentiez une [connexion gérée](authentication-flows-selection-managedlogin.md) ou une [interface d'application personnalisée](authentication-flows-selection-sdk.md) avec un AWS SDK pour l'authentification, vous devez configurer votre client d'application pour les types d'authentification que vous souhaitez implémenter. Les informations suivantes décrivent la configuration des flux d'authentification dans vos [clients d'application](user-pool-settings-client-apps.md) et dans votre application.

------
#### [ App client supported flows ]

Vous pouvez configurer les flux pris en charge pour les clients de votre application dans la console Amazon Cognito ou avec l'API d'un AWS SDK. Après avoir configuré votre client d'application pour prendre en charge ces flux, vous pouvez les déployer dans votre application.

La procédure suivante configure les flux d'authentification disponibles pour un client d'application avec la console Amazon Cognito.

**Pour configurer un client d'application pour les flux d'authentification (console)**

1. Connectez-vous AWS et accédez à la console des [groupes d'utilisateurs Amazon Cognito](https://console.aws.amazon.com/cognito/v2/idp). Choisissez un groupe d'utilisateurs ou créez-en un nouveau.

1. Dans la configuration de votre groupe d'utilisateurs, sélectionnez le menu **App clients**. Choisissez un client d'application ou créez-en un nouveau.

1. Sous **Informations sur le client de l'application**, sélectionnez **Modifier**.

1. Sous **Flux clients de l'application**, choisissez les flux d'authentification que vous souhaitez prendre en charge.

**Pour configurer un client d'application pour les flux d'authentification (API/SDK)**  
Pour configurer les flux d'authentification disponibles pour un client d'application avec l'API Amazon Cognito, définissez la valeur de `ExplicitAuthFlows` in a [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html#CognitoUserPools-CreateUserPoolClient-request-ExplicitAuthFlows)or [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html#CognitoUserPools-UpdateUserPoolClient-request-ExplicitAuthFlows)request. Voici un exemple qui fournit un mot de passe à distance sécurisé (SRP) et une authentification basée sur les choix à un client.

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

Lorsque vous configurez des flux pris en charge par le client de l'application, vous pouvez spécifier les options et valeurs d'API suivantes.


**Support du flux client de l'application**  

| Flux d'authentification | Compatibilité | Console | API  | 
| --- | --- | --- | --- | 
| [Authentification basée sur le choix](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) | Côté serveur, côté client | Sélectionnez un type d'authentification lors de la connexion | ALLOW\_USER\_AUTH | 
| [Connectez-vous avec des mots de passe persistants](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-password) | Côté client | Connectez-vous avec votre nom d'utilisateur et votre mot de passe | ALLOW\_USER\_PASSWORD\_AUTH | 
| [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) | Côté serveur, côté client | Connectez-vous avec un mot de passe à distance sécurisé (SRP) | ALLOW\_USER\_SRP\_AUTH | 
| [Actualiser les jetons](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-refresh) | Côté serveur, côté client | Obtenez de nouveaux jetons d'utilisateur à partir de sessions authentifiées existantes | ALLOW\_REFRESH\_TOKEN\_AUTH | 
| [Authentification côté serveur](authentication-flows-public-server-side.md#amazon-cognito-user-pools-server-side-authentication-flow) | Côté serveur | Connectez-vous à l'aide des informations d'identification administratives côté serveur | ALLOW\_ADMIN\_USER\_PASSWORD\_AUTH | 
| [Authentification personnalisée](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-custom) | Applications personnalisées côté serveur et côté client. Non compatible avec la connexion gérée. | Connectez-vous à l'aide de flux d'authentification personnalisés à partir de déclencheurs Lambda | ALLOW\_CUSTOM\_AUTH | 

------
#### [ Implement flows in your application ]

La connexion gérée rend automatiquement les options d'authentification que vous avez configurées disponibles sur vos pages de connexion. Dans les applications personnalisées, lancez l'authentification par une déclaration du flux initial.
+ Pour choisir parmi une liste d'options de flux pour un utilisateur, déclarez l'[authentification basée sur les choix](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) auprès du `USER_AUTH` flux. [Ce flux propose des méthodes d'authentification qui ne sont pas disponibles dans les flux d'authentification basés sur le client, par exemple l'authentification par [clé et sans mot](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passkey) de passe.](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless)
+ Pour choisir votre flux d'authentification dès le départ, déclarez l'[authentification basée sur le client](authentication-flows-selection-sdk.md#authentication-flows-selection-client) avec tout autre flux disponible dans le client de votre application.

Lorsque vous connectez des utilisateurs, le corps de votre [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#CognitoUserPools-AdminInitiateAuth-request-AuthFlow)demande [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-AuthFlow)ou de votre demande doit inclure un `AuthFlow` paramètre.

Authentification basée sur les choix :

```
"AuthFlow": "USER_AUTH"
```

Authentification basée sur le client avec SRP :

```
"AuthFlow": "USER_SRP_AUTH"
```

------

## Ce qu'il faut savoir sur l'authentification auprès des groupes d'utilisateurs
<a name="authentication-flow-things-to-know"></a>

Tenez compte des informations suivantes lors de la conception de votre modèle d'authentification avec les groupes d'utilisateurs Amazon Cognito.

**Flux d'authentification dans la connexion gérée et dans l'interface utilisateur hébergée**  
La [connexion gérée](cognito-user-pools-managed-login.md) offre plus d'options d'authentification que l'interface utilisateur hébergée classique. Par exemple, les utilisateurs peuvent effectuer une authentification sans mot de passe et par clé d'accès uniquement dans le cadre d'une connexion gérée.

**Les flux d'authentification personnalisés sont uniquement disponibles dans l'authentification du AWS SDK**  
Vous ne pouvez pas créer de *flux d'authentification personnalisés*, ni [d'authentification personnalisée avec des déclencheurs Lambda](user-pool-lambda-challenge.md), avec une connexion gérée ou l'interface utilisateur hébergée classique. L'authentification personnalisée est disponible dans [l'authentification avec AWS SDKs](authentication-flows-selection-sdk.md).

**Connexion gérée pour la connexion à un fournisseur d'identité externe (IdP)**  
Vous ne pouvez pas connecter les utilisateurs par le biais [d' IdPsune authentification [tierce](cognito-user-pools-identity-federation.md) avec AWS SDKs](authentication-flows-selection-sdk.md). Vous devez implémenter la connexion gérée ou l'interface utilisateur hébergée classique, rediriger vers l'objet d'authentification obtenu IdPs, puis le traiter avec les bibliothèques OIDC de votre application. Pour plus d'informations sur la connexion gérée, consultez[Connexion gérée par le groupe d'utilisateurs](cognito-user-pools-managed-login.md).

**Effet de l'authentification sans mot de passe sur les autres fonctionnalités de l'utilisateur**  
L'activation de la connexion sans mot de passe avec des mots de [[passe ou des clés](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passkey) d'accès à usage unique](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless) dans votre groupe d'utilisateurs et votre client d'application a un effet sur la création et la migration des utilisateurs. Lorsque la connexion sans mot de passe est active :  

1. Les administrateurs peuvent créer des utilisateurs sans mot de passe. Le modèle de message d'invitation par défaut change pour ne plus inclure l'espace réservé au `{###}` mot de passe. Pour de plus amples informations, veuillez consulter [Création de comptes d’utilisateur en tant qu’administrateur](how-to-create-user-accounts.md).

1. Pour les [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)opérations basées sur le SDK, les utilisateurs ne sont pas tenus de fournir un mot de passe lors de leur inscription. La connexion gérée et l'interface utilisateur hébergée nécessitent un mot de passe sur la page d'inscription, même si l'authentification sans mot de passe est autorisée. Pour de plus amples informations, veuillez consulter [Inscription et confirmation des comptes d’utilisateur](signing-up-users-in-your-app.md).

1. Les utilisateurs importés à partir d'un fichier CSV peuvent se connecter immédiatement à l'aide des options sans mot de passe, sans réinitialiser leur mot de passe, si leurs attributs incluent une adresse e-mail ou un numéro de téléphone pour une option de connexion sans mot de passe disponible. Pour de plus amples informations, veuillez consulter [Importation d'utilisateurs dans des groupes d'utilisateurs depuis un fichier CSV](cognito-user-pools-using-import-tool.md).

1. L'authentification sans mot de passe n'invoque pas le déclencheur [Lambda de migration des utilisateurs](user-pool-lambda-migrate-user.md).

1. Les utilisateurs qui se connectent avec un premier facteur de mot de passe à usage unique (OTP) ne peuvent pas ajouter de [facteur d'authentification multifactorielle (MFA)](user-pool-settings-mfa.md) à leur session. Les clés d'accès avec vérification utilisateur peuvent satisfaire aux exigences de la MFA lorsqu'elles sont configurées avec. `MULTI_FACTOR_WITH_USER_VERIFICATION`

**La partie qui utilise le mot de passe ne URLs peut pas figurer sur la liste des suffixes publics**  
Vous pouvez utiliser les noms de domaine que vous possédez, par exemple`www.example.com`, comme ID de partie de confiance (RP) dans la configuration de votre clé d'accès. Cette configuration est destinée à prendre en charge les applications personnalisées qui s'exécutent sur des domaines que vous possédez. La [liste de suffixes publics](https://publicsuffix.org/), ou PSL, contient des domaines de haut niveau protégés. Amazon Cognito renvoie un message d'erreur lorsque vous tentez de définir l'URL de votre RP vers un domaine sur la PSL.

**Topics**
+ [Durée du flux de session d'authentification](#authentication-flow-session-duration)
+ [Comportement de verrouillage en cas d'échec des tentatives de connexion](#authentication-flow-lockout-behavior)

### Durée du flux de session d'authentification
<a name="authentication-flow-session-duration"></a>

En fonction des caractéristiques de votre groupe d'utilisateurs, vous pouvez être amené à relever plusieurs défis `RespondToAuthChallenge` avant que votre application ne récupère les jetons sur Amazon Cognito. `InitiateAuth` Amazon Cognito inclut une chaîne de session dans la réponse à chaque demande. Pour combiner vos requêtes d'API dans un flux d'authentification, incluez la chaîne de session de la réponse à la demande précédente dans chaque demande suivante. Par défaut, vos utilisateurs disposent de trois minutes pour terminer chaque défi avant l'expiration de la chaîne de session. Pour modifier cette période, modifiez la **Durée de session d'authentification** du client d'application. La procédure suivante explique comment modifier ce paramètre dans la configuration de votre client d'application.

**Note**  
Les paramètres de **durée de session du flux d'authentification** s'appliquent à l'authentification avec l'API des groupes d'utilisateurs Amazon Cognito. La connexion gérée définit la durée de session à 3 minutes pour l'authentification multifactorielle et à 8 minutes pour les codes de réinitialisation du mot de passe.

------
#### [ Amazon Cognito console ]

**Pour configurer la durée de session du flux d'authentification du client d'application (AWS Management Console)**

1. À partir de l’onglet **App integration** (Intégration d'applications) dans votre groupe d'utilisateurs, sélectionnez le nom de votre client d'application à partir du conteneur **App clients and analytics** (Clients d'applications et analyses).

1. Choisissez **Modifier** dans le conteneur **Informations sur le client d'application**.

1. Modifiez la valeur de la **durée de session du flux d'authentification** par la durée de validité que vous souhaitez, en minutes, pour les codes MFA des SMS et des e-mails. Cela modifie également le temps dont dispose chaque utilisateur pour réaliser un défi d'authentification dans votre client d'application.

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

------
#### [ User pools API ]

**Pour configurer la durée de session du flux d'authentification du client d'application (API Amazon Cognito)**

1. Préparez une demande `UpdateUserPoolClient` avec vos paramètres de groupe d’utilisateurs existants à partir d'une demande `DescribeUserPoolClient`. Votre demande `UpdateUserPoolClient` doit inclure toutes les propriétés du client d'application existant.

1. Modifiez la valeur de `AuthSessionValidity` et indiquez la durée de validité (en minutes) choisie pour les codes MFA par SMS. Cela modifie également le temps dont dispose chaque utilisateur pour réaliser un défi d'authentification dans votre client d'application.

------

Pour plus d'informations sur les clients d'application, consultez [Paramètres spécifiques à l'application avec les clients d'applications](user-pool-settings-client-apps.md).

### Comportement de verrouillage en cas d'échec des tentatives de connexion
<a name="authentication-flow-lockout-behavior"></a>

Après cinq tentatives de connexion infructueuses avec le mot de passe d'un utilisateur, que celles-ci soient demandées par le biais d'opérations d'API non authentifiées ou autorisées par IAM, Amazon Cognito verrouille votre utilisateur pendant une seconde. La durée du verrouillage double ensuite après chaque nouvelle tentative infructueuse, jusqu'à un maximum d'environ 15 minutes.

Les tentatives effectuées pendant une période de verrouillage génèrent une exception `Password attempts exceeded` et n'affectent pas la durée des périodes de verrouillage suivantes. Pour un nombre cumulé de tentatives de connexion infructueuses *n*, à l'exclusion des exceptions `Password attempts exceeded`, Amazon Cognito verrouille votre utilisateur pendant *2^(n-5)* secondes. Pour restaurer l'état initial du verrouillage (*n=0*), votre utilisateur doit parvenir à se connecter à l'issue d'une période de verrouillage ou ne lancer à aucun moment de tentative de connexion pendant 15 minutes consécutives après le verrouillage. Ce comportement est susceptible d'être modifié. Ce comportement ne s'applique pas aux défis personnalisés à moins qu'ils n'effectuent également une authentification basée sur un mot de passe.

## Exemple de session d'authentification
<a name="amazon-cognito-user-pools-authentication-flow"></a>

Le schéma et le step-by-step guide suivants illustrent un scénario typique dans lequel un utilisateur se connecte à une application. L'exemple d'application présente à un utilisateur plusieurs options de connexion. Ils en sélectionnent un en saisissant leurs informations d'identification, en fournissant un facteur d'authentification supplémentaire et en se connectant.

![Un organigramme qui montre une application qui invite un utilisateur à saisir des informations et le connecte à l'aide d'un AWS SDK.](http://docs.aws.amazon.com/fr_fr/cognito/latest/developerguide/images/authentication-api-userauth.png)


Imaginez une application avec une page de connexion où les utilisateurs peuvent se connecter à l'aide d'un nom d'utilisateur et d'un mot de passe, demander un code à usage unique dans un e-mail ou choisir une option d'empreinte digitale.

1. Demande de **connexion** : votre application affiche un écran d'accueil avec un bouton *de connexion*.

1. **Demande de connexion** : l'utilisateur sélectionne *Se connecter*. À partir d'un cookie ou d'un cache, votre application récupère leur nom d'utilisateur ou les invite à le saisir.

1. **Options de demande** : votre application demande les options de connexion de l'utilisateur par le biais d'une demande d'`InitiateAuth`API avec le `USER_AUTH` flux, demandant les méthodes de connexion disponibles pour l'utilisateur.

1. **Envoyer les options de connexion** : Amazon Cognito répond `PASSWORD` par`EMAIL_OTP`, et. `WEB_AUTHN` La réponse inclut un identifiant de session que vous pourrez rejouer dans la réponse suivante.

1. **Options d'affichage** : votre application affiche des éléments d'interface utilisateur permettant à l'utilisateur de saisir son nom d'utilisateur et son mot de passe, d'obtenir un code à usage unique ou de scanner son empreinte digitale.

1. **Choisissez les option/Enter informations d'identification** : l'utilisateur saisit son nom d'utilisateur et son mot de passe.

1. **Lancer l'authentification** : votre application fournit les informations de connexion de l'utilisateur avec une demande d'`RespondToAuthChallenge`API qui confirme la connexion par nom d'utilisateur/mot de passe et fournit le nom d'utilisateur et le mot de passe.

1. **Valider les informations d'identification** : Amazon Cognito confirme les informations d'identification de l'utilisateur.

1. **Défi supplémentaire** : l'utilisateur dispose d'une authentification multifactorielle configurée à l'aide d'une application d'authentification. Amazon Cognito renvoie un `SOFTWARE_TOKEN_MFA` défi.

1. Demande de **défi** : votre application affiche un formulaire demandant un mot de passe à usage unique basé sur le temps (TOTP) à l'application d'authentification de l'utilisateur.

1. **Défi de réponse** : L'utilisateur soumet le TOTP.

1. **Répondre au défi** : dans une autre `RespondToAuthChallenge` demande, votre application fournit le TOTP de l'utilisateur.

1. **Validez la réponse au défi** : Amazon Cognito confirme le code de l'utilisateur et détermine que votre groupe d'utilisateurs est configuré pour ne pas adresser de défis supplémentaires à l'utilisateur actuel.

1. **Émission de jetons** : Amazon Cognito renvoie l'identifiant, l'accès et l'actualisation des jetons Web JSON ()JWTs. L'authentification initiale de l'utilisateur est terminée.

1. **Stocker les jetons** : votre application met en cache les jetons de l'utilisateur afin de pouvoir référencer les données utilisateur, autoriser l'accès aux ressources et mettre à jour les jetons lorsqu'ils expirent.

1. **Afficher le contenu autorisé** : votre application détermine l'accès de l'utilisateur aux ressources en fonction de son identité et de ses rôles, et fournit le contenu de l'application.

1. **Accès au contenu** : l'utilisateur est connecté et commence à utiliser l'application.

1. **Demander du contenu avec un jeton expiré** : ultérieurement, l'utilisateur demande une ressource qui nécessite une autorisation. Le jeton mis en cache de l'utilisateur a expiré.

1. **Jetons d'actualisation** : votre application fait une `InitiateAuth` demande avec le jeton d'actualisation enregistré par l'utilisateur.

1. **Émission de jetons** : Amazon Cognito renvoie un nouvel identifiant et un nouvel accès. JWTs La session de l'utilisateur est actualisée en toute sécurité sans qu'il soit nécessaire de saisir des informations d'identification supplémentaires.

Vous pouvez utiliser des [AWS Lambda déclencheurs](cognito-user-pools-working-with-lambda-triggers.md) pour personnaliser le mode d'authentification des utilisateurs. Ces déclencheurs émettent et vérifient leurs propres défis dans le cadre du flux d'authentification.

Vous pouvez également utiliser le flux d'authentification de l'administration pour des serveurs backend sécurisés. Vous pouvez utiliser le [flux d'authentification de migration](cognito-user-pools-using-import-tool.md) des utilisateurs pour rendre la migration des utilisateurs possible sans qu'ils aient à réinitialiser leur mot de passe.