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.
Lorsque vous débutez avec l'authentification des groupes d'utilisateurs, vous devez choisir le modèle d'autorisation de votre application. L'authentification Amazon Cognito nécessite généralement que vous implémentiez deux opérations d'API dans l'ordre. Les opérations d'API que vous utilisez pour l'authentification dépendent des caractéristiques de votre application. Les clients publics, où l'application est distribuée aux utilisateurs, utilisent l'authentification publique, où les demandes de connexion ne nécessitent pas d'autorisation. Les clients côté serveur, où la logique de l'application est hébergée sur un système distant, peuvent protéger les opérations d'authentification avec l'autorisation IAM pour les demandes de connexion. Les paires d'opérations d'API suivantes et les méthodes du SDK correspondantes correspondent à chacun des modèles d'autorisation disponibles.
Pour comparer l'authentification des API et consulter la liste complète des opérations d'API et de leurs modèles d'autorisation, consultezComprendre l'API, l'OIDC et l'authentification par pages de connexion gérées.
InitiateAuth
et RespondToAuthChallenge
ne sont pas authentifiés APIs pour être utilisés avec des clients d'applications publiques côté client. Pour plus d’informations, consultez Options d'authentification côté client et Comprendre l'API, l'OIDC et l'authentification par pages de connexion gérées.
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é.
Rubriques
Options d'authentification côté serveur
Les applications Web et autres applications côté serveur implémentent l'authentification dans une session sur un serveur distant, généralement dans un navigateur qui initie une session sur ce serveur. Les applications côté serveur présentent généralement les caractéristiques suivantes.
-
Ils sont intégrés à une application installée sur un serveur dans des langages tels que Java, Ruby ou Node.js.
-
Ils se connectent à des clients d'applications de pool d'utilisateurs susceptibles de détenir un secret client, appelés clients confidentiels.
-
Ils ont accès aux AWS informations d'identification.
-
Ils invoquent la connexion gérée pour l'authentification ou utilisent des opérations autorisées par IAM dans l'API des groupes d'utilisateurs avec un AWS SDK.
-
Ils servent des clients internes et peuvent servir des clients publics.
Les opérations côté serveur avec l'API des groupes d'utilisateurs peuvent utiliser des mots de passe, des mots de passe à usage unique ou des clés d'accès comme principal facteur de connexion. 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 envoie une demande d'AdminInitiateAuthAPI. Cette opération nécessite des AWS informations d'identification avec des autorisations telles que
cognito-idp:AdminInitiateAuth
etcognito-idp:AdminRespondToAuthChallenge
. L'opération renvoie le résultat du défi ou de l'authentification requis. -
Lorsque l'application reçoit un défi, elle envoie une demande d'AdminRespondToAuthChallengeAPI. Le fonctionnement de
AdminRespondToAuthChallenge
l'API nécessite également des AWS informations d'identification.
Pour plus d'informations sur la signature des demandes d'API 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.
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
Étant donné que les implémentations d'administration principale utilisent le flux d'authentification des administrateurs, celui-ci ne prend pas en charge les appareils mémorisés. 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.
Options d'authentification côté client
Les applications mobiles et les autres types d'applications côté client installés sur les appareils des utilisateurs présentent généralement les caractéristiques suivantes.
-
Ils sont conçus dans des langages tels que React Native, Flutter et Swift et sont déployés sur les appareils des utilisateurs.
-
Ils se connectent à des clients d'applications de pool d'utilisateurs qui n'ont pas de secret client, appelés clients publics.
-
Ils n'ont pas accès aux AWS informations d'identification qui autoriseraient les demandes d'API autorisées par IAM.
-
Ils invoquent la connexion gérée pour l'authentification, ou utilisent des opérations publiques et autorisées par des jetons dans l'API des groupes d'utilisateurs avec un AWS SDK.
-
Ils servent les clients publics et permettent à quiconque de s'inscrire et de se connecter.
Les opérations côté client avec l'API des groupes d'utilisateurs peuvent utiliser des mots de passe, des mots de passe à usage unique ou des clés d'accès comme principal facteur de connexion. 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 appelle l'opération
InitiateAuth
avec le nom d'utilisateur et les informations SRP (Secure Remote Password) détaillées de l'utilisateur.Cette opération d'API renvoie les paramètres d'authentification.
Note
L'application génère les détails du SRP à l'aide des fonctionnalités SRP d'Amazon Cognito intégrées à. 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
RespondToAuthChallenge
renvoie une session, l'appli appelleRespondToAuthChallenge
à nouveau, cette fois avec la session et la réponse à la stimulation (par exemple, le code MFA).
Comprendre l'API, l'OIDC et l'authentification par pages de connexion gérées
Les groupes d'utilisateurs Amazon Cognito sont une combinaison de plusieurs technologies d'authentification. Ils s'appuient sur des fournisseurs d'identité externes (IdPs). Ils sont destinés IdPs aux applications qui implémentent l'authentification avec OpenID Connect (OIDC). SDKs Ils fournissent une authentification en tant qu'émetteurs de jetons Web JSON (JWTs) similaire à l'authentification OIDC, mais dans le cadre de méthodes d'API qui en font partie. AWS SDKs Ils peuvent également être des points d'entrée sécurisés pour vos applications.
Si vous voulez inscrire, connecter et gérer les utilisateurs de votre groupe d’utilisateurs, deux options s’offrent à vous.
-
Vos pages de connexion gérées et l'interface utilisateur hébergée classique incluent les points de terminaison interactifs avec l'utilisateur de connexion gérée et les points de terminaison de fédération qui gèrent les rôles d'IdP et de partie utilisatrice. Ils constituent un ensemble de pages Web publiques qu’Amazon Cognito active lorsque vous choisissez un domaine pour votre groupe d’utilisateurs. Pour démarrer rapidement avec les fonctionnalités d'authentification et d'autorisation des groupes d'utilisateurs Amazon Cognito, notamment les pages d'inscription, de connexion, de gestion des mots de passe et d'authentification multifactorielle (MFA), utilisez l'interface utilisateur intégrée de la connexion gérée.
Les autres points de terminaison du groupe d'utilisateurs facilitent l'authentification auprès de fournisseurs d'identité tiers (IdPs). Les services qu’ils fournissent incluent ce qui suit.
-
Points de terminaison de rappel des fournisseurs de services pour les réclamations authentifiées provenant de vous, comme et. IdPs
saml2/idpresponse
oauth2/idpresponse
Lorsqu’Amazon Cognito est un fournisseur de services intermédiaire (SP) entre votre application et votre fournisseur d’identité, les points de terminaison de rappel représentent le service. -
Des points de terminaison qui fournissent des informations sur votre environnement, comme
oauth2/userInfo
et/.well-known/jwks.json
. Votre application utilise ces points de terminaison lorsqu'elle vérifie des jetons ou récupère des données de profil utilisateur dans les bibliothèques de développement OIDC ou OAuth 2.0.
-
-
L'API des groupes d'utilisateurs Amazon Cognito est un ensemble d'outils permettant à votre application Web ou mobile d'authentifier les utilisateurs après avoir collecté les informations de connexion dans votre propre interface personnalisée. L’authentification par API des groupes d’utilisateurs produit les jetons Web JSON suivants.
-
Un jeton d’identité avec des champs standard d’attribut vérifiables provenant de votre utilisateur.
-
Un jeton d’accès qui autorise votre utilisateur à créer des demandes d’API autorisées par jeton sur un point de terminaison de service AWS.
Note
Par défaut, les jetons d’accès issus de l’authentification par API des groupes d’utilisateurs contiennent uniquement la portée
aws.cognito.signin.user.admin
. Pour générer un jeton d’accès avec des portées supplémentaires, par exemple pour autoriser une demande à une API tierce, demandez des portées pendant l’authentification via les points de terminaison de votre groupe d’utilisateurs ou ajoutez des portées personnalisées dans un Déclencheur Lambda avant génération de jeton. La personnalisation des jetons d'accès augmente les coûts de votre AWS facture. -
Un jeton d'actualisation qui autorise les demandes de nouveaux identifiants et jetons d'accès, et qui actualise l'identité des utilisateurs et les propriétés de contrôle d'accès.
-
Vous pouvez lier un utilisateur fédéré, qui se connecterait normalement via les points de terminaison des groupes d’utilisateurs, à un utilisateur dont le profil est local à votre groupe d’utilisateurs. Un utilisateur local existe exclusivement dans l’annuaire de votre groupe d’utilisateurs sans fédération via un fournisseur d’identité externe. Si vous liez leur identité fédérée à un utilisateur local dans une demande d'AdminLinkProviderForUserAPI, ils peuvent se connecter à l'aide de l'API des groupes d'utilisateurs. Pour de plus amples informations, veuillez consulter Liaison d'utilisateurs fédérés à un profil utilisateur existant.
L’API des groupes d’utilisateurs Amazon Cognito est à double usage.
-
D’une part, elle permet de créer et de configurer les ressources de vos groupes d’utilisateurs Amazon Cognito. Par exemple, vous pouvez créer des groupes d'utilisateurs, ajouter des AWS Lambda déclencheurs et configurer le domaine du groupe d'utilisateurs qui héberge vos pages de connexion gérées.
-
Il effectue l'inscription, la connexion et d'autres opérations utilisateur pour les utilisateurs locaux et liés.
Exemple de scénario avec l’API des groupes d’utilisateurs Amazon Cognito
-
Votre utilisateur sélectionne un bouton « Create an account » (Créer un compte) que vous avez créé dans votre application. Il saisit une adresse e-mail et un mot de passe.
-
Votre application envoie une demande d'SignUpAPI et crée un nouvel utilisateur dans votre groupe d'utilisateurs.
-
Votre application demande à votre utilisateur un code de confirmation par e-mail. L’utilisateur saisit le code qu’il a reçu dans un e-mail.
-
Votre application envoie une demande d'ConfirmSignUpAPI avec le code de confirmation de l'utilisateur.
-
Votre application demande à votre utilisateur son nom d’utilisateur et son mot de passe et saisit ces informations.
-
Votre application envoie une demande d'InitiateAuthAPI et stocke un jeton d'identification, un jeton d'accès et un jeton d'actualisation. Votre application appelle les bibliothèques OIDC pour gérer les jetons de l’utilisateur et faire persister la session de cet utilisateur.
Dans l’API des groupes d’utilisateurs Amazon Cognito, vous ne pouvez pas connecter les utilisateurs fédérés via un fournisseur d’identité. Vous devez authentifier ces utilisateurs via les points de terminaison de votre groupe d’utilisateurs. Pour plus d'informations sur les points de terminaison du groupe d'utilisateurs qui incluent la connexion gérée, consultezPoints de terminaison du groupe d'utilisateurs et référence de connexion gérée.
Vos utilisateurs fédérés peuvent commencer par une connexion gérée et sélectionner leur IdP, ou vous pouvez ignorer la connexion gérée et envoyer vos utilisateurs directement vers votre IdP pour qu'ils se connectent. Lorsque votre demande d’API à destination du Point de terminaison d’autorisation comporte un paramètre de fournisseur d’identité, Amazon Cognito redirige discrètement votre utilisateur vers la page de connexion du fournisseur d’identité.
Exemple de scénario avec des pages de connexion gérées
-
Votre utilisateur sélectionne un bouton « Create an account » (Créer un compte) que vous avez créé dans votre application.
-
La connexion gérée présente à votre utilisateur une liste des fournisseurs d'identité sociale pour lesquels vous avez enregistré des informations d'identification de développeur. Votre utilisateur choisit Apple.
-
Votre application adresse une demande au Point de terminaison d’autorisation avec le nom de fournisseur
SignInWithApple
. -
Le navigateur de votre utilisateur ouvre la page d'authentification Apple. Votre utilisateur se connecte et choisit d'autoriser Amazon Cognito à lire les informations de son profil.
-
Amazon Cognito confirme le jeton d’accès Apple et interroge le profil Apple de votre utilisateur.
-
Votre utilisateur présente un code d’autorisation Amazon Cognito à votre application.
-
La bibliothèque OIDC de votre application échange le code d'autorisation avec le Point de terminaison de jeton et stocke un jeton d'identification, un jeton d'accès et un jeton d'actualisation émis par le groupe d'utilisateurs. Votre application utilise les bibliothèques OIDC pour gérer les jetons de votre utilisateur et maintenir une session permanente pour cet utilisateur.
L'API des groupes d'utilisateurs et les pages de connexion gérées prennent en charge divers scénarios, décrits dans ce guide. Les sections suivantes examinent la façon dont l’API des groupes d’utilisateurs se divise en différentes classes qui répondent à vos exigences en matière d’inscription, de connexion et de gestion des ressources.
Opérations d’API authentifiées et non authentifiées des groupes d’utilisateurs Amazon Cognito
L’API des groupes d’utilisateurs Amazon Cognito, qui est à la fois une interface de gestion des ressources et une interface d’authentification et d’autorisation destinée à l’utilisateur, combine les modèles d’autorisation suivants dans ses opérations. En fonction de l’opération de l’API, vous serez peut-être amené à fournir une autorisation avec des informations d’identification IAM, un jeton d’accès, un jeton de session, un secret client ou une combinaison de ces éléments. Pour bon nombre d’opérations d’authentification et d’autorisation des utilisateurs, vous avez le choix entre différentes versions authentifiées et non authentifiées de la demande. Les opérations non authentifiées constituent une bonne pratique de sécurité pour les applications que vous distribuez à vos utilisateurs, comme les applications mobiles, car vous n’avez pas besoin d’inclure de secrets dans votre code.
Vous ne pouvez attribuer des autorisations de politiques IAM que pour les Opérations de gestion authentifiées par IAM et les Opérations utilisateur authentifiées par IAM.
Les opérations de gestion authentifiées par IAM permettent de modifier et d’afficher la configuration de votre groupe d’utilisateurs et de votre client d’application, comme vous le feriez dans la AWS Management Console.
Par exemple, pour modifier votre groupe d'utilisateurs dans une demande d'UpdateUserPoolAPI, vous devez présenter des AWS informations d'identification et des autorisations IAM pour mettre à jour la ressource.
Pour autoriser ces demandes dans le AWS Command Line Interface (AWS CLI) ou dans un AWS SDK, configurez votre environnement avec des variables d'environnement ou une configuration client qui ajoute des informations d'identification IAM à votre demande. Pour plus d'informations, consultez la section Accès à AWS l'aide de vos AWS informations d'identification dans le Références générales AWS. Vous pouvez également envoyer des demandes directement aux points de terminaison de service pour l’API des groupes d’utilisateurs Amazon Cognito. Vous devez autoriser ou signer ces demandes avec des AWS informations d'identification que vous intégrez dans l'en-tête de votre demande. Pour plus d'informations, consultez la section Signature des demandes AWS d'API.
Opérations de gestion authentifiées par IAM |
---|
AddCustomAttributes |
CreateGroup |
CreateIdentityProvider |
CreateResourceServer |
CreateUserImportJob |
CreateUserPool |
CreateUserPoolClient |
CreateUserPoolDomain |
DeleteGroup |
DeleteIdentityProvider |
DeleteResourceServer |
DeleteUserPool |
DeleteUserPoolClient |
DeleteUserPoolDomain |
DescribeIdentityProvider |
DescribeResourceServer |
DescribeRiskConfiguration |
DescribeUserImportJob |
DescribeUserPool |
DescribeUserPoolClient |
DescribeUserPoolDomain |
GetCSVHeader |
GetGroup |
GetIdentityProviderByIdentifier |
GetSigningCertificate |
GetUICustomization |
GetUserPoolMfaConfig |
ListGroups |
ListIdentityProviders |
ListResourceServers |
ListTagsForResource |
ListUserImportJobs |
ListUserPoolClients |
ListUserPools |
ListUsers |
ListUsersInGroup |
SetRiskConfiguration |
SetUICustomization |
SetUserPoolMfaConfig |
StartUserImportJob |
StopUserImportJob |
TagResource |
UntagResource |
UpdateGroup |
UpdateIdentityProvider |
UpdateResourceServer |
UpdateUserPool |
UpdateUserPoolClient |
UpdateUserPoolDomain |
Les opérations utilisateur authentifiées par IAM permettent d’inscrire, connecter, modifier et afficher vos utilisateurs, ainsi que de gérer leurs informations d’identifications.
Par exemple, vous pouvez avoir un niveau d’application côté serveur qui repose sur un front-end web. Votre application côté serveur est un client OAuth confidentiel en qui vous avez confiance et qui dispose d'un accès privilégié à vos ressources Amazon Cognito. Pour enregistrer un utilisateur dans l'application, votre serveur peut inclure des AWS informations d'identification dans une demande d'AdminCreateUserAPI. Pour plus d'informations sur les types de OAuth clients, consultez la section Types de clients
Pour autoriser ces demandes dans le SDK AWS CLI ou dans un AWS SDK, configurez votre environnement d'applications côté serveur avec des variables d'environnement ou une configuration client qui ajoute des informations d'identification IAM à votre demande. Pour plus d'informations, consultez la section Accès à AWS l'aide de vos AWS informations d'identification dans le Références générales AWS. Vous pouvez également envoyer des demandes directement aux points de terminaison de service pour l’API des groupes d’utilisateurs Amazon Cognito. Vous devez autoriser ou signer ces demandes avec des AWS informations d'identification que vous intégrez dans l'en-tête de votre demande. Pour plus d'informations, consultez la section Signature des demandes AWS d'API.
Si votre client d’application dispose d’un secret client, vous devez fournir à la fois vos informations d’identification IAM et, selon l’opération, le paramètre SecretHash
ou la valeur SECRET_HASH
dans AuthParameters
. Pour de plus amples informations, veuillez consulter Calcul des valeurs de hachage secret.
Opérations utilisateur authentifiées par IAM |
---|
AdminAddUserToGroup |
AdminConfirmSignUp |
AdminCreateUser |
AdminDeleteUser |
AdminDeleteUserAttributes |
AdminDisableProviderForUser |
AdminDisableUser |
AdminEnableUser |
AdminForgetDevice |
AdminGetDevice |
AdminGetUser |
AdminInitiateAuth |
AdminLinkProviderForUser |
AdminListDevices |
AdminListGroupsForUser |
AdminListUserAuthEvents |
AdminRemoveUserFromGroup |
AdminResetUserPassword |
AdminRespondToAuthChallenge |
AdminSetUserMFAPreference |
AdminSetUserPassword |
AdminSetUserSettings |
AdminUpdateAuthEventFeedback |
AdminUpdateDeviceStatus |
AdminUpdateUserAttributes |
AdminUserGlobalSignOut |
Les opérations utilisateur non authentifiées permettent d’inscrire, de connecter les utilisateurs et de leur lancer le processus de réinitialisation de mot de passe. Les opérations d’API non authentifiées, c’est-à-dire publiques, s’avèrent utiles lorsque vous voulez permettre à quiconque sur Internet de s’inscrire et de se connecter à votre application.
Par exemple, pour enregistrer un utilisateur dans votre application, vous pouvez distribuer un client OAuth public qui ne fournit aucun accès privilégié aux secrets. Vous pouvez enregistrer cet utilisateur à l'aide de l'opération d'API non authentifiée. SignUp
Pour envoyer ces demandes dans un client public que vous avez développé avec un AWS SDK, vous n'avez pas besoin de configurer d'informations d'identification. Vous pouvez également envoyer des demandes directement aux points de terminaison de service pour l’API des groupes d’utilisateurs Amazon Cognito sans aucune autorisation supplémentaire.
Si votre client d’application dispose d’un secret client, selon l’opération, vous devez fournir le paramètre SecretHash
ou la valeur SECRET_HASH
dans AuthParameters
. Pour de plus amples informations, veuillez consulter Calcul des valeurs de hachage secret.
Opérations utilisateur non authentifiées |
---|
SignUp |
ConfirmSignUp |
ResendConfirmationCode |
ForgotPassword |
ConfirmForgotPassword |
InitiateAuth |
Les opérations utilisateur authentifiées par jeton permettent de déconnecter les utilisateurs et de gérer leurs informations d’identification. Elles permettent également de modifier et d’afficher les utilisateurs après qu’ils se soient connectés ou qu’ils aient entamé le processus de connexion. Les opérations d’API authentifiées par jeton s’avèrent utiles lorsque vous ne voulez pas distribuer de secrets dans votre application et que vous souhaitez autoriser les demandes avec les informations d’identification propres à vos utilisateurs. Si votre utilisateur a mené à bien le processus de connexion, vous devez autoriser sa demande d’API authentifiée par jeton avec un jeton d’accès. Si votre utilisateur se trouve au milieu d’un processus de connexion, vous devez autoriser sa demande d’API authentifiée par jeton avec le jeton de session qu’a renvoyé Amazon Cognito en réponse à la demande précédente.
Par exemple, dans un client public, vous pouvez souhaiter mettre à jour le profil d’un utilisateur de façon à limiter l’accès en écriture uniquement à son profil. Pour effectuer cette mise à jour, votre client peut inclure le jeton d'accès de l'utilisateur dans une demande d'UpdateUserAttributesAPI.
Pour envoyer ces demandes dans un client public que vous avez développé avec un AWS SDK, vous n'avez pas besoin de configurer d'informations d'identification. Incluez un paramètre AccessToken
ou Session
dans votre demande. Vous pouvez également envoyer des demandes directement aux points de terminaison de service pour l’API des groupes d’utilisateurs Amazon Cognito. Pour autoriser une demande à destination d’un point de terminaison de service, incluez le jeton d’accès ou de session dans le corps POST de votre demande.
Pour signer une demande d’API pour une opération authentifiée par jeton, incluez le jeton d’accès en tant qu’en-tête Authorization
dans votre demande, au format Bearer
.<Base64-encoded access token>
Opérations des utilisateurs autorisés par jeton | AccessToken | Session |
---|---|---|
RespondToAuthChallenge |
✓ | |
ChangePassword |
✓ | |
GetUser |
✓ | |
UpdateUserAttributes |
✓ | |
DeleteUserAttributes |
✓ | |
DeleteUser |
✓ | |
ConfirmDevice |
✓ | |
ForgetDevice |
✓ | |
GetDevice |
✓ | |
ListDevices |
✓ | |
UpdateDeviceStatus |
✓ | |
GetUserAttributeVerificationCode |
✓ | |
VerifyUserAttribute |
✓ | |
SetUserSettings |
✓ | |
SetUserMFAPreference |
✓ | |
GlobalSignOut |
✓ | |
AssociateSoftwareToken |
✓ | ✓ |
UpdateAuthEventFeedback |
✓ | |
VerifySoftwareToken |
✓ | ✓ |
RevokeToken ¹ |
¹ RevokeToken prend un jeton d'actualisation comme paramètre. Le jeton d’actualisation sert de jeton d’autorisation et de ressource cible.