¿Cómo soluciono los problemas del atributo email_verified de los usuarios de Amazon Cognito?

6 minutos de lectura
0

Quiero resolver cualquier problema que surja del atributo email_verified (correo electrónico verificado) de los usuarios de Amazon Cognito.

Descripción breve

Los grupos de usuarios de Amazon Cognito tiene un conjunto de atributos estándar que se utilizan para identificar a los usuarios individuales. El atributo email_verified, que indica si se ha verificado la dirección de correo electrónico de un usuario, puede cambiar en las siguientes situaciones:

  • Un usuario actualiza su dirección de correo electrónico. Cuando un usuario actualiza su dirección de correo electrónico, Amazon Cognito cambia el atributo email_verified a unverified (no verificado).
  • Se establece la dirección de correo electrónico como alias. Luego, se crea un usuario con una dirección de correo electrónico duplicada. Cuando una dirección de correo electrónico se establece como alias, solo un usuario puede mantener el valor de la dirección de correo electrónico como el atributo email_verified. Si la confirmación de la cuenta del usuario más reciente se realiza correctamente, el alias de la dirección de correo electrónico se transfiere a dicho usuario. En consecuencia, la dirección de correo electrónico del usuario más antiguo queda sin verificar. Para obtener más información, consulte Atributos del grupo de usuarios y revise la sección Alias.
  • Un usuario federado o un usuario vinculado a un usuario federado inicia sesión con una asignación de correo electrónico. Cuando un usuario federado inicia sesión, debe haber una asignación para cada atributo del grupo de usuarios que este requiera. Si se asigna un atributo de correo electrónico, el atributo email_verified cambia a unverified de forma predeterminada.

Solución

Para resolver los problemas del atributo email_verified, siga los pasos que correspondan a su situación.

Importante: En los siguientes ejemplos de comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), sustituya todas las instancias de las cadenas de ejemplo por sus valores. (Por ejemplo, sustituya “example_access_token” por el valor de su token de acceso).

Verificación después de actualizar la dirección de correo electrónico

Para verificar la dirección de correo electrónico después de una actualización de usuario:

1.    Para que Amazon Cognito envíe el código de verificación a una dirección de correo electrónico actualizada, configure los ajustes de verificación de correo electrónico del grupo de usuarios.

2.    Si es necesario, actualice la dirección de correo electrónico llamando a la API UpdateUserAttributes o a la API AdminUpdateUserAttributes.

Ejemplo del comando update-user-attributes:

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

Ejemplo del comando 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"

Importante: La API AdminUpdateUserAttributes también se puede utilizar para verificar el correo electrónico de forma automática si se establece el atributo email_verified en True (Verdadero). Si la dirección de correo electrónico se verifica automáticamente con la API AdminUpdateUserAttributes, el siguiente paso no es necesario. Sin embargo, sí es necesario cuando se utiliza la API UpdateUserAttributes.

3.    Revise la bandeja de entrada del nuevo correo electrónico para obtener el código de verificación.

4.    Llame a la API VerifyUserAttribute. Establezca los parámetros AccessToken (Token de acceso) y AttributeName (Nombre del atributo) en “email” (correo electrónico) e ingrese el código de verificación del paso anterior.

Ejemplo del comando verify-user-attribute:

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

Para verificar la dirección de correo electrónico después de que venza el código inicial:

1.    Inicie sesión en la aplicación con su nombre de usuario para recuperar el token de acceso.

2.    Llame a la API GetUserAttributeVerificationCode. Defina el parámetro AttributeName (Nombre del atributo) en “email” (correo electrónico).

Ejemplo del comando get-user-attribute-verification-code:

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

3.    Llame a la API VerifyUserAttribute. Establezca los parámetros AccessToken (Token de acceso) y AttributeName (Nombre del atributo) en “email” (correo electrónico). Ingrese el código de verificación del paso anterior.

Confirmación de un nuevo usuario con una dirección de correo electrónico duplicada

Para permitir la confirmación de un nuevo usuario con una dirección de correo electrónico duplicada:

1.    Si es necesario, llame a la API SignUp para registrar a un usuario con una dirección de correo electrónico configurada.

Ejemplo del comando sign-up:

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.    Llame a la API ConfirmSignUp con el parámetro ForceAliasCreation (Forzar la creación de alias) establecido en True (Verdadero).

Ejemplo del comando 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

Para denegar la confirmación de un nuevo usuario con una dirección de correo electrónico duplicada después de su registro, siga estos pasos:

1.    Llame a la API ConfirmSignUp con el parámetro ForceAliasCreation (Forzar la creación de alias) establecido en False (Falso).

Nota: ForceAliasCreation (Forzar la creación de alias) se establece en False (Falso) de forma predeterminada. Por lo tanto, no es necesario pasarlo como parámetro en la solicitud.

Ejemplo del comando 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.    Si se establece el parámetro ForceAliasCreation (Forzar la creación de alias) en False (Falso), la API devolverá el siguiente error:

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

Creación de un nuevo usuario como administrador con una dirección de correo electrónico duplicada

Para crear un nuevo usuario como administrador con una dirección de correo electrónico duplicada:

1.    Llame a la API AdminCreateUser con una dirección de correo electrónico configurada, con el atributo email_verified establecido en True (Verdadero) y el parámetro ForceAliasCreation (Forzar la creación de alias) en True (Verdadero).

Ejemplo del comando 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

Asignación del atributo email_verified a un proveedor de identidades (IdP) externo

Para mantener verificado el atributo email_verified después de la federación:

1.    Desde la consola de Amazon Cognito, asigne el atributo IdP para el estado de verificación al atributo email_verified.

Nota: La mayoría de los proveedores de OpenID Connect (OIDC) incluyen el atributo email_verified.


Información relacionada

Verificación de actualizaciones de direcciones de correo electrónico y números de teléfono

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año