Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Flux d'authentification de groupe d'utilisateurs
Amazon Cognito propose plusieurs méthodes d'authentification des utilisateurs. Tous les groupes d'utilisateurs, que vous disposiez d'un domaine ou non, peuvent authentifier les utilisateurs des groupes API d'utilisateurs. Si vous ajoutez un domaine à votre groupe d'utilisateurs, vous pouvez utiliser les points de terminaison de groupe d'utilisateurs. Les groupes d'utilisateurs prennent API en charge une variété de modèles d'autorisation et de flux de API demandes pour les demandes.
Pour vérifier l'identité des utilisateurs, Amazon Cognito prend en charge les flux d'authentification qui intègrent de nouveaux types de question de sécurité, en plus des mots de passe. L'authentification Amazon Cognito nécessite généralement que vous implémentiez deux API opérations dans l'ordre suivant :
Un utilisateur s'authentifie en répondant à des demandes de vérification successives jusqu'à ce que l'authentification échoue ou qu'Amazon Cognito émette des jetons pour l'utilisateur. Vous pouvez répéter ces étapes avec Amazon Cognito, dans un processus qui inclut différentes demandes de vérification, pour prendre en charge n'importe quel flux d'authentification personnalisé.
En général, votre application génère une invite pour recueillir des informations auprès de votre utilisateur et envoie ces informations dans une API demande à Amazon Cognito. Prenons l'exemple d'un InitiateAuth
flux dans un groupe d'utilisateurs dans lequel vous avez configuré votre utilisateur avec l'authentification multifactorielle (MFA).
-
Votre application demande à votre utilisateur de fournir son nom d'utilisateur et son mot de passe.
-
Vous incluez le nom d'utilisateur et le mot de passe en tant que paramètres dans
InitiateAuth
. -
Amazon Cognito renvoie un défi
SMS_MFA
et un identifiant de session. -
Votre application invite l'utilisateur à saisir le MFA code depuis son téléphone.
-
Vous devez inclure ce code et l'identifiant de session dans la demande
RespondToAuthChallenge
.
Selon les fonctionnalités de votre groupe d'utilisateurs, vous pouvez vous retrouver face à plusieurs défis InitiateAuth
avant que votre application ne récupère des jetons depuis Amazon Cognito. Amazon Cognito inclut une chaîne de session dans la réponse à chaque demande. Pour combiner vos API demandes dans un flux d'authentification, incluez la chaîne de session de la réponse à la demande précédente dans chaque demande suivante. Par défaut, vos utilisateurs disposent de trois minutes pour terminer chaque défi avant l'expiration de la chaîne de session. Pour modifier cette période, modifiez la Durée de session d'authentification du client d'application. La procédure suivante explique comment modifier ce paramètre dans la configuration de votre client d'application.
Note
Les paramètres de durée de session du flux d'authentification s'appliquent à l'authentification auprès des groupes d'utilisateurs Amazon Cognito. API L'interface utilisateur hébergée Amazon Cognito définit la durée de session sur 3 minutes pour l'authentification multifactorielle et sur 8 minutes pour les codes de réinitialisation de mot de passe.
Pour plus d'informations sur les clients d'application, consultez Paramètres spécifiques à l'application avec les clients d'applications.
Vous pouvez utiliser des AWS Lambda déclencheurs pour personnaliser la façon dont les utilisateurs s'authentifient. Ces déclencheurs émettent et vérifient leurs propres défis dans le cadre du flux d'authentification.
Vous pouvez également utiliser le flux d'authentification de l'administration pour des serveurs backend sécurisés. Vous pouvez utiliser le flux d'authentification de migration des utilisateurs pour permettre la migration des utilisateurs sans exiger de vos utilisateurs qu'ils réinitialisent leurs mots de passe.
Comportement de verrouillage d'Amazon Cognito en cas d'échec des tentatives de connexion
Après cinq tentatives infructueuses de connexion non authentifiées ou IAM authentifiées avec un mot de passe, Amazon Cognito verrouille votre utilisateur pendant une seconde. La durée du verrouillage double ensuite après chaque nouvelle tentative infructueuse, jusqu'à un maximum d'environ 15 minutes. Les tentatives effectuées pendant une période de verrouillage génèrent une exception Password attempts exceeded
et n'affectent pas la durée des périodes de verrouillage suivantes. Pour un nombre cumulé de tentatives de connexion infructueuses n, à l'exclusion des exceptions Password attempts
exceeded
, Amazon Cognito verrouille votre utilisateur pendant 2^(n-5) secondes. Pour restaurer l'état initial du verrouillage (n=0), votre utilisateur doit parvenir à se connecter à l'issue d'une période de verrouillage ou ne lancer à aucun moment de tentative de connexion pendant 15 minutes consécutives après le verrouillage. Ce comportement est susceptible d'être modifié. Ce comportement ne s'applique pas aux défis personnalisés à moins qu'ils n'effectuent également une authentification basée sur un mot de passe.
Rubriques
- Flux d'authentification côté client
- Flux d'authentification côté serveur
- Flux d'authentification personnalisé
- Flux d'authentification intégré et stimulations
- Flux d'authentification personnalisé et stimulations
- Utiliser la vérification du SRP mot de passe dans le flux d'authentification personnalisé
- Flux d'authentification de l'administration
- Flux d'authentification pour la migration d'utilisateurs
Flux d'authentification côté client
Le processus suivant fonctionne pour les applications côté client utilisateur que vous créez avec AWS Amplify
-
L'utilisateur entre le nom d'utilisateur et le mot de passe dans l'application.
-
L'application lance l'
InitiateAuth
opération avec le nom d'utilisateur et les détails du mot de passe sécurisé (SRP) de l'utilisateur.Cette API opération renvoie les paramètres d'authentification.
Note
L'application génère des SRP informations grâce aux SRP fonctionnalités intégrées d'Amazon Cognito. AWS SDKs
-
L'appli appelle l'opération
RespondToAuthChallenge
. Si l'appel aboutit, Amazon Cognito retourne les jetons de l'utilisateur et le flux d'authentification est terminé.Si Amazon Cognito requiert une autre demande de vérification, l'appel à
RespondToAuthChallenge
ne renvoie aucun jeton. À la place, l'appel renvoie une session. -
Si elle
RespondToAuthChallenge
renvoie une session, l'application appelleRespondToAuthChallenge
à nouveau, cette fois avec la session et la réponse au défi (par exemple, MFA du code).
Flux d'authentification côté serveur
Si vous n'avez pas d'application utilisateur, mais que vous utilisez plutôt un backend sécurisé Java, Ruby ou Node.js ou une application côté serveur, vous pouvez utiliser l'application authentifiée côté serveur API pour les groupes d'utilisateurs Amazon Cognito.
Pour les applications côté serveur, l'authentification d'un groupe d'utilisateurs est similaire à celle des applications côté client, à l'exception des aspects suivants :
-
L'application côté serveur appelle l'
AdminInitiateAuth
APIopération (au lieu deInitiateAuth
). Cette opération nécessite des AWS informations d'identification avec des autorisations telles quecognito-idp:AdminInitiateAuth
etcognito-idp:AdminRespondToAuthChallenge
. Cette opération renvoie les paramètres d'authentification requis. -
Une fois que l'application côté serveur possède les paramètres d'authentification, elle appelle l'
AdminRespondToAuthChallenge
APIopération (au lieu deRespondToAuthChallenge
). L'AdminRespondToAuthChallenge
APIopération ne réussit que lorsque vous fournissez des AWS informations d'identification.
Pour plus d'informations sur la signature des API demandes Amazon Cognito avec des AWS informations d'identification, consultez le processus de signature Signature version 4 dans le manuel de référence AWS général.
Les AdminRespondToAuthChallenge
API opérations AdminInitiateAuth
et ne peuvent pas accepter les informations username-and-password d'identification des utilisateurs pour la connexion des administrateurs, sauf si vous les autorisez explicitement à le faire de l'une des manières suivantes :
-
Incluez
ALLOW_ADMIN_USER_PASSWORD_AUTH
(anciennement connu sous le nomADMIN_NO_SRP_AUTH
) dans le paramètreExplicitAuthFlow
lorsque vous appelezCreateUserPoolClient
ouUpdateUserPoolClient
. -
Ajoutez
ALLOW_ADMIN_USER_PASSWORD_AUTH
dans la liste Flux d'authentification pour votre client d'application. Configurez les clients d'application dans l'onglet App integration (Intégration d'application) de votre groupe d'utilisateurs, sous App clients and analytics (Clients d'application et analytique). Pour de plus amples informations, veuillez consulter Paramètres spécifiques à l'application avec les clients d'applications.
Flux d'authentification personnalisé
Les groupes d'utilisateurs Amazon Cognito permettent également d'utiliser des flux d'authentification personnalisés, qui peuvent vous aider à créer un modèle d'authentification basé sur les défis et les réponses à l'aide de déclencheurs. AWS Lambda
Le flux d'authentification personnalisé permet des cycles de stimulation/réponse personnalisés pour répondre à des besoins différents. Le flux commence par un appel à l'InitiateAuth
APIopération qui indique le type d'authentification à utiliser et fournit les éventuels paramètres d'authentification initiaux. Amazon Cognito répond à l'appel InitiateAuth
avec l'un des types d'informations suivants :
-
Une stimulation pour l'utilisateur avec une session et des paramètres.
-
Une erreur si l'utilisateur ne parvient pas à s'authentifier.
-
Les jetons d'identification, d'accès et d'actualisation si les paramètres fournis dans l'appel
InitiateAuth
sont suffisants pour connecter l'utilisateur. (En règle générale, l'utilisateur ou l'appli doit d'abord répondre à une stimulation, mais votre code personnalisé doit le déterminer.)
Si Amazon Cognito répond à l'appel InitiateAuth
avec une demande de vérification, l'application recueille davantage d'informations et appelle l'opération RespondToAuthChallenge
. Cet appel fournit les réponses à la demande de vérification et les renvoie à la session. Amazon Cognito répond à l'appel RespondToAuthChallenge
de la même manière qu'à l'appel InitiateAuth
. Si l'utilisateur s'est connecté, Amazon Cognito fournit des jetons ou si l'utilisateur n'est pas connecté, Amazon Cognito fournit une autre demande de vérification ou une erreur. Si Amazon Cognito renvoie une autre demande de vérification, la séquence se reproduit et l'application appelle RespondToAuthChallenge
jusqu'à ce que l'utilisateur se connecte avec succès ou qu'une erreur soit retournée. Pour plus de détails sur les RespondToAuthChallenge
API opérations InitiateAuth
et, consultez la APIdocumentation.
Flux d'authentification intégré et stimulations
Amazon Cognito contient des ChallengeName
valeurs AuthFlow
et intégrées qui permettent à un flux d'authentification standard de valider un nom d'utilisateur et un mot de passe via le protocole Secure Remote Password (SRP). Ils AWS SDKs ont intégré la prise en charge de ces flux avec Amazon Cognito.
Le flux commence par l'envoi de USER_SRP_AUTH
comme AuthFlow
pour InitiateAuth
. Vous envoyez également les valeurs USERNAME
et SRP_A
dans AuthParameters
. Si l'appel InitiateAuth
aboutit, la réponse a inclus PASSWORD_VERIFIER
comme ChallengeName
et SRP_B
dans les paramètres de stimulation. L'appli appelle ensuite RespondToAuthChallenge
avec le PASSWORD_VERIFIER
ChallengeName
et les paramètres nécessaires dans ChallengeResponses
. Si l'appel à RespondToAuthChallenge
réussit et que l'utilisateur est connecté, Amazon Cognito émet des jetons. Si vous avez activé l'authentification multifactorielle (MFA) pour l'utilisateur, Amazon Cognito renvoie ChallengeName
le code de. SMS_MFA
L'application peut fournir le code nécessaire via un autre appel à RespondToAuthChallenge
.
Flux d'authentification personnalisé et stimulations
Pour initier un flux d'authentification personnalisé, une appli peut appeler InitiateAuth
avec CUSTOM_AUTH
comme paramètre Authflow
. Avec un flux d'authentification personnalisé, trois déclencheurs Lambda contrôlent les demandes de vérification et la vérification des réponses.
-
Le déclencheur Lambda
DefineAuthChallenge
utilise en entrée un tableau de session de demandes de vérification et de réponses précédentes. Il affiche ensuite le nom de la demande de vérification suivante et les booléens qui indiquent si l'utilisateur est authentifié et peut recevoir des jetons. Ce déclencheur Lambda est une machine d'état qui contrôle le parcours de l'utilisateur au fil des stimulations. -
Le déclencheur Lambda
CreateAuthChallenge
prend un nom de demande de vérification en entrée et génère le défi et les paramètres permettant d'évaluer la réponse. QuandDefineAuthChallenge
retourneCUSTOM_CHALLENGE
comme demande de vérification suivante, le flux d'authentification appelleCreateAuthChallenge
. Le déclencheur LambdaCreateAuthChallenge
transmet le type de demande de vérification suivant dans le paramètre de métadonnées de demande de vérification. -
La fonction Lambda
VerifyAuthChallengeResponse
évalue la réponse et renvoie une valeur booléenne indiquant si la réponse était valide.
Un flux d'authentification personnalisé peut également utiliser une combinaison de défis intégrés, tels que la vérification et le passage des mots de SRP MFA passeSMS. Il peut utiliser des défis personnalisés tels que CAPTCHA des questions secrètes.
Utiliser la vérification du SRP mot de passe dans le flux d'authentification personnalisé
Si vous souhaitez l'inclure SRP dans un flux d'authentification personnalisé, vous devez commencer parSRP.
-
Pour lancer la vérification du SRP mot de passe dans un flux personnalisé, l'application appelle
InitiateAuth
enCUSTOM_AUTH
tant queAuthflow
. Sur laAuthParameters
carte, la demande de votre application inclutSRP_A:
(la valeur SRP A) etCHALLENGE_NAME: SRP_A
. -
Le flux
CUSTOM_AUTH
invoque le déclencheur LambdaDefineAuthChallenge
avec une session initiale dechallengeName: SRP_A
etchallengeResult: true
. Votre fonction Lambda répond avecchallengeName: PASSWORD_VERIFIER
,issueTokens: false
etfailAuthentication: false
. -
L'application doit ensuite appeler
RespondToAuthChallenge
avecchallengeName: PASSWORD_VERIFIER
les autres paramètres requis sur SRP lachallengeResponses
carte. -
Si Amazon Cognito vérifie le mot de passe,
RespondToAuthChallenge
appelle le déclencheur LambdaDefineAuthChallenge
avec une deuxième session dechallengeName: PASSWORD_VERIFIER
etchallengeResult: true
. À ce stade, le déclencheur LambdaDefineAuthChallenge
répond avecchallengeName: CUSTOM_CHALLENGE
pour démarrer la stimulation personnalisée. -
Si cette option MFA est activée pour un utilisateur, une fois qu'Amazon Cognito a vérifié le mot de passe, celui-ci est invité à le configurer ou à se connecter avec celui-ci. MFA
Note
La page web de connexion hébergée Amazon Cognito ne peut pas activer les Déclencheurs Lambda création d'une stimulation d'authentification personnalisée.
Pour plus d'informations sur les déclencheurs Lambda, ainsi qu'un exemple de code, consultez Personnalisation des flux de travail de groupe d'utilisateurs avec des déclencheurs Lambda.
Flux d'authentification de l'administration
La meilleure pratique en matière d'authentification consiste à utiliser les API opérations décrites dans Flux d'authentification personnalisé with SRP pour vérifier le mot de passe. L' AWS SDKsutilisation de cette approche, et cette approche les aide à utiliserSRP. Toutefois, si vous souhaitez éviter les SRP calculs, un autre ensemble d'APIopérations d'administration est disponible pour les serveurs principaux sécurisés. Pour ces implémentations d'administration backend, utilisez AdminInitiateAuth
au lieu de InitiateAuth
. Utilisez également AdminRespondToAuthChallenge
au lieu de RespondToAuthChallenge
. Comme vous pouvez envoyer le mot de passe sous forme de texte brut, vous n'avez pas à effectuer de SRP calculs lorsque vous utilisez ces opérations. Voici un exemple :
AdminInitiateAuth Request { "AuthFlow":"ADMIN_USER_PASSWORD_AUTH", "AuthParameters":{ "USERNAME":"
<username>
", "PASSWORD":"<password>
" }, "ClientId":"<clientId>
", "UserPoolId":"<userPoolId>
" }
Ces opérations d'authentification de l'administration requièrent les informations d'identification d'un développeur et utilisent le processus de signature d' AWS
Signature Version 4 (SigV4). Ces opérations sont disponibles en standard AWS
SDKs, y compris Node.js, ce qui est pratique pour les fonctions Lambda. Pour utiliser ces opérations et leur faire accepter des mots de passe en texte brut, vous devez les activer pour l'application dans la console. Vous pouvez également transmettre ADMIN_USER_PASSWORD_AUTH
pour le paramètre ExplicitAuthFlow
dans les appels à CreateUserPoolClient
ou UpdateUserPoolClient
. Les opérations InitiateAuth
et RespondToAuthChallenge
n'acceptent pas ADMIN_USER_PASSWORD_AUTH
AuthFlow
.
Dans la réponse AdminInitiateAuth
ChallengeParameters
, l'attribut USER_ID_FOR_SRP
, s'il est présent, contient le nom d'utilisateur réel de l'utilisateur, et non pas un alias (tel qu'une adresse e-mail ou un numéro de téléphone). Dans votre appel à AdminRespondToAuthChallenge
, dans le ChallengeResponses
, vous devez transmettre ce nom d'utilisateur dans le paramètre USERNAME
.
Note
Comme les implémentations d'administrateur backend utilisent le flux d'authentification d'administrateur, ce flux ne prend pas en charge la fonctionnalité de suivi des dispositifs. Lorsque la fonctionnalité de suivi des dispositifs est activée, l'authentification d'administrateur réussit, mais tout appel visant à actualiser le jeton d'accès échoue.
Flux d'authentification pour la migration d'utilisateurs
Un déclencheur Lambda de migration d'utilisateur facilite la migration d'utilisateurs à partir d'un système de gestion des utilisateurs hérité vers votre groupe d'utilisateurs. Si vous choisissez le flux d'authentification USER_PASSWORD_AUTH
, les utilisateurs n'ont pas à réinitialiser leurs mots de passe durant la migration des utilisateurs. Ce flux envoie les mots de passe de vos utilisateurs au service via une SSL connexion cryptée lors de l'authentification.
Une fois que vous avez migré tous vos utilisateurs, passez aux flux les plus sécurisésSRP. Le SRP flux n'envoie aucun mot de passe sur le réseau.
Pour en savoir plus sur les déclencheurs Lambda, consultez Personnalisation des flux de travail de groupe d'utilisateurs avec des déclencheurs Lambda.
Pour plus d'informations sur la migration d'utilisateurs avec un déclencheur Lambda, consultez Importation d'utilisateurs avec un déclencheur Lambda de migration d'utilisateur.