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.
-
Dois-je autoriser les utilisateurs à se connecter à l'aide des informations d'identification d'autres fournisseurs d'identité (IdPs) ?
-
Un nom d'utilisateur et un mot de passe sont-ils une preuve d'identité suffisante ?
-
Mes demandes d'authentification pour l'authentification par nom d'utilisateur et mot de passe peuvent-elles être interceptées ? Est-ce que je veux que mon application transmette des mots de passe ou négocie l'authentification à l'aide de hachages et de sels ?
-
Dois-je autoriser les utilisateurs à ignorer la saisie de leur mot de passe et à recevoir un mot de passe à usage unique qui les connecte ?
-
Dois-je autoriser les utilisateurs à se connecter à l'aide d'une empreinte digitale, d'un visage ou d'une clé de sécurité matérielle ?
-
Quand dois-je avoir besoin de l'authentification multifacteur (MFA), le cas échéant ?
-
Est-ce que je souhaite poursuivre les sessions utilisateur sans qu'il soit demandé à nouveau de saisir des informations d'identification ?
-
Est-ce que je souhaite étendre mon modèle d'autorisation au-delà des fonctionnalités intégrées d'Amazon Cognito ?
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.
Ressources de mise en œuvre
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.
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.
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.
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.
-
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.
-
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.
-
Les utilisateurs qui n'ont pas de mot de passe peuvent soumettre des demandes d'ChangePasswordAPI sans
PreviousPasswordce 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 deSessiondemande. -
Un AuthFlow des
USER_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
Sessioncode est valide et n'a pas expiré. -
L'utilisateur est éligible à la méthode d'authentification OTP.
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
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
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
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é.
Ressources de mise en œuvre
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.
Ressources de mise en œuvre
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
InitiateAuthsont 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
DefineAuthChallengeutilise 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
CreateAuthChallengeprend 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. QuandDefineAuthChallengeretourneCUSTOM_CHALLENGEcomme demande de vérification suivante, le flux d'authentification appelleCreateAuthChallenge. Le déclencheur LambdaCreateAuthChallengetransmet 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
InitiateAuthavecCUSTOM_AUTHen tant queAuthflow. Dans le mappageAuthParameters, la demande de votre application inclutSRP_A:(la valeur SRP A) etCHALLENGE_NAME: SRP_A. -
Le flux
CUSTOM_AUTHinvoque le déclencheur LambdaDefineAuthChallengeavec une session initiale dechallengeName: SRP_AetchallengeResult: true. Votre fonction Lambda répond avecchallengeName: PASSWORD_VERIFIER,issueTokens: falseetfailAuthentication: false. -
L'appli doit ensuite appeler
RespondToAuthChallengeavecchallengeName: PASSWORD_VERIFIERet les autres paramètres requis pour le protocole SRP dans la cartechallengeResponses. -
Si Amazon Cognito vérifie le mot de passe,
RespondToAuthChallengeappelle le déclencheur LambdaDefineAuthChallengeavec une deuxième session dechallengeName: PASSWORD_VERIFIERetchallengeResult: true. À ce stade, le déclencheur LambdaDefineAuthChallengerépond avecchallengeName: CUSTOM_CHALLENGEpour 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.