Como soluciono problemas com o atributo email_verified de um usuário do Amazon Cognito?

5 minuto de leitura
0

Quero resolver problemas com o atributo email_verified para usuários do Amazon Cognito.

Breve descrição

Um grupo de usuários do Amazon Cognito tem um conjunto de atributos padrão usados para identificar usuários individuais. O atributo email_verified, que indica se o endereço de e-mail de um usuário foi verificado, pode mudar nas seguintes situações:

  • Um usuário atualiza seu endereço de e-mail. Quando um usuário atualiza seu endereço de e-mail, o Amazon Cognito altera o atributo email_verified para não verificado.
  • Um endereço de e-mail é configurado como um alias. Em seguida, é criado um usuário com um endereço de e-mail duplicado. Quando um endereço de e-mail é definido como um alias, somente um usuário pode manter o valor do endereço de e-mail com o atributo email_verified. Se a confirmação da conta do usuário mais novo for bem-sucedida, o alias do endereço de e-mail é transferido para o usuário mais novo. Então, o endereço de e-mail do antigo usuário é modificado para não verificado. Para obter mais informações, consulte Atributos do grupo de usuários e a seção Personalizar atributos de login.
  • Um usuário federado ou um usuário vinculado a um usuário federado faz login com um mapeamento de e-mail. Quando um usuário federado faz login, um mapeamento deve estar presente para cada atributo de grupo de usuários exigido pelo grupo de usuários. Se um atributo de e-mail for mapeado, o atributo email_verified mudará para não verificado por padrão.

Resolução

Para resolver problemas com o atributo email_verified, siga as etapas que se aplicam à sua situação.

Importante: No exemplo de comandos da AWS Command Line Interface (AWS CLI) a seguir, substitua todas as instâncias de exemplos de strings pelos seus valores. (Por exemplo, substitua “example_access_token” pelo valor do seu token de acesso.)

Verificação após atualização de endereço de e-mail

Para verificar o endereço de e-mail após uma atualização do usuário:

1.    Para que o Amazon Cognito envie o código de verificação para um endereço de e-mail atualizado, defina a configuração de verificação de e-mail para o grupo de usuários.

2.    Se necessário, atualize o endereço de e-mail chamando a API UpdateUserAttributes ou a API AdminUpdateUserAttributes.

Um exemplo do comando update-user-attributes:

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

Um exemplo do 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: a API AdminUpdateUserAttributes também pode ser usada para verificar automaticamente o e-mail definindo o atributo email_verified como True. Se o endereço de e-mail for verificado automaticamente com a API AdminUpdateUserAttributes, a próxima etapa não é necessária. A próxima etapa é necessária quando for usada a API UpdateUserAttributes.

3.    Verifique o código de verificação em sua nova caixa de entrada de e-mail.

4.    Chame a API VerifyUserAttribute. Especifique os parâmetros para AccessToken e AttributeName como “e-mail” e insira o código de verificação da etapa anterior.

Um exemplo do comando verify-user-attribute:

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

Para verificar o endereço de e-mail após a expiração do código inicial:

1.    Faça login em seu aplicativo com seu nome de usuário para recuperar o token de acesso.

2.    Chame a API GetUserAttributeVerificationCode. Defina o parâmetro AttributeName como “email”.

Um exemplo do comando get-user-attribute-verification-code:

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

3.    Chame a API VerifyUserAttribute. Especifique os parâmetros para AccessToken e AttributeName como “e-mail”. Insira o código de verificação da etapa anterior.

Confirmar um novo usuário com um endereço de e-mail duplicado

Para permitir a confirmação de um novo usuário com um endereço de e-mail duplicado:

1.    Se necessário, chame a API SignUp para cadastrar um usuário com um endereço de e-mail configurado.

Um exemplo do 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.    Chame a API ConfirmSignUp com o parâmetro ForceAliasCreation definido como True.

Um exemplo do 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 negar a confirmação de um novo usuário com um endereço de e-mail duplicado após o cadastro:

1.    Chame a API ConfirmSignUp com o parâmetro ForceAliasCreation definido como False.

Nota: ForceAliasCreation é definido como False por padrão. Portanto, não é necessário que ele seja passado como um parâmetro na solicitação.

Um exemplo do 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.    Ao definir o parâmetro ForceAliasCreation como False, a API retorna o seguinte erro:

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

Criar um novo usuário com um endereço de e-mail duplicado como administrador

Para criar um novo usuário com um endereço de e-mail duplicado como administrador:

1.    Chame a API AdminCreateUser com um endereço de e-mail configurado, com o atributo email_verified definido como True e o parâmetro ForceAliasCreation definido como True.

Um exemplo do 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

Mapear o atributo email_verified para um provedor de identidades (IdP) de terceiros

Para manter o atributo email_verified verificado após a federação:

1.    No console do Amazon Cognito, mapeie o atributo IdP para status de verificação para o atributo email_verified.

Nota: A maioria dos provedores do OpenID Connect (OIDC) inclui o atributo email_verified.


Informações relacionadas

Verificar atualizações em endereços de e-mail e números de telefone

AWS OFICIAL
AWS OFICIALAtualizada há um ano