Authentification auprès des 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 auprès des groupes d'utilisateurs Amazon Cognito

Amazon Cognito propose plusieurs méthodes d'authentification des utilisateurs. 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 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.

Mettre en œuvre des flux d'authentification

Que vous implémentiez 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 vos clients d'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 à la console AWS des groupes d'utilisateurs Amazon Cognito et accédez à celle-ci. 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 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 CreateUserPoolClientor UpdateUserPoolClientrequest. 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 « Hello, World! »
Authentification basée sur les choix 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 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 Côté serveur, côté client Connectez-vous avec un mot de passe à distance sécurisé (SRP) ALLOW_USER_SRP_AUTH
Actualiser les jetons 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 Côté serveur Connectez-vous à l'aide des informations d'identification administratives côté serveur ALLOW_ADMIN_USER_PASSWORD_AUTH
Authentification personnalisée 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.

Lorsque vous connectez des utilisateurs, le corps de votre AdminInitiateAuthdemande InitiateAuthou 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

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 et l'interface utilisateur hébergée classique proposent différentes options d'authentification. Vous pouvez uniquement effectuer une authentification sans mot de passe et par clé d'accès 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, 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.

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 avec AWS SDKs. 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, 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 avec des mots de passe ou des clés d'accès à usage unique 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.

  2. Pour les SignUpopé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.

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

  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 sans mot de passe ne peuvent pas ajouter de facteur d'authentification multifactorielle (MFA) à leur session. Seuls les flux d'authentification par mot de passe prennent en charge le MFA.

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 exemplewww.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, 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.

Durée du flux de session d'authentification

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

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

  3. Modifiez la valeur de Authentication flow session duration (Durée de session du flux d'authentification) pour indiquer la durée de validité choisie (en minutes) 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.

  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 infructueuses de connexion non authentifiée ou authentifiée par IAM avec un mot de passe, 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 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.

Imaginez une application avec une page de connexion où les utilisateurs peuvent se connecter avec un nom d'utilisateur et 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.

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

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

  4. Envoyer les options de connexion : Amazon Cognito répond PASSWORD parEMAIL_OTP, et. WEB_AUTHN La réponse inclut un identifiant de session que vous pourrez rejouer 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 l'option/Entrez 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/mot de passe et fournit le nom d'utilisateur et le mot de passe.

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

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

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

  11. Défi de réponse : 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 pas adresser de défis supplémentaires à l'utilisateur actuel.

  14. É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.

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

  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é : ultérieurement, l'utilisateur demande une ressource qui nécessite une autorisation. Le jeton mis en cache de l'utilisateur a expiré.

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

  20. É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 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.