View a markdown version of this page

Authentification avec les groupes d'utilisateurs Amazon Cognito - Amazon Cognito

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 avec les groupes d'utilisateurs Amazon Cognito

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 vérifie le secret, puis émet des jetons Web JSON (JWT) que les applications peuvent 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. 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 des 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 les e-mails et les SMS.

Mettre en œuvre des flux d'authentification

Que vous mettiez en œuvre une connexion gérée ou une interface d'application personnalisée 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 les clients de votre application 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 à l'aide de 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. Choisissez un groupe d'utilisateurs ou créez-en un nouveau.

  2. 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.

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

  4. Sous Flux clients d'applications, 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 or UpdateUserPoolClient request. L'exemple suivant fournit un mot de passe distant sécurisé (SRP) et une authentification basée sur le choix à un client.

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

Lorsque vous configurez des flux pris en charge par les clients d'applications, vous pouvez spécifier les options et valeurs d'API suivantes.

Prise en charge du flux client de l'application
Flux d'authentification Compatibilité Console API
Choice-basedauthentification Server-side, côté client Sélectionnez un type d'authentification lors de la connexion ALLOW_USER_AUTH
Sign-in avec des mots de passe permanents Client-side Connectez-vous avec nom d'utilisateur et mot de passe ALLOW_USER_PASSWORD_AUTH
Sign-in avec des mots de passe permanents et une charge utile sécurisée Server-side, côté client Connectez-vous à l'aide d'un mot de passe distant sécurisé (SRP) ALLOW_USER_SRP_AUTH
Actualiser les jetons Server-side, côté client Obtenir de nouveaux jetons utilisateur à partir de sessions authentifiées existantes ALLOW_REFRESH_TOKEN_AUTH
Server-side authentification Server-side Connectez-vous à l'aide des informations d'identification administratives côté serveur ALLOW_ADMIN_USER_PASSWORD_AUTH
Authentification personnalisée Server-side et des applications personnalisées 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 dans vos pages de connexion. Dans les applications personnalisées, démarrez l'authentification par une déclaration du flux initial.

  • Pour choisir parmi une liste d'options de flux pour un utilisateur, déclarez une authentification basée sur les choix avec le 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 de passe.

  • Pour choisir votre flux d'authentification dès le départ, déclarez l'authentification basée sur le client avec tout autre flux disponible dans le client de votre application.

Lorsque vous connectez des utilisateurs, le corps de votre AdminInitiateAuth demande InitiateAuth ou doit inclure un AuthFlow paramètre.

Choice-based authentification :

"AuthFlow": "USER_AUTH"

Client-based authentification avec SRP :

"AuthFlow": "USER_SRP_AUTH"

Ce qu'il faut savoir sur l'authentification auprès des groupes d'utilisateurs

Prenez en compte les 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 l'interface utilisateur hébergée

Connexion gérée par le groupe d'utilisateursLa connexion gérée propose 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 ne sont disponibles que dans l'authentification du AWS SDK

Vous ne pouvez pas effectuer de flux d'authentification personnalisés, ni d'authentification personnalisée avec des déclencheurs Lambda, avec une connexion gérée ou l'interface utilisateur hébergée classique. L'authentification personnalisée est disponible dans Authentification avec AWS les SDK.

Connexion gérée pour la connexion à un fournisseur d'identité externe (IdP)

Vous ne pouvez pas connecter les utilisateurs par l'intermédiaire d'un tiers lors de l'authentification IdPs à l'aide de AWS kits de développement logiciel. Vous devez implémenter la connexion gérée ou l'interface utilisateur hébergée classique, rediriger vers IdPs, puis traiter l'objet d'authentification qui en résulte avec les bibliothèques OIDC de votre application. Pour plus d'informations sur la connexion gérée, consultezConnexion gérée par le groupe d'utilisateurs.

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 à l'aide de mots de passe à usage unique ou de clés d'accès dans votre groupe d'utilisateurs et le client de l'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 est modifié 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.

  2. Pour les SDK-based SignUp opérations, 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.

  3. Les utilisateurs importés depuis un fichier CSV peuvent se connecter immédiatement à l'aide d'options sans mot de passe, sans réinitialisation du 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.

  4. L'authentification sans mot de passe n'invoque pas le déclencheur Lambda de migration des utilisateurs.

  5. Les utilisateurs qui se connectent avec un premier facteur de mot de passe à usage unique (OTP) ne peuvent pas ajouter de facteur d'authentification multifacteur (MFA) à leur session. Les clés d'accès avec vérification par l'utilisateur peuvent satisfaire aux exigences du MFA lorsqu'elles sont configurées avec. MULTI_FACTOR_WITH_USER_VERIFICATION

Les URL des parties utilisant une clé d'accès ne peuvent pas figurer sur la liste de suffixes publique

Vous pouvez utiliser des noms de domaine qui vous appartiennent, par exemplewww.example.com, comme identifiant de partie utilisatrice (RP) dans votre configuration de 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, ou PSL, contient des domaines de haut niveau protégés. Amazon Cognito renvoie un message d'erreur lorsque vous tentez de définir votre URL RP sur un domaine de la PSL.

Durée du flux de session d'authentification

En fonction des fonctionnalités de votre groupe d'utilisateurs, vous pouvez être amené à répondre à plusieurs défis RespondToAuthChallenge avant que votre application ne récupère les jetons d'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 fixe la durée de la 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 de l'application (Console de gestion AWS)
  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).

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

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

  4. 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.

  2. 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.

Comportement de verrouillage en cas d'échec des tentatives de connexion

Après cinq tentatives de connexion infructueuses avec le mot de passe d'un utilisateur, que celles-ci soient demandées via des opérations non authentifiées ou IAM-authorized via une API, 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

Le schéma et le guide étape par étape suivants illustrent un scénario type dans lequel un utilisateur se connecte à une application. L'exemple d'application présente à l'utilisateur plusieurs options de connexion. Ils en sélectionnent un en saisissant leurs informations d'identification, fournissent un facteur d'authentification supplémentaire et se connectent.

Organigramme qui montre une application qui invite un utilisateur à saisir des informations et qui le connecte à l'aide d'un AWS SDK.

Imaginez une application dotée d'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 message électronique ou choisir une option d'empreinte digitale.

  1. Sign-in invite  : votre application affiche un écran d'accueil avec un bouton de connexion.

  2. Demander la 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.

  3. Options de demande  : votre application demande les options de connexion de l'utilisateur à l'aide d'une demande d'InitiateAuthAPI contenant le USER_AUTH flux, demandant les méthodes de connexion disponibles pour l'utilisateur.

  4. Envoyer des options de connexion  : Amazon Cognito répond par PASSWORDEMAIL_OTP, et. WEB_AUTHN La réponse inclut un identifiant de session que vous pouvez réécouter dans la réponse suivante.

  5. 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.

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

  7. Lancer l'authentification  : votre application fournit les informations de connexion de l'utilisateur avec une demande d'RespondToAuthChallengeAPI qui confirme la connexion par nom d'utilisateur et mot de passe et fournit le nom d'utilisateur et le mot de passe.

  8. Validez les informations d'identification  : Amazon Cognito confirme les informations d'identification de l'utilisateur.

  9. Défi supplémentaire  : l'authentification multifactorielle de l'utilisateur est configurée à l'aide d'une application d'authentification. Amazon Cognito propose un SOFTWARE_TOKEN_MFA défi.

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

  11. Réponse au défi  : l'utilisateur soumet le TOTP.

  12. Répondre au défi  : Dans une autre RespondToAuthChallenge demande, votre application fournit le TOTP de l'utilisateur.

  13. 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 lancer aucun défi supplémentaire à l'utilisateur actuel.

  14. Jetons d'émission  : Amazon Cognito renvoie l'identification, l'accès et l'actualisation des jetons Web JSON (JWT). L'authentification initiale de l'utilisateur est terminée.

  15. Stockez 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.

  16. 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.

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

  18. Demander du contenu avec un jeton expiré  : plus tard, l'utilisateur demande une ressource nécessitant une autorisation. Le jeton mis en cache de l'utilisateur a expiré.

  19. Jetons d'actualisation  : votre application envoie une InitiateAuth demande à l'aide du jeton d'actualisation enregistré par l'utilisateur.

  20. Émettez des jetons  : Amazon Cognito renvoie un nouvel identifiant et accède à JWTS. La session de l'utilisateur est actualisée en toute sécurité sans qu'il soit demandé d'informations d'identification supplémentaires.

Vous pouvez utiliser des AWS Lambda déclencheurs pour personnaliser la façon dont les utilisateurs s'authentifient. 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 des utilisateurs pour rendre la migration des utilisateurs possible sans qu'ils aient à réinitialiser leur mot de passe.