Comment résoudre les problèmes liés à l’attribut email_verified d’un utilisateur Amazon Cognito ?

Lecture de 5 minute(s)
0

Je souhaite résoudre tout problème lié à l’attribut email_verified pour les utilisateurs d’Amazon Cognito.

Brève description

Un groupe d’utilisateurs Amazon Cognito possède un ensemble d’attributs standard qui sont utilisés pour identifier les utilisateurs individuels. L’attribut email_verified, qui indique si l’adresse e-mail d’un utilisateur a été vérifiée, peut changer dans les situations suivantes :

  • Un utilisateur met à jour son adresse e-mail. Lorsqu’un utilisateur met à jour son adresse e-mail, Amazon Cognito remplace l’attribut email_verified par non vérifié.
  • Une adresse e-mail est configurée en tant qu’alias. Un utilisateur ayant une adresse e-mail dupliquée est ensuite créé. Lorsqu’une adresse e-mail est définie comme alias, un seul utilisateur peut conserver la valeur de l’adresse e-mail en tant qu’attribut email_verified. Si la confirmation du compte du nouvel utilisateur aboutit, l’alias de l’adresse e-mail est transféré au nouvel utilisateur. L’adresse e-mail de l’ancien utilisateur n’est alors pas vérifiée. Pour plus d'informations, consultez les sections Attributs du groupe d’utilisateurs et Personnalisation des attributs de connexion.
  • Un utilisateur fédéré ou un utilisateur lié à un utilisateur fédéré se connecte à l’aide d'un mappage d’e-mails. Lorsqu’un utilisateur fédéré se connecte, un mappage doit être présent pour chaque attribut de groupe d’utilisateurs requis par votre groupe d’utilisateurs. Si un attribut d’e-mail est mappé, l’attribut email_verified devient non vérifié par défaut.

Résolution

Pour résoudre les problèmes liés à l’attribut email_verified, suivez les étapes qui s’appliquent à votre cas.

Important : Dans les exemples de commandes de l’interface de la ligne de commande AWS (AWS CLI) suivants, remplacez toutes les instances des exemples de chaînes par vos valeurs. (Par exemple, remplacez « example_access_token » par la valeur de votre jeton d’accès.)

Vérification après la mise à jour de l’adresse e-mail

Pour vérifier l’adresse e-mail après une mise à jour de l’utilisateur :

1.    Pour qu’Amazon Cognito envoie le code de vérification à une adresse e-mail mise à jour, configurez le paramètre de vérification des e-mails pour le groupe d’utilisateurs.

2.    Si nécessaire, mettez à jour l’adresse e-mail en appelant l’API UpdateUserAttributes ou l’API AdminUpdateUserAttributes.

Exemple de commande update-user-attributes :

aws cognito-idp update-user-attributes --access-token "example_access_token" --user-attributes Name="email",Value="example_new_email"

Exemple de commande admin-update-user-attributes :

aws cognito-idp admin-update-user-attributes --user-pool-id "example_user_pool_id" --username "example_username" --user-attributes Name="email",Value="example_new_email"

Important : L’API AdminUpdateUserAttributes peut également être utilisée pour vérifier automatiquement l’e-mail en définissant l’attributemail_verified sur True. Si l'adresse e-mail est automatiquement vérifiée avec l’API AdminUpdateUserAttributes, l’étape suivante n’est pas nécessaire. L’étape suivante est nécessaire lors de l’utilisation de l’API UpdateUserAttributes.

3.    Consultez votre nouvelle boîte de réception pour obtenir le code de vérification.

4.    Appelez l’API VerifyUserAttribute. Précisez les paramètres pour AccessToken et AttributeName en tant qu’ « e-mail » et entrez le code de vérification de l’étape précédente.

Exemple de commande verify-user-attribute :

aws cognito-idp verify-user-attribute --access-token "example_access_token" --attribute-name "email" --code "example_verification_code"

Pour vérifier l’adresse e-mail après expiration du code initial, procédez comme suit :

1.    Connectez-vous à votre application à l’aide de votre nom d’utilisateur pour récupérer votre jeton d’accès.

2.    Appelez l’API GetUserAttributeVerificationCode. Réglez le paramètre AttributeName comme « e-mail ».

Exemple de commande get-user-attribute-verification-code :

aws cognito-idp get-user-attribute-verification-code --access-token "example_access_token" --attribute-name "email"

3.    Appelez l’API VerifyUserAttribute. Définissez les paramètres pour AccessToken et AttributeName sous « e-mail ». Entrez le code de vérification de l’étape précédente.

Confirmer un nouvel utilisateur ayant une adresse e-mail dupliquée

Pour autoriser la confirmation d’un nouvel utilisateur ayant une adresse e-mail dupliquée, procédez comme suit :

1.    Si nécessaire, appelez l’API SignUp pour inscrire un utilisateur ayant une adresse e-mail configurée.

Exemple de commande d’inscription :

aws cognito-idp sign-up --client-id "example_client_id" --username "example_username" --password "example_password" --user-attributes Name="email",Value="example_user_email"

2.    Appelez l’API ConfirmSignUp dont le paramètre ForceAliasCreation est défini sur True.

Exemple de commande confirm-sign-up :

aws cognito-idp confirm-sign-up --client-id "example_client_id" --username "example_username" --confirmation-code "example_confirmation_code" --force-alias-creation

Pour refuser la confirmation d’un nouvel utilisateur ayant une adresse e-mail dupliquée après son inscription, procédez comme suit :

1.    Appelez l’API ConfirmSignUp dont le paramètre ForceAliasCreation est défini sur False.

Remarque : ForceAliasCreation a la valeur False par défaut. Il n'est donc pas nécessaire de le transmettre en tant que paramètre dans la demande.

Exemple de commande deny-sign-up :

aws cognito-idp confirm-sign-up --client-id "example_client_id" --username "example_username" --confirmation-code "example_confirmation_code" --no-force-alias-creation

2.    En définissant le paramètre ForceAliasCreation sur False, l’API renvoie l’erreur suivante :

An error occurred (AliasExistsException) when calling the ConfirmSignUp operation: An account with the email already exists.

Créer un nouvel utilisateur ayant une adresse e-mail dupliquée en tant qu’administrateur

Pour créer un nouvel utilisateur ayant une adresse e-mail dupliquée en tant qu’administrateur, procédez comme suit :

1.    Appelez l’API AdminCreateUser ayant une adresse e-mail configurée, en définissant l’attribut email_verified sur True et le paramètre ForceAliasCreation sur True.

Exemple de commande admin-create-user :

aws cognito-idp admin-create-user --user-pool-id "example_user_pool_id" --username "example_username" --user-attributes Name="email",Value="example_user_email" Name="email_verified",Value="True" --force-alias-creation

Associer l’attribut email_verified à un fournisseur d’identité (IdP) tiers

Pour que l’attribut email_verified demeure vérifié après la fédération, procédez comme suit :

1.    Depuis la console Amazon Cognito, associez l’attribut IdP du statut de vérification à l’attribut email_verified.

Remarque : La plupart des fournisseurs OpenID Connect (OIDC) incluent l’attributemail_verified.


Informations connexes

Vérification des mises à jour d’adresses e-mail et de numéros de téléphone

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an