Flux d'authentification de groupe d'utilisateurs - 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.

Flux d'authentification de groupe d'utilisateurs

Amazon Cognito propose plusieurs méthodes d'authentification des utilisateurs. Tous les groupes d'utilisateurs, que vous disposiez d'un domaine ou non, peuvent authentifier les utilisateurs des groupes API d'utilisateurs. Si vous ajoutez un domaine à votre groupe d'utilisateurs, vous pouvez utiliser les points de terminaison de groupe d'utilisateurs. Les groupes d'utilisateurs prennent API en charge une variété de modèles d'autorisation et de flux de API demandes pour les demandes.

Pour vérifier l'identité des utilisateurs, Amazon Cognito prend en charge les flux d'authentification qui intègrent de nouveaux types de question de sécurité, en plus des mots de passe. L'authentification Amazon Cognito nécessite généralement que vous implémentiez deux API opérations dans l'ordre suivant :

Public authentication

InitiateAuthet RespondToAuthChallenge ne sont pas authentifiés APIs pour être utilisés avec des clients d'applications publiques côté client.

Server-side authentication

AdminInitiateAuthet AdminRespondToAuthChallenge nécessitent des IAM informations d'identification et conviennent aux clients d'applications confidentielles côté serveur.

Un utilisateur s'authentifie en répondant à des demandes de vérification successives jusqu'à ce que l'authentification échoue ou qu'Amazon Cognito émette des jetons pour l'utilisateur. Vous pouvez répéter ces étapes avec Amazon Cognito, dans un processus qui inclut différentes demandes de vérification, pour prendre en charge n'importe quel flux d'authentification personnalisé.

Authentication flow diagram showing user, mobile/web app, and user pool interactions for token issuance.

En général, votre application génère une invite pour recueillir des informations auprès de votre utilisateur et envoie ces informations dans une API demande à Amazon Cognito. Prenons l'exemple d'un InitiateAuth flux dans un groupe d'utilisateurs dans lequel vous avez configuré votre utilisateur avec l'authentification multifactorielle (MFA).

  1. Votre application demande à votre utilisateur de fournir son nom d'utilisateur et son mot de passe.

  2. Vous incluez le nom d'utilisateur et le mot de passe en tant que paramètres dans InitiateAuth.

  3. Amazon Cognito renvoie un défi SMS_MFA et un identifiant de session.

  4. Votre application invite l'utilisateur à saisir le MFA code depuis son téléphone.

  5. Vous devez inclure ce code et l'identifiant de session dans la demande RespondToAuthChallenge.

Selon les fonctionnalités de votre groupe d'utilisateurs, vous pouvez vous retrouver face à plusieurs défis InitiateAuth avant que votre application ne récupère des jetons depuis Amazon Cognito. Amazon Cognito inclut une chaîne de session dans la réponse à chaque demande. Pour combiner vos API demandes 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 auprès des groupes d'utilisateurs Amazon Cognito. API L'interface utilisateur hébergée Amazon Cognito définit la durée de session sur 3 minutes pour l'authentification multifactorielle et sur 8 minutes pour les codes de réinitialisation de 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 la durée de session du flux d'authentification par la durée de validité que vous souhaitez, en minutes, pour SMS MFA les codes. 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.

Amazon Cognito API
Pour configurer la durée de session du flux d'authentification du client de l'application (Amazon CognitoAPI)
  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. Remplacez la valeur AuthSessionValidity de par la durée de validité que vous souhaitez, en minutes, pour SMS MFA les codes. 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 Clients de l’application de groupe d’utilisateurs.

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 permettre la migration des utilisateurs sans exiger de vos utilisateurs qu'ils réinitialisent leurs mots de passe.

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

Après cinq tentatives infructueuses de connexion non authentifiées ou IAM authentifiées 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.

Flux d'authentification côté client

Le processus suivant fonctionne pour les applications côté client utilisateur que vous créez avec AWS Amplifyou avec. AWS SDKs

  1. L'utilisateur entre le nom d'utilisateur et le mot de passe dans l'application.

  2. L'application lance l'InitiateAuthopération avec le nom d'utilisateur et les détails du mot de passe sécurisé (SRP) de l'utilisateur.

    Cette API opération renvoie les paramètres d'authentification.

    Note

    L'application génère des SRP informations grâce aux SRP fonctionnalités intégrées d'Amazon Cognito. AWS SDKs

  3. L'appli appelle l'opération RespondToAuthChallenge. Si l'appel aboutit, Amazon Cognito retourne les jetons de l'utilisateur et le flux d'authentification est terminé.

    Si Amazon Cognito requiert une autre demande de vérification, l'appel à RespondToAuthChallenge ne renvoie aucun jeton. À la place, l'appel renvoie une session.

  4. Si elle RespondToAuthChallenge renvoie une session, l'application appelle RespondToAuthChallenge à nouveau, cette fois avec la session et la réponse au défi (par exemple, MFA du code).

Flux d'authentification côté serveur

Si vous n'avez pas d'application utilisateur, mais que vous utilisez plutôt un backend sécurisé Java, Ruby ou Node.js ou une application côté serveur, vous pouvez utiliser l'application authentifiée côté serveur API pour les groupes d'utilisateurs Amazon Cognito.

Pour les applications côté serveur, l'authentification d'un groupe d'utilisateurs est similaire à celle des applications côté client, à l'exception des aspects suivants :

  • L'application côté serveur appelle l'AdminInitiateAuthAPIopération (au lieu deInitiateAuth). Cette opération nécessite des AWS informations d'identification avec des autorisations telles que cognito-idp:AdminInitiateAuth etcognito-idp:AdminRespondToAuthChallenge. Cette opération renvoie les paramètres d'authentification requis.

  • Une fois que l'application côté serveur possède les paramètres d'authentification, elle appelle l'AdminRespondToAuthChallengeAPIopération (au lieu deRespondToAuthChallenge). L'AdminRespondToAuthChallengeAPIopération ne réussit que lorsque vous fournissez des AWS informations d'identification.

Pour plus d'informations sur la signature des API demandes Amazon Cognito avec des AWS informations d'identification, consultez le processus de signature Signature version 4 dans le manuel de référence AWS général.

Les AdminRespondToAuthChallenge API opérations AdminInitiateAuth et ne peuvent pas accepter les informations username-and-password d'identification des utilisateurs pour la connexion des administrateurs, sauf si vous les autorisez explicitement à le faire de l'une des manières suivantes :

  • Incluez ALLOW_ADMIN_USER_PASSWORD_AUTH (anciennement connu sous le nom ADMIN_NO_SRP_AUTH) dans le paramètre ExplicitAuthFlow lorsque vous appelez CreateUserPoolClient ou UpdateUserPoolClient.

  • Ajoutez ALLOW_ADMIN_USER_PASSWORD_AUTH dans la liste Flux d'authentification pour votre client d'application. Configurez les clients d'application dans l'onglet App integration (Intégration d'application) de votre groupe d'utilisateurs, sous App clients and analytics (Clients d'application et analytique). Pour de plus amples informations, veuillez consulter Clients de l’application de groupe d’utilisateurs.

Flux d'authentification personnalisé

Les groupes d'utilisateurs Amazon Cognito permettent également d'utiliser des flux d'authentification personnalisés, qui peuvent vous aider à créer un modèle d'authentification basé sur les défis et les réponses à l'aide de 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'InitiateAuthAPIopération qui indique le type d'authentification à utiliser et fournit les éventuels 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 de détails sur les RespondToAuthChallenge API opérations InitiateAuth et, consultez la APIdocumentation.

Flux d'authentification intégré et stimulations

Amazon Cognito contient des ChallengeName valeurs AuthFlow et intégrées qui permettent à un flux d'authentification standard de valider un nom d'utilisateur et un mot de passe via le protocole Secure Remote Password (SRP). Ils AWS SDKs ont intégré la prise en charge de ces flux avec Amazon Cognito.

Le flux commence par l'envoi de USER_SRP_AUTH comme AuthFlow pour InitiateAuth. Vous envoyez également les valeurs USERNAME et SRP_A dans AuthParameters. Si l'appel InitiateAuth aboutit, la réponse a inclus PASSWORD_VERIFIER comme ChallengeName et SRP_B dans les paramètres de stimulation. L'appli appelle ensuite RespondToAuthChallenge avec le PASSWORD_VERIFIER ChallengeName et les paramètres nécessaires dans ChallengeResponses. Si l'appel à RespondToAuthChallenge réussit et que l'utilisateur est connecté, Amazon Cognito émet des jetons. Si vous avez activé l'authentification multifactorielle (MFA) pour l'utilisateur, Amazon Cognito renvoie ChallengeName le code de. SMS_MFA L'application peut fournir le code nécessaire via un autre appel à RespondToAuthChallenge.

Flux d'authentification personnalisé et stimulations

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 défis intégrés, tels que la vérification et le passage des mots de SRP MFA passeSMS. Il peut utiliser des défis personnalisés tels que CAPTCHA des questions secrètes.

Utiliser la vérification du SRP mot de passe dans le flux d'authentification personnalisé

Si vous souhaitez l'inclure SRP dans un flux d'authentification personnalisé, vous devez commencer parSRP.

  • Pour lancer la vérification du SRP mot de passe dans un flux personnalisé, l'application appelle InitiateAuth en CUSTOM_AUTH tant queAuthflow. Sur la AuthParameters carte, la demande de votre application inclut SRP_A: (la valeur SRP A) etCHALLENGE_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'application doit ensuite appeler RespondToAuthChallenge avec challengeName: PASSWORD_VERIFIER les autres paramètres requis sur SRP la challengeResponses carte.

  • 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 cette option MFA est activée pour un utilisateur, une fois qu'Amazon Cognito a vérifié le mot de passe, celui-ci est invité à le configurer ou à se connecter avec celui-ci. 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.

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.

Flux d'authentification de l'administration

La meilleure pratique en matière d'authentification consiste à utiliser les API opérations décrites dans Flux d'authentification personnalisé with SRP pour vérifier le mot de passe. L' AWS SDKsutilisation de cette approche, et cette approche les aide à utiliserSRP. Toutefois, si vous souhaitez éviter les SRP calculs, un autre ensemble d'APIopérations d'administration est disponible pour les serveurs principaux sécurisés. Pour ces implémentations d'administration backend, utilisez AdminInitiateAuth au lieu de InitiateAuth. Utilisez également AdminRespondToAuthChallenge au lieu de RespondToAuthChallenge. Comme vous pouvez envoyer le mot de passe sous forme de texte brut, vous n'avez pas à effectuer de SRP calculs lorsque vous utilisez ces opérations. Voici un exemple :

AdminInitiateAuth Request { "AuthFlow":"ADMIN_USER_PASSWORD_AUTH", "AuthParameters":{ "USERNAME":"<username>", "PASSWORD":"<password>" }, "ClientId":"<clientId>", "UserPoolId":"<userPoolId>" }

Ces opérations d'authentification de l'administration requièrent les informations d'identification d'un développeur et utilisent le processus de signature d' AWS Signature Version 4 (SigV4). Ces opérations sont disponibles en standard AWS SDKs, notamment Node.js, ce qui est pratique pour les fonctions Lambda. Pour utiliser ces opérations et leur faire accepter des mots de passe en texte brut, vous devez les activer pour l'application dans la console. Vous pouvez également transmettre ADMIN_USER_PASSWORD_AUTH pour le paramètre ExplicitAuthFlow dans les appels à CreateUserPoolClient ou UpdateUserPoolClient. Les opérations InitiateAuth et RespondToAuthChallenge n'acceptent pas ADMIN_USER_PASSWORD_AUTH AuthFlow.

Dans la réponse AdminInitiateAuth ChallengeParameters, l'attribut USER_ID_FOR_SRP, s'il est présent, contient le nom d'utilisateur réel de l'utilisateur, et non pas un alias (tel qu'une adresse e-mail ou un numéro de téléphone). Dans votre appel à AdminRespondToAuthChallenge, dans le ChallengeResponses, vous devez transmettre ce nom d'utilisateur dans le paramètre USERNAME.

Note

Comme les implémentations d'administrateur backend utilisent le flux d'authentification d'administrateur, ce flux ne prend pas en charge la fonctionnalité de suivi des dispositifs. Lorsque la fonctionnalité de suivi des dispositifs est activée, l'authentification d'administrateur réussit, mais tout appel visant à actualiser le jeton d'accès échoue.

Flux d'authentification pour la migration d'utilisateurs

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 SSL connexion cryptée lors de l'authentification.

Lorsque vous avez migré tous vos utilisateurs, passez aux flux les plus sécurisésSRP. Le SRP flux 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.

Pour plus d'informations sur la migration d'utilisateurs avec un déclencheur Lambda, consultez Importation d'utilisateurs dans des groupes d'utilisateurs avec un déclencheur Lambda de migration d'utilisateur.