Flux d’authentification - 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

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.

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 de facteurs d'authentification basés sur le choix à l'aide des demandes adressées à GetUserAuthFactorsl'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.

Connectez-vous avec un tiers IdPs

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

Connectez-vous avec des mots de passe persistants

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 avec leur nom d'utilisateur et 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 du SDK publiques ou authentifiées par 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 avec nom d'utilisateur et mot de passe, configurez votre client d'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 nom d'utilisateur et 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 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.

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.

Configurez ExplicitAuthFlows avec vos options username-and-password d'authentification préférées dans une UpdateUserPoolClientdemande CreateUserPoolClientou.

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

Dans une UpdateUserPooldemande CreateUserPoolou, 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 avec une authentification par nom d'utilisateur et mot de passe, configurez le corps de votre InitiateAuthdemande AdminInitiateAuthou 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 répond par 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 Lorsqu'il AvailableChallenges inclut un ChallengeName dePASSWORD, vous pouvez poursuivre l'authentification avec une réponse RespondToAuthChallengeou un AdminRespondToAuthChallengedé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 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 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 à l'aide de mots de passe persistants et d'une charge utile sécurisée

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. Wikipédia propose également des ressources et des exemples. Diverses bibliothèques publiques 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 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 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.

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.

Configurez ExplicitAuthFlows avec vos options username-and-password d'authentification préférées dans une UpdateUserPoolClientdemande CreateUserPoolClientou.

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

Dans une UpdateUserPooldemande CreateUserPoolou, 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 AdminInitiateAuthou InitiateAuthde 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 répond par 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 Lorsqu'il AvailableChallenges inclut un ChallengeName dePASSWORD_SRP, vous pouvez poursuivre l'authentification avec une réponse RespondToAuthChallengeou un AdminRespondToAuthChallengedé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 AdminRespondToAuthChallengedemande RespondToAuthChallengeou 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 InitiateAuthet AdminInitiateAuth. 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 AdminRespondToAuthChallengedemande RespondToAuthChallengeou 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 à usage unique

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 sans mot de passe ne sont pas compatibles avec l'authentification multifactorielle (MFA) requise dans votre groupe d'utilisateurs. Si le MFA est facultatif dans votre groupe d'utilisateurs, les utilisateurs qui ont activé le MFA ne peuvent pas se connecter en utilisant un premier facteur sans mot de passe. 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.

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

  2. Les utilisateurs que vous importez à l'aide d'un fichier CSV 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.

  3. Les utilisateurs qui n'ont pas de mot de passe peuvent envoyer des demandes d'ChangePasswordAPI 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 InitiateAuthor AdminInitiateAuth.

  • Le Session paramètre issu de la réponse de ConfirmSignUpl'API en tant que paramètre de Session demande.

  • Un AuthFlowdeUSER_AUTH.

Vous pouvez réussir un PREFERRED_CHALLENGE de EMAIL_OTP ouSMS_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, 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 CreateUserPoolor UpdateUserPool.

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

Configurez votre client ExplicitAuthFlows d'application avec l'option requise dans une UpdateUserPoolClientdemande CreateUserPoolClientou.

"ExplicitAuthFlows": [ "ALLOW_USER_AUTH" ]
Sign in with passwordless

La connexion sans mot de passe n'a pas de fonction client AuthFlow que vous pouvez spécifier dans et. InitiateAuthAdminInitiateAuth L'authentification OTP n'est disponible que dans la version basée sur le choix AuthFlowUSER_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 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 aucun 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 AdminRespondToAuthChallengedemande RespondToAuthChallengeou 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 quePREFERRED_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

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 WebAuthnd'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 n'est pas éligible à l'authentification multifactorielle (MFA).

Les flux d'authentification sans mot de passe ne sont pas compatibles avec l'authentification multifactorielle (MFA) requise dans votre groupe d'utilisateurs. Si le MFA est facultatif dans votre groupe d'utilisateurs, les utilisateurs qui ont activé le MFA ne peuvent pas se connecter en utilisant un premier facteur sans mot de passe. 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.

Que sont les clés d'accès ?

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 (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-knownassociation 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 ?

Les clés d'accès sont une fonctionnalité optionnelle disponible dans tous les plans de fonctionnalités, à l'exception de Lite. Il n'est disponible que dans le flux d'authentification basé sur les choix. Avec la connexion gérée, 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 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.

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 cette fonctionnalité, 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 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 est une connexion gérée, votre groupe d'utilisateurs attend par défaut le nom de votre domaine personnalisé 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 de préfixe. 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 utilisatrice 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 ne prendre en charge que les appareils dotés d'une vérification utilisateur, sélectionnez Obligatoire. Pour plus d'informations, consultez la section Vérification des utilisateurs 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 Amazon Cognito de votre groupe d'utilisateurs.

    Domaine personnalisé

    Le domaine personnalisé 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 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 UpdateUserPooldemande CreateUserPoolor. L'WEB_AUTHNoption 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 SetUserPoolMfaConfigdemande. 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" }

Configurez votre client ExplicitAuthFlows d'application avec l'option requise dans une UpdateUserPoolClientdemande CreateUserPoolClientou.

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

    https://auth.example.com/oauth2/authorize/?client_id=1example23456789&response_type=code&scope=email+openid+phone&redirect_uri=https%3A%2F%2Fwww.example.com
  2. 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.

  3. 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 paramètres à cette requête, tels que response_type etscope.

    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 PublicKeyCreationOptionsobjet. 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 à l'émetteur de sa clé d'accès. L'émetteur renverra un objet 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'StartWebAuthnRegistrationAPI autorisée par 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'PublicKeyCreationOptionsobjet. 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'CompleteWebAuthnRegistrationAPI, à 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. InitiateAuthAdminInitiateAuth 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.

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

MFA après connexion

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, un premier facteur d'authentification avec des mots de passe à usage unique ou des clés d' WebAuthn accès qui n'incluent pas la MFA. La MFA utilisée dans les groupes d'utilisateurs est un modèle défi-réponse, dans lequel un utilisateur démontre d'abord qu'il connaît le mot de passe, puis qu'il a accès à son appareil de second facteur enregistré.

Actualiser les jetons

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.

Authentification personnalisée

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.

Flux d'authentification personnalisé

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.

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 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é

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.

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

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.