View a markdown version of this page

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 au cours duquel 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 défis. Lorsque vous implémentez des flux avec un AWS SDK dans le back-end de votre application, vous devez définir la logique des requêtes, inviter les utilisateurs à saisir des informations et répondre aux défis.

En tant qu'administrateur d'applications, vos caractéristiques 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.

Après avoir configuré les flux de connexion pour un utilisateur, vous pouvez vérifier son statut actuel en matière d'authentification multifacteur et de facteurs d'authentification basés sur le choix en demandant à l'opération de l'API. GetUserAuthFactors 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.

Sign-in avec un tiers IdPs

Les groupes d'utilisateurs Amazon Cognito servent de courtier intermédiaire pour les sessions d'authentification entre IdPs les services 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 au client de votre 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 que votre application appelle 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 associez à un utilisateur local. Les utilisateurs fédérés non liés possèdent des noms d'utilisateur, mais il s'agit d'un magasin de données attributaires mappées qui n'est généralement pas utilisé pour la connexion indépendamment du flux basé sur le navigateur.

Sign-in avec des mots de passe permanents

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 le MFA. Les groupes d'utilisateurs peuvent effectuer des connexions par nom d'utilisateur et mot de passe à l'aide d'opérations publiques ou d' IAM-authorized API et de méthodes du SDK. Votre application peut envoyer directement le mot de passe à votre groupe d'utilisateurs à des fins d'authentification. Votre groupe d'utilisateurs répond par des défis supplémentaires ou par les jetons Web JSON (JWT) qui sont le résultat 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 le client de votre application pour l'autoriser. Dans la console Amazon Cognito, accédez au menu App clients 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 un nom d'utilisateur et un 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 le client de l'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 Choice-based connexion : ALLOW_USER_AUTH.

Capture d'écran de la console Amazon Cognito qui illustre le choix de 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 le choix, accédez au Sign-in menu et consultez la section sous Options pour la connexion basée sur le 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 simple et SRP.

Capture d'écran de la console Amazon Cognito illustrant 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 étant active.

Configurez ExplicitAuthFlows avec vos options d'authentification par nom d'utilisateur et mot de passe préférées dans une demande ou. CreateUserPoolClient UpdateUserPoolClient

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

Dans une UpdateUserPool demande CreateUserPool ou, configurez Policies avec les flux d'authentification basés sur les choix que vous souhaitez prendre en charge. La PASSWORD valeur dans AllowedFirstAuthFactors inclut à la fois les options de flux d'authentification par mot de passe simple et SRP.

"Policies": { "SignInPolicy": { "AllowedFirstAuthFactors": [ "PASSWORD", "EMAIL_OTP", "WEB_AUTHN" ] } }
Choice-based sign-in with a password

Pour connecter un utilisateur à une application à l'aide de l'authentification par nom d'utilisateur et mot de passe, configurez le corps de votre InitiateAuth demande AdminInitiateAuth ou de votre demande comme suit. Cette demande de connexion aboutit ou passe au défi suivant si l'utilisateur actuel est éligible à l'authentification par nom d'utilisateur et 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 dansAvailableChallenges. Lorsque la AvailableChallenges valeur « ChallengeName of » est inclusePASSWORD, vous pouvez poursuivre l'authentification avec une réponse RespondToAuthChallenge ou AdminRespondToAuthChallenge contester la réponse dans le 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érentiel éligibles et réussies et aux réponses aux PASSWORD défis avec des jetons ou un défi supplémentaire obligatoire tel que l'authentification multifacteur (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 avec des jetons ou un défi supplémentaire, tel que l'authentification multifacteur (MFA).

Sign-in avec des mots de passe permanents et une charge utile sécurisée

Le protocole Secure Remote Password (SRP) 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 une preuve de connaissance d'un mot de passe (un hachage et une liste de mots 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 les applications côté client, telles que les applications mobiles. Pour plus d'informations sur le protocole, consultez la page d'accueil de Stanford SRP. Wikipedia propose également des ressources et des exemples. Diverses bibliothèques publiques sont disponibles pour effectuer les calculs SRP pour vos flux d'authentification.

La séquence initiation-challenge-response de l'authentification Amazon Cognito valide les utilisateurs et leurs mots de passe avec 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 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 JSON-formatted AuthParameters et des opérations d'API des groupes d'utilisateurs Amazon Cognito et des méthodes du SDK pour l'authentification.

Activate SRP sign-in

Pour activer l'authentification basée sur le client avec le nom d'utilisateur et le SRP, configurez le client de votre application pour l'autoriser. Dans la console Amazon Cognito, accédez au menu App clients 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 le nom d'utilisateur et le SRP, modifiez le client de votre application et choisissez Choice-based connexion : ALLOW_USER_AUTH.

Capture d'écran de la console Amazon Cognito illustrant le choix de 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 les flux d'authentification basés sur vos choix, accédez au Sign-in menu et consultez la section intitulée Options pour la connexion basée sur vos 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 par nom d'utilisateur et mot de passe en texte brut et SRP.

Capture d'écran de la console Amazon Cognito illustrant 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 d'authentification par nom d'utilisateur et mot de passe préférées dans une demande ou. CreateUserPoolClient UpdateUserPoolClient

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

Dans une UpdateUserPool demande CreateUserPool ou, configurez Policies avec les flux d'authentification basés sur les choix que vous souhaitez prendre en charge. La PASSWORD valeur dans AllowedFirstAuthFactors inclut à la fois le mot de passe en texte brut et les options de flux d'authentification SRP.

"Policies": { "SignInPolicy": { "AllowedFirstAuthFactors": [ "PASSWORD", "EMAIL_OTP", "WEB_AUTHN" ] } }
Choice-based sign-in with SRP

Pour connecter un utilisateur à une application à l'aide de l'authentification par nom d'utilisateur et mot de passe avec SRP, configurez le corps de votre demande AdminInitiateAuth ou InitiateAuth 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 et 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 dansAvailableChallenges. Lorsque la AvailableChallenges valeur « ChallengeName of » est inclusePASSWORD_SRP, vous pouvez poursuivre l'authentification avec une réponse RespondToAuthChallenge ou AdminRespondToAuthChallenge contester la réponse dans le 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 éligibles associées à un défi préféré et aux réponses aux PASSWORD_SRP défis par un défi. PASSWORD_VERIFIER Votre client doit effectuer les calculs du SRP et répondre au défi dans une AdminRespondToAuthChallenge demande RespondToAuthChallenge ou.

{ "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éussiePASSWORD_VERIFIER, Amazon Cognito émet des jetons ou un autre défi obligatoire, tel que l'authentification multifacteur (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. Vous pouvez toutefois utiliser l'authentification SRP avec InitiateAuth et 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 dans une AdminRespondToAuthChallenge demande RespondToAuthChallenge ou.

{ "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éussiePASSWORD_VERIFIER, Amazon Cognito émet des jetons ou un autre défi obligatoire, tel que l'authentification multifacteur (MFA).

Connexion sans mot de passe avec mots de passe uniques

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 à vous 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'il doit confirmer. Un code réussi complète l'authentification.

One-time les flux d'authentification par mot de passe (OTP) ne sont pas compatibles avec l'authentification multifacteur (MFA) requise dans votre groupe d'utilisateurs. L'authentification par mot de passe avec vérification de l'utilisateur peut satisfaire aux exigences du MFA lorsque vous le définissez surFactorConfiguration. MULTI_FACTOR_WITH_USER_VERIFICATION Si l'authentification multifacteur est facultative dans votre groupe d'utilisateurs, les utilisateurs qui ont activé l'authentification multifacteur ne peuvent pas se connecter à l'aide d'un premier facteur OTP. Les utilisateurs qui n'ont pas de préférence MFA dans un groupe MFA-optional d'utilisateurs peuvent se connecter sans mot de passe. Pour de plus amples informations, veuillez consulter Ce qu'il faut savoir sur le MFA des 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 de l'authentifier, 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 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 soumettre des demandes d'ChangePasswordAPI sans PreviousPassword ce paramètre.

Connexion automatique avec les OTP

Les utilisateurs qui s'inscrivent et confirment leur compte utilisateur par e-mail ou SMS OTP peuvent se connecter automatiquement avec le facteur sans mot de passe correspondant à leur message de confirmation. Dans l'interface utilisateur de connexion gérée, les utilisateurs qui confirment leur compte et sont éligibles à la connexion OTP à l'aide de la méthode de livraison du code de confirmation accèdent 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 InitiateAuth ou AdminInitiateAuth.

  • SessionParamètre de la réponse de ConfirmSignUp l'API en tant que paramètre de Session demande.

  • Un AuthFlow desUSER_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 ignore le AuthParameters moment où vous transmettez un code de session valide.

L'opération de connexion renvoie la réponse qui indique une authentification réussie AuthenticationResult, sans difficulté supplémentaire si les conditions suivantes sont remplies.

  • 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 le client de votre application pour autoriser le flux. USER_AUTH Dans la console Amazon Cognito, accédez au Sign-in menu situé sous Authentification dans la configuration de votre groupe d'utilisateurs. Modifiez les options de connexion en fonction de vos choix et choisissez Mot de passe à usage unique pour les e-mails ou Mot de passe à usage unique pour les SMS. Vous pouvez activer les deux options. Enregistrez vos modifications.

Accédez au menu Clients d'applications et choisissez un client d'application ou créez-en un nouveau. Sélectionnez Modifier, puis sélectionnez 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 sans mot de passe appropriées dans une requête CreateUserPool ou UpdateUserPool.

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

Configurez le client de votre application ExplicitAuthFlows avec l'option requise dans une UpdateUserPoolClient demande CreateUserPoolClient ou.

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

La connexion sans mot de passe ne comporte pas de fonction client AuthFlow que vous pouvez spécifier dans et. InitiateAuth AdminInitiateAuth L'authentification OTP n'est disponible que dans le mode de sélection AuthFlow deUSER_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 avec ce défi.

{ "AuthFlow": "USER_AUTH", "AuthParameters": { "USERNAME" : "testuser" }, "ClientId": "1example23456789" }

Vous pouvez à la place 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 pas de 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 message électronique OTP, un message SMS OTP et un nom d'utilisateur et un mot de passe. Votre application peut demander à l'utilisateur de faire sa sélection ou effectuer une sélection en fonction d'une logique interne. Il procède ensuite à une AdminRespondToAuthChallenge requête RespondToAuthChallenge ou qui sélectionne le défi. Supposons que l'utilisateur souhaite effectuer une authentification sans mot de passe à l'aide d'un OTP par e-mail.

{ "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 alors répondre à nouveau à ce défi.

Ce serait également la prochaine réponse au défi si vous le demandiez 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 d'accès WebAuthn

Les clés d'accès sont sécurisées et imposent un niveau d'effort relativement faible aux utilisateurs. La connexion par mot de passe utilise des authentificateurs, des périphériques externes avec lesquels les utilisateurs peuvent s'authentifier. Les mots de passe classiques exposent les utilisateurs à des vulnérabilités telles que le phishing, la devinette 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 à des systèmes d'information. Un flux de connexion par clé d'accès courant commence par un appel à votre appareil qui invoque votre gestionnaire de mots de passe ou 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 aux principes d'authentification forte et à ce que vous connaissez. 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 par clé de sécurité. Il s'agit d'un mot de passe ou WebAuthn d'une authentification. Il est courant que les développeurs d'applications autorisent les utilisateurs à enregistrer un appareil biométrique après leur première connexion à l'aide d'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 mot de passe peut satisfaire aux exigences d'authentification multifacteur (MFA) lorsque votre groupe d'utilisateurs est FactorConfiguration défini sur. MULTI_FACTOR_WITH_USER_VERIFICATION Dans cette configuration, l'authentification par clé d'accès avec vérification de l'utilisateur est considérée comme une authentification multifactorielle.

One-time les flux d'authentification par mot de passe (OTP) ne sont pas compatibles avec l'authentification multifacteur (MFA) requise dans votre groupe d'utilisateurs. L'authentification par mot de passe avec vérification de l'utilisateur peut satisfaire aux exigences du MFA lorsque vous le définissez surFactorConfiguration. MULTI_FACTOR_WITH_USER_VERIFICATION Si l'authentification multifacteur est facultative dans votre groupe d'utilisateurs, les utilisateurs qui ont activé l'authentification multifacteur ne peuvent pas se connecter à l'aide d'un premier facteur OTP. Les utilisateurs qui n'ont pas de préférence MFA dans un groupe MFA-optional d'utilisateurs peuvent se connecter sans mot de passe. Pour de plus amples informations, veuillez consulter Ce qu'il faut savoir sur le MFA des groupes d'utilisateurs.

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

Les clés d'accès simplifient l'expérience utilisateur en éliminant la nécessité de mémoriser des mots de passe complexes ou de saisir des OTP. Les clés d'accès sont basées sur WebAuthn les normes CTAP2 é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 API pour les applications Web ou mobiles afin de 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 et d'interagir avec un authentificateur de clé d'accès.

Lorsqu'un utilisateur enregistre un authentificateur auprès d'un site Web ou d'une application, l'authentificateur 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, les ID de clé et les métadonnées relatives à l'utilisateur et à l'application. Lorsque l'utilisateur souhaite s'authentifier dans l'application enregistrée à l'aide de 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 à l'aide de la clé publique enregistrée.

Note

Votre application ne reçoit aucun secret d'authentification que les utilisateurs fournissent à 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 code d'accès avant d'accorder l'accès, garantissant ainsi que seul l'utilisateur légitime peut autoriser les actions. D'autres authentificateurs ne disposent d'aucune fonctionnalité de vérification des utilisateurs, et certains peuvent ignorer la vérification des utilisateurs 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é à un 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 à la communication sans fil. Par exemple, les utilisateurs des navigateurs de bureau peuvent utiliser leur smartphone comme authentificateur de 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 des 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. Software-based les applications d'authentification 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 dépendantes. 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 l'identifiant de leur partie utilisatrice pour disposer de la bonne étendue d'authentification. Un identifiant de partie dépendante typique est le nom de domaine racine d'un serveur Web. Une clé d'accès avec cette spécification d'identification de partie utilisatrice peut authentifier ce domaine et ces sous-domaines. Les navigateurs et les plateformes refusent l'authentification par mot de passe lorsque l'URL du site Web auquel l'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 mot de passe, il peut sélectionner 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 met-il en œuvre 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 dans les AWS kits SDK 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 RS256 (-257). 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 pas en charge l'application des attestations pour le moment.

Dans votre groupe d'utilisateurs, vous pouvez configurer la vérification des utilisateurs de manière à ce 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 ce paramètre est sélectionné par défaut dans la console Amazon Cognito. Lorsque vous définissez la vérification utilisateur sur Préférentiel, 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 mot de passe, définissez ce paramètre sur Obligatoire.

L'identifiant de la partie utilisatrice (RP) que vous définissez 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 la marque de votre 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 identifiant RP 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 la connexion gérée et dans l'authentification SDK. La clé d'accès ne fonctionne que dans les applications mobiles avec Amazon Cognito qui permet de localiser un fichier d'.well-knownassociation avec votre identifiant 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 se réinscrire avec le nouvel identifiant RP.

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 à votre groupe d'utilisateurs au moins une fois. La connexion gérée supprime des efforts importants liés à l'enregistrement des clés 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 créé 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 mot de passe. 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 demande un nom d'utilisateur, confirme que l'utilisateur a enregistré au moins une clé d'accès, puis invite l'utilisateur à se connecter par clé d'accès. De même, SDK-based les applications 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 nom de domaine complet du domaine de préfixe en tant que domaine. Third-party

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 le client de votre application pour autoriser le flux. USER_AUTH Dans la console Amazon Cognito, accédez au Sign-in menu situé sous Authentification dans la configuration de votre groupe d'utilisateurs. Modifiez les options pour la connexion basée sur vos choix et ajoutez un mot de passe à la liste des choix disponibles.

Accédez au menu Méthodes d'authentification et modifiez la clé d'accès.

  • La vérification des utilisateurs est le paramètre qui permet de déterminer si votre groupe d'utilisateurs nécessite des dispositifs à clé d'accès qui effectuent des contrôles supplémentaires pour vérifier que l'utilisateur actuel est autorisé à saisir une clé d'accès. Pour encourager les utilisateurs à configurer un appareil avec vérification utilisateur, mais sans l'exiger, sélectionnez Préféré. Pour ne prendre en charge que les appareils avec vérification par l'utilisateur, sélectionnez Obligatoire. Pour plus d'informations, consultez la section Vérification des utilisateurs sur w3.org.

  • Le domaine pour l'identifiant de la partie utilisatrice est l'identifiant que votre application transmettra dans les demandes d'enregistrement par clé d'accès des utilisateurs. Il définit la cible de la relation de confiance avec l'émetteur des clés d'accès des utilisateurs. Votre identifiant de partie utilisatrice peut être : le domaine de votre groupe d'utilisateurs si

    Domaine Cognito

    Le domaine de préfixe Amazon Cognito de votre groupe d'utilisateurs.

    Domaine personnalisé

    Le domaine personnalisé de votre groupe d'utilisateurs.

    Third-party domaine

    Le 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 ne possèdent pas de domaine et qui effectuent une authentification à l'aide d'un AWS SDK et de l'API des groupes d'utilisateurs dans le backend.

Accédez au menu Clients d'applications 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 UpdateUserPool demande CreateUserPool ou. L'WEB_AUTHNoption d'authentification par clé d'accès doit être accompagnée d'au moins une autre option. L'enregistrement par mot de passe nécessite une session d'authentification existante.

"SignInPolicy": { "AllowedFirstAuthFactors": [ "PASSWORD", "WEB_AUTHN" ] }

Configurez vos préférences de vérification utilisateur et votre ID RP dans le WebAuthnConfiguration paramètre d'une SetUserPoolMfaConfig demande. 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", "FactorConfiguration": "SINGLE_FACTOR" }

Configurez le client de votre application ExplicitAuthFlows avec l'option requise dans une UpdateUserPoolClient demande CreateUserPoolClient ou.

"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 les utilisateurs. Lorsque l'authentification par mot de passe est active dans votre groupe d'utilisateurs, Amazon Cognito invite les utilisateurs à configurer un mot de passe lorsqu'ils créent un nouveau compte utilisateur.

Amazon Cognito n'invite pas les utilisateurs à configurer une clé d'accès lorsqu'ils se sont déjà inscrits et qu'ils 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 de l'utilisateur. Dans cet exemple, Amazon Cognito les redirige à l'www.example.comaide d'un code d'autorisation que votre application échange contre des jetons.

  3. Dirigez l'utilisateur vers la page de votre clé d'enregistrement. L'utilisateur disposera d'un cookie de navigateur qui maintient sa session de connexion. L'URL de la clé d'accès prend client_id et redirect_uri paramètre. Amazon Cognito autorise uniquement les utilisateurs authentifiés à accéder à cette page. Connectez 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 demande, 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 des informations d'identification par clé d'accès avec des métadonnées dans un PublicKeyCreationOptions objet. Vous pouvez générer cet objet à l'aide des 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 RegistrationResponse JSON qui confirme l'enregistrement du mot de passe.

Pour démarrer le processus d'enregistrement de la 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. Voici le corps d'un exemple de GetWebAuthnRegistrationOptions demande.

{ "AccessToken": "eyJra456defEXAMPLE" }

La réponse de votre groupe d'utilisateurs contient l'PublicKeyCreationOptionsobjet. Présentez cet objet dans une demande d'API adressée à 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, la clé d'accès de votre utilisateur est enregistrée.

Sign in with a passkey

La connexion sans mot de passe ne comporte aucun élément AuthFlow que vous pouvez spécifier dans et. InitiateAuth AdminInitiateAuth Vous devez plutôt déclarer un AuthFlow of 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 à l'aide d'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 AuthenticationResponse JSON.

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

MFA après la connexion

Vous pouvez configurer les utilisateurs qui terminent leur connexion à l'aide d'un flux nom d'utilisateur-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 générant du code. Le MFA est distinct de la connexion sans mot de passe avec des mots de passe à usage unique. Cependant, les clés d'accès avec vérification par l'utilisateur peuvent satisfaire aux exigences du MFA en tant que premier facteur lorsque vous les configurez FactorConfiguration comme MULTI_FACTOR_WITH_USER_VERIFICATION dans votre groupe d'utilisateurs. WebAuthnConfiguration Les clés d'accès ne peuvent pas être utilisées comme deuxième facteur lors de la connexion par mot de passe. Pour les flux basés sur des mots de passe, le MFA dans les groupes d'utilisateurs est un modèle challenge-réponse dans lequel un utilisateur démontre d'abord qu'il connaît le mot de passe, puis démontre qu'il a accès à son appareil de second facteur enregistré.

Actualiser les jetons

Lorsque vous souhaitez que les utilisateurs restent connectés sans avoir à saisir à nouveau leurs informations d'identification, les jetons d'actualisation sont l'outil dont dispose votre application pour maintenir la session d'un utilisateur. Les applications peuvent présenter des jetons d'actualisation à votre groupe d'utilisateurs et les échanger contre un nouvel identifiant et des jetons d'accès. Grâce à l'actualisation des jetons, vous pouvez vous assurer qu'un utilisateur connecté est toujours actif, obtenir des informations d'attributs à jour et mettre à jour les droits de contrôle d'accès sans intervention de l'utilisateur.

Ressources de mise en œuvre

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 requêtes adressées à un service CAPTCHA, des demandes adressées à une API de service MFA externe, ou toutes ces requêtes en séquence.

Flux d'authentification personnalisé

Les groupes d'utilisateurs Amazon Cognito permettent également d'utiliser des flux d'authentification personnalisés, ce qui peut vous aider à créer un modèle d'authentification challenge/response basé sur des AWS Lambda déclencheurs.

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.