

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Como cadastrar e confirmar contas de usuários
<a name="signing-up-users-in-your-app"></a>

Contas de usuários são adicionadas ao grupo de usuários de uma das seguintes formas:
+ O usuário se cadastra aplicação cliente do grupo de usuários. Pode ser um aplicativo móvel ou uma aplicação Web.
+ Você pode importar a conta de usuário para o grupo de usuários. Para obter mais informações, consulte [Como importar usuários para grupos de usuários com base em um arquivo CSV](cognito-user-pools-using-import-tool.md).
+ Você pode criar a conta de usuário em seu grupo e convidá-lo a login. Para obter mais informações, consulte [Como criar contas de usuário como administrador](how-to-create-user-accounts.md).

Os usuários que se inscrevem precisam primeiro ser confirmados para que possam fazer login. Usuários importados e criados já estão confirmados, mas eles precisam criar uma senha própria na primeira vez em que fizerem login. As seções a seguir explicam o processo de confirmação e verificação de e-mail e telefone.

**Senhas no cadastro**  
O Amazon Cognito exige senhas de todos os usuários quando eles se cadastram, exceto sob as condições abaixo. Se *todas* essas condições forem atendidas, você poderá omitir as senhas nas operações de cadastro.

1. O [Login sem senha](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless) está ativo em seu grupo de usuários e cliente de aplicação.

1. Seu aplicativo é personalizado com módulos de autenticação em um AWS SDK. O login gerenciado e a IU hospedada sempre exigem senhas.

1. Os usuários fornecem valores de atributos para os métodos de login sem senha — senhas de uso único por e-mail ou mensagem SMS () — que você permite. OTPs Por exemplo, se você permitir o login com uma OTP enviada por e-mail e telefone, os usuários poderão fornecer um número de telefone ou endereço de e-mail. Porém, se permitir somente o login com e-mail, eles deverão fornecer um endereço de e-mail.

1. Seu grupo de usuários [verifica automaticamente](#allowing-users-to-sign-up-and-confirm-themselves) os atributos que os usuários podem usar com o login sem senha.

1. Para qualquer [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)solicitação, o usuário não fornece um valor para o parâmetro [Password](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html#CognitoUserPools-SignUp-request-Password).

## Visão geral da confirmação de conta de usuário
<a name="signup-confirmation-verification-overview"></a>

O diagrama a seguir ilustra o processo de confirmação:

![\[Quando os usuários inserem o código de confirmação, eles automaticamente verificam o e-mail ou o telefone.\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/amazon-cognito-sign-in-confirm-user.png)


Uma conta de usuário pode estar em qualquer um dos seguintes estados:

**Registrado (não confirmado)**  
O usuário foi registrado com êxito, mas não pode fazer login até que a conta seja confirmada. O usuário está habilitado, mas não está confirmado nesse estado.  
Novos usuários que se cadastram começam nesse estado.

**Confirmado**  
A conta de usuário está confirmada e o usuário pode fazer login. Quando um usuário insere um código ou segue um link de e-mail para confirmar sua conta de usuário, o e-mail ou o número de telefone é automaticamente confirmado. O código ou link é válido por 24 horas.  
Se a conta de usuário tiver sido confirmada pelo administrador ou por um acionador de pré-cadastro do Lambda, é possível que não haja um número de telefone ou um e-mail verificado associado à conta.

**É necessário redefinir a senha**  
A conta de usuário está confirmada, mas o usuário deve solicitar um código e redefinir sua senha para poder fazer login.  
As contas de usuários que são importados por um administrador ou desenvolvedor começam nesse estado.

**Forçar alteração de senha**  
A conta de usuário está confirmada e o usuário pode fazer login usando uma senha temporária. No entanto, no primeiro login, ele deve alterar a senha para um novo valor antes de fazer qualquer coisa.  
As contas de usuários que são criadas por um administrador ou desenvolvedor começam nesse estado.

**Desabilitado**  
Antes de excluir uma conta de usuário, você precisa desabilitar o acesso de login para esse usuário.

**Mais atributos**
+ [Detectar e corrigir contas de usuários inativas com o Amazon Cognito](https://aws.amazon.com/blogs/security/detecting-and-remediating-inactive-user-accounts-with-amazon-cognito/)

## Como verificar informações de contato no cadastro
<a name="allowing-users-to-sign-up-and-confirm-themselves"></a>

Quando novos usuários se cadastram no seu aplicativo, você provavelmente deseja que eles forneçam pelo menos um método de contato. Por exemplo, com as informações de contato dos usuários, você pode:
+ Enviar uma senha temporária quando um usuário decide redefinir a senha.
+ Notificar os usuários quando as informações pessoais ou financeiras deles forem atualizadas.
+ Enviar mensagens promocionais, como descontos ou ofertas especiais.
+ Enviar resumos da conta ou lembretes de faturas.

Para casos de uso como esses, é importante que você envie suas mensagens para um destino verificado. Caso contrário, suas mensagens podem ser enviadas para um endereço de e-mail inválido ou para um número de telefone que foi digitado incorretamente. Ou pior, você pode enviar informações confidenciais para agentes maldosos que se passam por seus usuários.

Para ajudar a garantir que você envie mensagens apenas aos indivíduos certos, configure o grupo de usuários do Amazon Cognito de modo que os usuários tenham que fornecer o seguinte, quando se cadastrarem:

1. Um endereço de e-mail ou número de telefone.

1. Um código de verificação que o Amazon Cognito envia para esse endereço de e-mail ou número de telefone. Se tiverem passado 24 horas e o código ou link do seu usuário não for mais válido, chame a operação da [ResendConfirmationCode](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ResendConfirmationCode.html)API para gerar e enviar um novo código ou link.

Ao fornecer o código de verificação, um usuário comprova que tem acesso à caixa de correio ou ao telefone que recebeu o código. Depois que o usuário fornece o código, o Amazon Cognito atualiza as informações sobre o usuário no grupo de usuários das seguintes maneiras:
+ Definindo o status do usuário como `CONFIRMED`.
+ Atualizando os atributos do usuário para indicar que o endereço de e-mail ou número de telefone é verificado.

Para visualizar essas informações, você pode usar o console do Amazon Cognito. Ou você pode usar a operação de `AdminGetUser` API, o `admin-get-user` comando com AWS CLI o. ou uma ação correspondente em um dos AWS SDKs.

Se um usuário tiver um método de contato verificado, o Amazon Cognito enviará automaticamente uma mensagem ao usuário quando ele solicitar uma redefinição de senha.

### Outras ações que confirmam e verificam os atributos do usuário
<a name="allowing-users-to-sign-up-and-confirm-themselves-other-actions"></a>

A atividade do usuário a seguir verifica os atributos do usuário. Você não precisa definir esses atributos para verificação automática: as ações listadas os marcam como verificados em todos os casos.

**Endereço de e-mail**  

1. Concluir com sucesso a [autenticação sem senha](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless) com uma senha de uso único (OTP) enviada por e-mail.

1. Concluir com sucesso a [autenticação multifator (MFA)](user-pool-settings-mfa.md) com uma OTP enviada por e-mail.

**Número de telefone**  

1. Concluir com sucesso a [autenticação sem senha](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless) com uma OTP por SMS.

1. Concluir com sucesso a [MFA](user-pool-settings-mfa.md) com uma OTP por SMS.

### Para configurar o grupo de usuários para exigir a verificação de e-mail ou telefone
<a name="verification-configure"></a>

Ao confirmar os endereços de e-mail e os números de telefone, você garante que possa entrar em contato com seus usuários. Conclua as etapas a seguir Console de gerenciamento da AWS para configurar seu grupo de usuários para exigir que seus usuários confirmem seus endereços de e-mail ou números de telefone.

**nota**  
Se você ainda não tiver um grupo de usuários em sua conta, consulte [Conceitos básicos dos grupos de usuários](getting-started-user-pools.md).

**Para configurar o grupo de usuários**

1. Acesse o [console do Amazon Cognito](https://console.aws.amazon.com/cognito/home). Se solicitado, insira suas AWS credenciais.

1. No painel de navegação, escolha **User Pools** (Grupos de usuários). Escolha um grupo de usuários existente na lista ou [crie um grupo de usuários](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html).

1. Clique no menu **Cadastrar-se** e localize **Verificação de atributo e confirmação da conta do usuário**. Escolha **Editar**.

1. Em **Verificação e confirmação assistidas pelo Cognito**, escolha se deseja **Permitir que o Cognito envie mensagens automaticamente para verificar e confirmar**. Com essa configuração ativada, o Amazon Cognito envia mensagens para os atributos de contato dos usuários que você escolhe quando um usuário se cadastra ou cria um perfil de usuário. Para verificar os atributos e confirmar os perfis de usuários para login, o Amazon Cognito envia um código ou link em mensagens para os usuários. Os usuários devem inserir o código na interface do usuário para que a aplicação possa confirmá-lo em uma solicitação de API `AdminConfirmSignUp` e `ConfirmSignUp`.
**nota**  
Também é possível desabilitar **Cognito-assisted verification and confirmation** (Verificação e confirmação assistidas pelo Cognito) e usar ações de API ou acionadores do Lambda autenticados para verificar atributos e confirmar usuários.  
Se você escolher essa opção, o Amazon Cognito não enviará códigos de verificação quando o usuário se cadastrar. Escolha essa opção se você estiver usando um fluxo de autenticação personalizado que verifica pelo menos um método de contato sem usar os códigos de verificação do Amazon Cognito. Por exemplo, você pode usar um gatilho de pré-cadastro do Lambda que verifica automaticamente endereços de e-mail que pertencem a um domínio específico.  
Se você não verificar as informações de contato dos usuários, talvez eles não consigam usar a aplicação. Lembre-se de que os usuários precisam de informações de contato verificadas para:  
**Redefinir as próprias senhas**: quando um usuário seleciona uma opção na sua aplicação que chama a ação de API `ForgotPassword`, o Amazon Cognito envia uma senha temporária para o endereço de e-mail ou número de telefone do usuário. O Amazon Cognito só enviará essa senha se o usuário tiver pelo menos um método de contato verificado.
**Fazer login usando um endereço de e-mail ou número de telefone como um alias**: se você configurar o grupo de usuários para permitir esses aliases, um usuário só poderá fazer o acesso com um alias se o alias for verificado. Para obter mais informações, consulte [Personalização dos atributos de login](user-pool-settings-attributes.md#user-pool-settings-aliases).

1. Selecione os **Attributes to verify** (Atributos para verificar):  
**Enviar mensagem de SMS, verificar o número de telefone**  
O Amazon Cognito envia um código de verificação em uma mensagem de SMS quando o usuário se cadastra. Selecione essa opção se você normalmente se comunicar com os usuários por SMS. Por exemplo, você precisará usar números de telefone verificados se enviar notificações de entrega, confirmações de compromissos ou alertas. Os números de telefone do usuário serão o atributo verificado quando as contas forem confirmadas; você deve adotar medidas adicionais para verificar e se comunicar com endereços de e-mail do usuário.  
**Enviar mensagem de e-mail, verificar endereço de e-mail**  
O Amazon Cognito envia um código de verificação por meio de uma mensagem de SMS quando o usuário se cadastra. Escolha essa opção se você normalmente se comunica com os usuários por e-mail. Por exemplo, você precisará usar endereços de e-mail verificados se enviar faturas, resumos de pedidos ou ofertas especiais. Os endereços de e-mail do usuário serão o atributo verificado quando as contas forem confirmadas; você deve adotar medidas adicionais para verificar e se comunicar com números de telefone do usuário.  
**Enviar mensagem de SMS se o número de telefone estiver disponível, caso contrário, enviar uma mensagem de e-mail**  
Escolha essa opção se você não exigir que todos os usuários tenham o mesmo método de contato verificado. Nesse caso, a página de cadastro em seu aplicativo pode solicitar que os usuários verifiquem apenas o método de contato que preferirem. Quando o Amazon Cognito envia um código de verificação, ele envia o código para o método de contato fornecido na solicitação de `SignUp` da sua aplicação. Se um usuário fornecer um endereço de e-mail e um número de telefone, e a aplicação fornecer os dois métodos de contato na solicitação de `SignUp`, o Amazon Cognito enviará um código de verificação somente para o número de telefone.  
Se você exige que os usuários verifiquem um endereço de e-mail e um número de telefone, escolha esta opção. O Amazon Cognito verifica um método de contato quando o usuário se cadastra e sua aplicação precisará verificar o outro método de contato depois que o usuário fizer login. Para obter mais informações, consulte [Se você necessitar que os usuários confirmem tanto endereços de e-mail como números de telefone](#verification-email-plus-phone).

1. Escolha **Salvar alterações**.

### Fluxo de autenticação com verificação por e-mail ou telefone
<a name="verification-flow"></a>

Se o grupo de usuários exigir que os usuários verifiquem as informações de contato, seu aplicativo deverá facilitar o seguinte fluxo quando um usuário se cadastrar:

1. Um usuário se inscreve no seu aplicativo inserindo um nome de usuário, número de telefone, endereço de and/or e-mail e possivelmente outros atributos.

1. O serviço do Amazon Cognito recebe a solicitação de cadastro da aplicação. Depois de verificar se a solicitação contém todos os atributos necessários para o cadastro, o serviço conclui o processo de cadastro e envia um código de confirmação para o telefone do usuário (em uma mensagem SMS) ou o e-mail. O código é válido por 24 horas.

1. O serviço retorna para o aplicativo a informação de que o cadastro está concluído e que a conta de usuário está aguardando confirmação. A resposta contém informações sobre o destino para onde o código de confirmação foi enviado. Nesse ponto, a conta de usuário está em um estado não confirmado, e o endereço de e-mail e número de telefone do usuário não estão verificados.

1. O aplicativo agora pode solicitar que o usuário insira o código de confirmação. O usuário não precisa inserir o código imediatamente. No entanto, o usuário não poderá fazer login até que ele insira o código de confirmação.

1. O usuário insere o código de confirmação no aplicativo.

1. A aplicação chama [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html) para enviar o código para o serviço do Amazon Cognito, que verifica o código e, se ele estiver correto, definirá a conta de usuário para o estado confirmado. Depois que a conta de usuário for confirmada com êxito, o serviço do Amazon Cognito marcará automaticamente como verificado o atributo que foi usado para a confirmação (e-mail ou número de telefone). A menos que o valor do atributo seja alterado, o usuário não precisará fazer a verificação novamente.

1. Nesse momento, como a conta de usuário está no estado confirmado, o usuário pode fazer login.

### Se você necessitar que os usuários confirmem tanto endereços de e-mail como números de telefone
<a name="verification-email-plus-phone"></a>

O Amazon Cognito verifica apenas um método de contato quando um usuário se cadastra. Nos casos em que o Amazon Cognito precise escolher entre confirmar um endereço de e-mail ou um número de telefone, ele opta por confirmar o número de telefone enviando um código de confirmação por SMS. Por exemplo, se você configurar o grupo de usuários para permitir que os usuários verifiquem tanto endereços de e-mail como números de telefone, e se a aplicação fornecer ambos os atributos no cadastro, o Amazon Cognito verificará apenas o número de telefone. Depois que um usuário verifica o número de telefone dele, o Amazon Cognito define o respetivo status como `CONFIRMED` e ele tem permissão para fazer login na aplicação.

Depois que o usuário fizer login, o aplicativo poderá fornecer a opção de verificar o método de contato que não foi verificado durante o cadastro. Para verificar esse segundo método, o aplicativo chama a ação de API `VerifyUserAttribute`. Observe que essa ação requer um parâmetro `AccessToken` e o Amazon Cognito só fornece tokens de acesso para usuários autenticados. Portanto, você poderá verificar o segundo método de contato somente depois que o usuário fizer login.

Se você exigir que os usuários verifiquem tanto endereços de e-mail como números de telefone, faça o seguinte:

1. Configure o grupo de usuários para permitir que os usuários verifiquem endereços de e-mail ou números de telefone.

1. No fluxo de cadastro do aplicativo, exija que os usuários forneçam tanto um endereço de e-mail como um número de telefone. Chame a ação de API [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html) e forneça o endereço de e-mail e o número de telefone para o parâmetro `UserAttributes`. Nesse momento, o Amazon Cognito envia um código de verificação para o telefone do usuário.

1. Na interface do aplicativo, é apresentada uma página de confirmação onde o usuário insere o código de verificação. Confirme o usuário chamando a ação de API [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html). Nesse ponto, o status do usuário é `CONFIRMED`, e o número de telefone do usuário é verificado, mas o endereço de e-mail não é verificado.

1. Apresente a página de login e autentique o usuário chamando a ação de API [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html). Depois que o usuário é autenticado, o Amazon Cognito retorna um token de acesso para a aplicação.

1. Chame a ação de API [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserAttributeVerificationCode.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserAttributeVerificationCode.html). Especifique os seguintes parâmetros na solicitação:
   + `AccessToken`: o token de acesso retornado pelo Amazon Cognito quando o usuário fez login.
   + `AttributeName`: especifique `"email"` como o valor do atributo.

   O Amazon Cognito envia um código de verificação para o endereço de e-mail do usuário.

1. Apresente uma página de confirmação onde o usuário insere o código de verificação. Quando o usuário enviar o código, chame a ação de API [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifyUserAttribute.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifyUserAttribute.html). Especifique os seguintes parâmetros na solicitação:
   + `AccessToken`: o token de acesso retornado pelo Amazon Cognito quando o usuário fez login.
   + `AttributeName`: especifique `"email"` como o valor do atributo.
   + `Code`: o código de verificação que o usuário forneceu.

   Nesse ponto, o endereço de e-mail é verificado.

## Permitir que os usuários se inscrevam na aplicação, mas mediante confirmação deles como administradores do grupo de usuários
<a name="signing-up-users-in-your-app-and-confirming-them-as-admin"></a>

Talvez você não queira que o grupo de usuários envie automaticamente mensagens de verificação no grupo de usuários, mas ainda queira que qualquer pessoa se inscreva em uma conta. Esse modelo deixa espaço, por exemplo, para análise humana de novas solicitações de inscrição e para validação em lote e processamento de inscrições. Você pode confirmar novas contas de usuário no console do Amazon Cognito ou com a operação de API autenticada pelo IAM. [AdminConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminConfirmSignUp.html) Você pode confirmar contas de usuário como administrador, independentemente de o grupo de usuários enviar ou não mensagens de verificação.

Você só pode confirmar a inscrição de autoatendimento de um usuário com essa técnica. Para confirmar um usuário que você criou como administrador, crie uma solicitação de [AdminSetUserPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserPassword.html)API com `Permanent` definido como`True`.

1. Um usuário se inscreve no seu aplicativo inserindo um nome de usuário, número de telefone, endereço de and/or e-mail e possivelmente outros atributos.

1. O serviço do Amazon Cognito recebe a solicitação de cadastro da aplicação. Após verificar se a solicitação contém todos os atributos necessários para o cadastramento, o serviço conclui o processo e retorna para o aplicativo a informação de que o cadastramento está concluído e aguarda confirmação. Nesse ponto, a conta de usuário está em um estado não confirmado. O usuário não pode fazer login até que a conta esteja confirmada.

1. Confirme a conta do usuário. Você deve fazer login Console de gerenciamento da AWS ou assinar sua solicitação de API com AWS credenciais para confirmar a conta. 

   1. Para confirmar um usuário no console do Amazon Cognito, navegue até o menu **Usuários**, selecione o usuário que deseja confirmar e, no menu **Ações**, clique em **Confirmar**.

   1. Para confirmar um usuário na AWS API ou na CLI, crie uma solicitação de [AdminConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminConfirmSignUp.html)API ou [admin-confirm-sign-up](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/admin-confirm-sign-up.html)no. AWS CLI

1. Nesse momento, como a conta de usuário está no estado confirmado, o usuário pode fazer login.

## Computar valores de hash de segredo
<a name="cognito-user-pools-computing-secret-hash"></a>

Atribua um segredo do cliente ao cliente da aplicação confidencial como prática recomendada. Quando você atribui um segredo de cliente ao cliente da aplicação, as solicitações de API de grupos de usuários do Amazon Cognito devem incluir um hash que inclua o segredo do cliente no corpo da solicitação. Para validar seu conhecimento do segredo do cliente para as operações de API nas listas a seguir, concatene o segredo do cliente com o ID do cliente da aplicação e o nome de usuário; depois, codifique essa string em base64.

Quando a aplicação conecta usuários a um cliente que tem um hash secreto, é possível utilizar o valor de qualquer atributo de login do grupo de usuários como o elemento de nome de usuário do hash secreto. Quando a aplicação solicita novos tokens em uma operação de autenticação com `REFRESH_TOKEN_AUTH`, o valor do elemento de nome de usuário depende dos seus atributos de login. Quando o grupo de usuários não tiver `username` como atributo de login, defina o valor do hash secreto do nome do usuário na declaração `sub` do usuário em seu token de acesso ou ID. Quando `username` é um atributo de login, defina o valor do nome de usuário de hash secreto da declaração `username`.

Os seguintes grupos de usuários do Amazon Cognito APIs aceitam um valor de hash secreto do cliente em um parâmetro. `SecretHash`
+ [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmForgotPassword.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmForgotPassword.html)
+ [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html)
+ [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html)
+ [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ResendConfirmationCode.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ResendConfirmationCode.html)
+ [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)

Além disso, os itens a seguir APIs aceitam um valor de hash secreto do cliente em um `SECRET_HASH` parâmetro, seja em parâmetros de autenticação ou em uma resposta de desafio.


| Operação de API | Parâmetro pai para SECRET\$1HASH | 
| --- |--- |
| InitiateAuth | AuthParameters | 
| AdminInitiateAuth | AuthParameters | 
| RespondToAuthChallenge | ChallengeResponses | 
| AdminRespondToAuthChallenge | ChallengeResponses | 

O valor do hash de segredo é um código de autenticação de mensagem baseado em hash (HMAC) de chave codificado em Base64 calculado com o uso da chave secreta de um cliente do grupo de usuários e do nome de usuário mais o ID do cliente na mensagem. O pseudocódigo a seguir mostra como esse valor é calculado. Nesse pseudocódigo, `+` indica concatenação, `HMAC_SHA256` representa uma função que produz um valor HMAC usando Hmac e `Base64` representa uma função que produz uma versão codificada em SHA256 Base-64 da saída de hash.

```
Base64 ( HMAC_SHA256 ( "Client Secret Key", "Username" + "Client Id" ) )
```

Para obter uma visão geral detalhada de como calcular e usar o `SecretHash` parâmetro, consulte [Como soluciono os erros “Não é possível verificar o hash secreto para o cliente” na minha API de grupos de usuários do Amazon Cognito](https://aws.amazon.com/premiumsupport/knowledge-center/cognito-unable-to-verify-secret-hash/)<client-id>? no Centro de AWS Conhecimento.

Você pode usar os exemplos de código a seguir no código da aplicação do lado do servidor.

------
#### [ Shell ]

```
echo -n "[username][app client ID]" | openssl dgst -sha256 -hmac [app client secret] -binary | openssl enc -base64
```

------
#### [ Java ]

```
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
 
public static String calculateSecretHash(String userPoolClientId, String userPoolClientSecret, String userName) {
    final String HMAC_SHA256_ALGORITHM = "HmacSHA256";
    
    SecretKeySpec signingKey = new SecretKeySpec(
            userPoolClientSecret.getBytes(StandardCharsets.UTF_8),
            HMAC_SHA256_ALGORITHM);
    try {
        Mac mac = Mac.getInstance(HMAC_SHA256_ALGORITHM);
        mac.init(signingKey);
        mac.update(userName.getBytes(StandardCharsets.UTF_8));
        byte[] rawHmac = mac.doFinal(userPoolClientId.getBytes(StandardCharsets.UTF_8));
        return Base64.getEncoder().encodeToString(rawHmac);
    } catch (Exception e) {
        throw new RuntimeException("Error while calculating ");
    }
}
```

------
#### [ Python ]

```
import sys
import hmac, hashlib, base64 
username = sys.argv[1] 
app_client_id = sys.argv[2] 
key = sys.argv[3] 
message = bytes(sys.argv[1]+sys.argv[2],'utf-8') 
key = bytes(sys.argv[3],'utf-8') 
secret_hash = base64.b64encode(hmac.new(key, message, digestmod=hashlib.sha256).digest()).decode() 
print("SECRET HASH:",secret_hash)
```

------

## Como confirmar contas de usuários sem verificar e-mail ou número de telefone
<a name="confirming-user-without-verification-of-email-or-phone-number"></a>

O acionador de pré-cadastro do Lambda pode ser usado para confirmar automaticamente as contas de usuário no momento do cadastro sem a necessidade de um código de confirmação nem da verificação do e-mail ou do número de telefone. Usuários que são confirmados dessa maneira podem imediatamente fazer login sem a necessidade de receber um código.

Você também pode marcar um número de telefone ou e-mail do usuário como verificado por meio desse trigger. 

**nota**  
Embora essa abordagem seja conveniente para os usuários quando eles estão dando os primeiros passos, recomendamos a verificação automática de pelo menos um dos dois (e-mail ou número de telefone). Caso contrário, o usuário pode ficar impossibilitado de recuperar a senha caso a esqueça.

Se você não exigir que o usuário receba e insira um código de confirmação no cadastro e não verifique automaticamente o e-mail e o número de telefone no acionador de pré-cadastro do Lambda, você correrá o risco de não ter um endereço de e-mail nem um número de telefone verificado para essa conta de usuário. O usuário pode confirmar o endereço de e-mail ou o número de telefone posteriormente. No entanto, se o usuário esquecer a senha e não tiver um número de telefone nem um endereço de e-mail verificado, ele será bloqueado da conta porque o fluxo de senha esquecida exige um número de telefone ou um e-mail verificado para enviar um código de verificação ao usuário.

## Como verificar quando usuários alteram o e-mail ou o número de telefone
<a name="verifying-when-users-change-their-email-or-phone-number"></a>

Os usuários podem inserir um número de telefone ou endereço de e-mail como nome de usuário no login nos grupos de usuários configurados com vários nomes de login. Quando eles atualizam o endereço de e-mail ou número de telefone na sua aplicação, o Amazon Cognito pode enviar imediatamente uma mensagem com um código que confirma a propriedade do novo valor do atributo. Para habilitar o envio automático desses códigos de verificação, consulte [Como configurar verificação de e-mail ou telefone](user-pool-settings-email-phone-verification.md).

Os usuários que receberem um código de verificação devem devolvê-lo ao Amazon Cognito em uma [VerifyUserAttribute](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifyUserAttribute.html)solicitação. Após fornecerem o código, o atributo será marcado como verificado. Normalmente, quando os usuários atualizam seu endereço de e-mail ou número de telefone, é necessário confirmar que eles são proprietários do novo valor antes que possam usá-lo para fazer login e receber mensagens. Os grupos de usuários têm uma opção configurável que define se os usuários devem verificar as atualizações em seu endereço de e-mail ou número de telefone.

Essa opção é a propriedade do grupo de usuários `AttributesRequireVerificationBeforeUpdate`. Configure-o em uma [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html#CognitoUserPools-UpdateUserPool-request-UserAttributeUpdateSettings)solicitação [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-UserAttributeUpdateSettings)or ou com a configuração **Manter o valor do atributo original ativo quando uma atualização estiver pendente** no menu de **inscrição** do console do Amazon Cognito.

A forma como seu grupo de usuários trata as atualizações de endereços de e-mail e números de telefone está conectada à configuração do nome de usuário do grupo de usuários. Os nomes de usuário do grupo de usuários podem estar em uma configuração de *atributos de nome de usuário* em que os nomes de login são endereço de e-mail, número de telefone ou ambos. Eles também podem estar em uma configuração de *atributos de alias* em que o atributo `username` é um nome de login com endereço de e-mail, número de telefone ou nome de usuário preferencial como nomes de login alternativos. Para obter mais informações, consulte [Personalização dos atributos de login](user-pool-settings-attributes.md#user-pool-settings-aliases).

 Você também pode usar um acionador de mensagem personalizada do Lambda para personalizar a mensagem de verificação. Para obter mais informações, consulte [Acionador do Lambda de mensagem personalizada](user-pool-lambda-custom-message.md). Quando o endereço de e-mail ou o número de telefone do usuário não estiver verificado, sua aplicação deverá informar ao usuário que ele precisa verificar o atributo e fornecer um botão ou um link para que ele insira o código de verificação.

A tabela a seguir descreve como `AttributesRequireVerificationBeforeUpdate` e as configurações de alias determinam o resultado quando os usuários alteram o valor de seus atributos de login.


| Configuração do nome de usuário | Comportamento quando os usuários precisam verificar novos atributos | Comportamento quando os usuários não precisam verificar novos atributos | 
| --- | --- | --- | 
| Atributos do nome de usuário | O atributo original permanece verificado, elegível para login e com o valor original. Quando o usuário verifica um novo valor, o Amazon Cognito atualiza o valor do atributo, marca-o como verificado e o torna elegível para login. | O Amazon Cognito atualiza o atributo para um novo valor. O novo valor é elegível para login. Quando o usuário verifica um novo valor, o Amazon Cognito o marca como verificado. | 
| Atributos de alias | O atributo original permanece verificado, elegível para login e com o valor original. Quando o usuário verifica um novo valor, o Amazon Cognito atualiza o valor do atributo, marca-o como verificado e o torna elegível para login. | O Amazon Cognito atualiza o atributo para um novo valor. Nem o valor original nem o novo valor do atributo são elegíveis para login. Quando o usuário verifica um novo valor, o Amazon Cognito atualiza o valor do atributo, marca-o como verificado e o torna elegível para login. | 

**Exemplo 1**  
O usuário 1 faz login na sua aplicação com o endereço de e-mail `user1@example.com` e tem o nome de usuário `user1` (atributos de alias). Seu grupo de usuários está configurado para verificar as atualizações nos atributos de login e enviar mensagens de verificação automaticamente. Ele solicita a atualização do endereço de e-mail para `user1+foo@example.com`. Ele recebe um e-mail de verificação em `user1+foo@example.com` e *só pode fazer login novamente* com o endereço de e-mail `user1@example.com`. Posteriormente, ele insere o código de verificação e só pode fazer login novamente com o endereço de e-mail `user1+foo@example.com`.

**Exemplo 2**  
O usuário 2 faz login na sua aplicação com o endereço de e-mail `user2@example.com` e tem um nome de usuário (atributos de alias). Seu grupo de usuários está configurado para *não* verificar as atualizações nos atributos de login e para enviar mensagens de verificação automaticamente. Ele solicita a atualização do endereço de e-mail para `user2+bar@example.com`. Ele recebe um e-mail de verificação em `user2+bar@example.com` e *não conseguem fazer login novamente*. Posteriormente, ele insere o código de verificação e só pode fazer login novamente com o endereço de e-mail `user2+bar@example.com`.

**Exemplo 3**  
O usuário 3 faz login na sua aplicação com o endereço de e-mail `user3@example.com` e não tem um nome de usuário (atributos de nome de usuário). Seu grupo de usuários está configurado para *não* verificar as atualizações nos atributos de login e para enviar mensagens de verificação automaticamente. Ele solicita a atualização do endereço de e-mail para `user3+baz@example.com`. Ele recebe um e-mail de verificação em `user3+baz@example.com`, mas *pode fazer login imediatamente* sem nenhuma ação adicional com o código de verificação.

## Processos de confirmação e verificação para contas de usuários criadas por administradores ou desenvolvedores
<a name="confirmation-and-verification-of-users-whose-accounts-youve-created"></a>

As contas de usuários que foram criadas por um administrador ou desenvolvedor já ficam no estado confirmado para que os usuários não precisem inserir um código de confirmação. A mensagem de convite que o serviço do Amazon Cognito envia para esses usuários inclui o nome de usuário e uma senha temporária. O usuário precisa alterar a senha antes de fazer login. Para obter mais informações, consulte [Personalizar mensagens de e-mail e de SMS](how-to-create-user-accounts.md#creating-a-new-user-customize-messages) em [Como criar contas de usuário como administrador](how-to-create-user-accounts.md) e o trigger de mensagem personalizada em [Como personalizar fluxos de trabalho do grupo de usuários com acionadores do Lambda](cognito-user-pools-working-with-lambda-triggers.md).

## Processos de confirmação e verificação para contas de usuários importadas
<a name="confirmation-and-verification-of-users-whose-accounts-youve-imported"></a>

As contas de usuário criadas usando o recurso de importação de usuários na Console de gerenciamento da AWS CLI ou na API (consulte[Como importar usuários para grupos de usuários com base em um arquivo CSV](cognito-user-pools-using-import-tool.md)) já estão no estado confirmado, portanto, os usuários não precisam inserir um código de confirmação. Nenhuma mensagem de convite é enviada. No entanto, as contas de usuário importadas exigem que os usuários primeiro solicitem um código chamando a API `ForgotPassword` e, em seguida, criem uma senha usando o código entregue chamando a API `ConfirmForgotPassword` antes de fazer login. Para obter mais informações, consulte [Solicitação de redefinição de senha aos usuários importados](cognito-user-pools-using-import-tool.md#cognito-user-pools-using-import-tool-password-reset).

Quando a conta de usuário é importada, o número de telefone ou o e-mail do usuário deve ser marcado como confirmado de modo que nenhuma verificação seja necessária quando o usuário fizer login.

## Como enviar e-mails enquanto testa sua aplicação
<a name="managing-users-accounts-email-testing"></a>

O Amazon Cognito envia e-mails aos usuários quando eles criam e gerenciam suas contas na aplicação cliente para o grupo de usuários. Se você configurar o grupo de usuários para solicitar verificação por e-mail, o Amazon Cognito enviará um e-mail quando:
+ Um usuário se cadastrar.
+ Um usuário atualizar o endereço de e-mail.
+ Um usuário realizar uma ação que chama a ação de API `ForgotPassword`.
+ Você criar uma conta de usuário como um administrador.

Dependendo da ação que inicia o e-mail, o e-mail contém um código de verificação ou uma senha temporária. Os usuários devem receber esses e-mails e compreender a mensagem. Caso contrário, eles podem não conseguir fazer login e usar seu aplicativo.

Para garantir que os e-mails sejam enviados com êxito e que a mensagem pareça correta, teste na sua aplicação as ações que iniciam entregas de e-mail no Amazon Cognito. Por exemplo, usando a página de cadastro do seu aplicativo, ou usando a ação de API `SignUp`, é possível iniciar um e-mail cadastrando-se com um endereço de e-mail de teste. Ao testar dessa forma, lembre-se do seguinte:

**Importante**  
Ao usar um endereço de e-mail para testar ações que iniciam e-mails no Amazon Cognito, não use um endereço de e-mail falso (um que não tenha caixa de correio). Use um endereço de e-mail real que receberá o e-mail do Amazon Cognito sem criar uma *devolução definitiva*.  
Uma devolução definitiva ocorre quando o Amazon Cognito deixa de entregar o e-mail para a caixa de correio do destinatário, o que sempre ocorre se a caixa de correio não existe.  
O Amazon Cognito limita o número de e-mails que podem ser enviados por AWS contas que incorrem em rejeições difíceis de forma persistente.

Ao testar ações que iniciam e-mails, use um dos seguintes endereços de e-mail para evitar devoluções definitivas:
+ Um endereço para uma conta de e-mail que você possui e usa para testes. Ao usar seu próprio endereço de e-mail, você recebe o e-mail que o Amazon Cognito envia. Com esse e-mail, você pode usar o código de verificação para testar a experiência de cadastro no seu aplicativo. Se você personalizou a mensagem de e-mail para o grupo de usuários, pode verificar se as personalizações estão corretas.
+ O endereço do simulador de caixa postal, *success@simulator.amazonses.com*. Se você usar o endereço do simulador, o Amazon Cognito enviará o e-mail com êxito, mas você não conseguirá visualizá-lo. Essa opção é útil quando você não precisa usar o código de verificação e não precisa verificar a mensagem de e-mail.
+ O endereço do simulador de caixa postal com a adição de um rótulo arbitrário, como *success\$1user1@simulator.amazonses.com* ou *success\$1user2@simulator.amazonses.com*. O Amazon Cognito enviará e-mails para esses endereços com êxito, mas você não conseguirá visualizá-los. Essa opção é útil quando você deseja testar o processo de cadastro adicionando vários usuários de teste ao grupo de usuários, e cada usuário de teste tem um endereço de e-mail exclusivo.

# Como configurar verificação de e-mail ou telefone
<a name="user-pool-settings-email-phone-verification"></a>

Você pode selecionar as configurações para verificação de e-mail ou telefone no menu **Métodos de autenticação**. Para obter mais informações sobre a autenticação multifator (MFA), consulte [MFA de mensagem de texto SMS](user-pool-settings-mfa-sms-email-message.md).

O Amazon Cognito usa o Amazon SNS para enviar mensagens SMS. Se você ainda não enviou uma mensagem SMS do Amazon Cognito ou de qualquer outra AWS service (Serviço da AWS) , o Amazon SNS pode colocar sua conta na sandbox de SMS. Recomendamos que você envie uma mensagem de teste para um número de telefone verificado antes de remover sua conta da sandbox para a produção. Além disso, se você pretende enviar mensagens SMS para números de telefone dos EUA, deve obter um ID de origem ou de remetente do Amazon Pinpoint. Para configurar seu grupo de usuários do Amazon Cognito para mensagens SMS, consulte [Configurações de mensagens SMS para grupos de usuários do Amazon Cognito](user-pool-sms-settings.md).

O Amazon Cognito pode verificar automaticamente os endereços de e-mail ou os números de telefone. Para fazer essa verificação, o Amazon Cognito envia um código de verificação ou um link de verificação. No caso dos endereços de e-mail, o Amazon Cognito envia um código ou um link em uma mensagem de e-mail. Você pode escolher um **Tipo de verificação** de **Código** ou **Link** ao editar seu modelo de **Mensagem de verificação** no menu **Modelos de mensagens** no console do Amazon Cognito. Para obter mais informações, consulte [Personalizar mensagens de verificação de e-mail](cognito-user-pool-settings-message-customizations.md#cognito-user-pool-settings-email-verification-message-customization).

Para números de telefone, o Amazon Cognito envia um código em uma mensagem de texto SMS.

O Amazon Cognito deve verificar um número de telefone ou endereço de e-mail para confirmar os usuários e ajudá-los a recuperar senhas esquecidas. Como alternativa, você pode confirmar automaticamente os usuários com o gatilho Lambda de pré-inscrição ou usar [AdminConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminConfirmSignUp.html)a operação da API. Para obter mais informações, consulte [Como cadastrar e confirmar contas de usuários](signing-up-users-in-your-app.md).

O código de verificação ou link tem validade de 24 horas.

Se você optar por exigir verificação de um endereço de e-mail ou número de telefone, o Amazon Cognito enviará automaticamente o código de verificação ou o link quando um usuário se cadastrar. Se o grupo de usuários tiver um [Acionador do Lambda de remetente personalizado de SMS](user-pool-lambda-custom-sms-sender.md) ou [Acionador do Lambda de remetente de e-mail personalizado](user-pool-lambda-custom-email-sender.md) configurado, essa função será invocada.

**Observações**  
O Amazon SNS cobra separadamente por mensagens de texto SMS que ele usa para verificar números de telefone. Não há encargos para envio de mensagens de e-mail. Para obter informações sobre preços do Amazon SNS, consulte [Worldwide SMS pricing](https://aws.amazon.com/sns/sms-pricing/) (Preço global de SMS). Para obter a lista atualizada de países nos quais o sistema de mensagens SMS está disponível, consulte [Supported regions and countries](https://docs.aws.amazon.com/sns/latest/dg/sms_supported-countries.html) (Países e regiões compatíveis). 
Quando você testar ações na aplicação que geram mensagens de e-mail do Amazon Cognito, use um endereço de e-mail real acessível ao Amazon Cognito sem devoluções definitivas. Para obter mais informações, consulte [Como enviar e-mails enquanto testa sua aplicação](signing-up-users-in-your-app.md#managing-users-accounts-email-testing).
O fluxo de senha esquecida requer o e-mail ou o número de telefone do usuário para verificar o usuário.

**Importante**  
Se um usuário se cadastrar com um número de telefone e um endereço de e-mail e suas configurações de grupo de usuários exigirem a verificação dos dois atributos, o Amazon Cognito enviará um código de verificação ao telefone por uma mensagem SMS. O Amazon Cognito ainda não verificou o endereço de e-mail, então seu aplicativo deve ligar [GetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html)para ver se um endereço de e-mail aguarda verificação. Se precisar de verificação, o aplicativo deverá ligar [GetUserAttributeVerificationCode](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserAttributeVerificationCode.html)para iniciar o fluxo de verificação de e-mail. Em seguida, ele deve enviar o código de verificação ligando [VerifyUserAttribute](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifyUserAttribute.html).

Você pode ajustar sua cota de gastos de mensagens SMS para uma Conta da AWS e para mensagens individuais. Os limites se aplicam somente ao custo do envio de mensagens SMS. Para obter mais informações, consulte **O que são cotas de gastos em nível de conta e de mensagem e** como elas funcionam? no [Amazon SNS FAQs](https://aws.amazon.com/sns/faqs/).

O Amazon Cognito envia mensagens SMS usando recursos do Amazon SNS no local em que você criou Região da AWS o grupo de usuários ou em uma região **alternativa legada do Amazon SNS da tabela** a seguir. A exceção são grupos de usuários do Amazon Cognito na região da Ásia-Pacífico (Seul). Esses grupos de usuários usam a configuração do Amazon SNS na região da Ásia-Pacífico (Tóquio). Para obter mais informações, consulte [Escolha o Região da AWS para mensagens SMS](user-pool-sms-settings.md#sms-choose-a-region).


| Região do Amazon Cognito | Região alternativa herdada do Amazon SNS | 
| --- | --- | 
| Leste dos EUA (Ohio) | Leste dos EUA (Norte da Virgínia) | 
| Ásia-Pacífico (Mumbai) | Ásia-Pacífico (Singapura) | 
| Ásia-Pacífico (Seul) | Ásia-Pacífico (Tóquio) | 
| Canadá (Central) | Leste dos EUA (Norte da Virgínia) | 
| Europa (Frankfurt) | Europa (Irlanda) | 
| Europa (Londres) | Europa (Irlanda) | 

**Exemplo:**se o grupo de usuários do Amazon Cognito estiver na Ásia-Pacífico (Mumbai) e você tiver aumentado o limite de gastos em ap-southeast-1, é provável que não queira solicitar um aumento separado em ap-south-1. Em vez disso, você pode usar os recursos do Amazon SNS na Ásia-Pacífico (Singapura). 

## Verificar atualizações de endereços de e-mail e números de telefone
<a name="user-pool-settings-verifications-verify-attribute-updates"></a>

Um atributo de endereço de e-mail ou número de telefone pode se tornar ativo e não verificado imediatamente depois que o usuário alterar o respectivo valor. O Amazon Cognito também pode exigir que seu usuário verifique o novo valor antes que o Amazon Cognito atualize o atributo. Quando você exigir que seus usuários confirmem primeiro o novo valor, eles poderão usar o valor original para fazer login e receber mensagens até confirmarem o novo valor.

Quando os usuários podem usar o endereço de e-mail ou o número de telefone como um alias de login no grupo de usuários, o nome de login para um atributo atualizado é condicionado à exigência de verificação de atributos atualizados. Quando você exigir que os usuários confirmem um atributo atualizado, um usuário poderá fazer login com o valor do atributo original até verificar o novo valor. Quando você não exigir que os usuários confirmem um atributo atualizado, um usuário não poderá fazer login nem receber mensagens no valor do atributo novo nem no original até confirmar o novo valor. 

Por exemplo, seu grupo de usuários permite o login com um alias de endereço de e-mail e exige que os usuários confirmem seu endereço de e-mail quando realizam uma atualização. Sue, que faz login como `sue@example.com`, quer alterar o endereço de e-mail para`sue2@example.com`, mas faz login como `ssue2@example.com` acidentalmente. Sue não recebe o e-mail de confirmação, então não consegue confirmar o e-mail `ssue2@example.com`. Sue faz login como `sue@example.com` e reenvia o formulário em sua aplicação para atualizar o endereço de e-mail para `sue2@example.com`. Ela recebe esse e-mail, fornece o código de verificação à aplicação e começa a fazer login como `sue2@example.com`. 

**Quando o usuário atualiza um atributo e o grupo de usuários verifica novos valores de atributos**
+ É possível fazer login com o valor do atributo original antes de confirmar o código para verificar o novo valor.
+ É possível fazer login somente com o novo valor do atributo depois de confirmar o código para verificar o novo valor.
+ Se você `phone_number_verified` definir `email_verified` `true` ou ativar uma solicitação de [AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html)API, eles poderão fazer login antes de confirmarem o código que o Amazon Cognito enviou a eles.

**Quando um usuário atualiza um atributo e o grupo de usuários não verifica novos valores de atributos**
+ Não é possível fazer login nem receber mensagens com o valor do atributo original.
+ Não é possível fazer login nem receber mensagens que não sejam um código de confirmação com o valor do novo atributo antes de confirmar o código para verificar o novo valor.
+ Se você `phone_number_verified` definir `email_verified` `true` ou ativar uma solicitação de [AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html)API, eles poderão fazer login antes de confirmarem o código que o Amazon Cognito enviou a eles.

## Para exigir verificação de atributos quando os usuários atualizam o endereço de e-mail ou o número de telefone


1. Faça login no [console do Amazon Cognito](https://console.aws.amazon.com/cognito/home). Se solicitado, insira suas AWS credenciais.

1. No painel de navegação, escolha **User Pools** (Grupos de usuários) e escolha o grupo de usuários que deseja editar.

1. No menu **Cadastrar-se**, selecione **Editar** em **Verificação de atributo e confirmação da conta do usuário**.

1. Selecione **Keep original attribute value active when an update is pending** (Manter valor do atributo original ativo quando uma atualização estiver pendente).

1. Em **Active attribute values when an update is pending** (Valores de atributos ativos quando uma atualização está pendente), escolha os atributos que você deseja exigir que seus usuários confirmem antes que o Amazon Cognito atualize o valor.

1. Escolha **Salvar alterações**.

Para exigir a verificação da atualização de atributos com a API do Amazon Cognito, você pode definir o `AttributesRequireVerificationBeforeUpdate` parâmetro em uma [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)solicitação.

## Como autorizar o Amazon Cognito a enviar mensagens SMS em seu nome
<a name="user-pool-settings-verifications-iam-role-for-sms"></a>

Para enviar mensagens SMS aos usuários em seu nome, o Amazon Cognito precisa da sua permissão. Para conceder essa permissão, você pode criar uma função AWS Identity and Access Management (IAM). No menu **Métodos de autenticação** do console do Amazon Cognito em SMS, selecione **Editar** para definir uma função.

# Configurar mensagens de MFA, autenticação, verificação e convite
<a name="cognito-user-pool-settings-message-customizations"></a>

Com o Amazon Cognito, você pode personalizar mensagens de autenticação, verificação e convite de usuários por SMS e e-mail para aprimorar a segurança e a experiência do usuário da aplicação. Para algumas mensagens, você pode escolher entre verificações baseadas em código e verificações por link de acesso com um clique. Este tópico aborda como você pode personalizar as comunicações de autenticação e verificação no console do Amazon Cognito. 

No menu **Modelos de mensagens**, você pode personalizar:
+ Seus modelos de e-mail e SMS para autenticação por senha de uso único (OTP) e autenticação multifator (MFA)
+ Mensagens de verificação de SMS e e-mail
+ O tipo de verificação para e-mail: código ou link
**nota**  
O Amazon Cognito envia links com seu modelo baseado em links nas mensagens de verificação quando os usuários se cadastram ou reenviam um código de confirmação. Os e-mails das operações de atualização de atributos e redefinição de senha usam o modelo de código.
+ Mensagens de convite a usuários
+ Endereços de e-mail FROM (Remetente) e REPLY-TO (Responder para) para e-mails que passam pelo seu grupo de usuários

**nota**  
Os modelos de mensagem de verificação por SMS e e-mail só serão exibidos se você tiver optado por exigir a verificação de número de telefone e e-mail. De maneira semelhante, o modelo de mensagem SMS de MFA só aparece se a configuração de MFA for **required** (obrigatória) ou **optional** (opcional).

**Topics**
+ [Modelos de mensagens](#cognito-user-pool-settings-message-templates)
+ [Personalizar mensagens de MFA enviadas por e-mail e SMS](#cognito-user-pool-settings-SMS-message-customization)
+ [Personalizar mensagens de verificação de e-mail](#cognito-user-pool-settings-email-verification-message-customization)
+ [Como personalizar mensagens de convite a usuários](#cognito-user-pool-settings-user-invitation-message-customization)
+ [Personalizar o endereço de e-mail](#cognito-user-pool-settings-email-address-customization)
+ [Como autorizar o Amazon Cognito a enviar e-mails do Amazon SES em seu nome (de um endereço de e-mail remetente personalizado)](#cognito-user-pool-settings-ses-authorization-to-send-email)

## Modelos de mensagens
<a name="cognito-user-pool-settings-message-templates"></a>

É possível usar modelos de mensagens para inserir espaços reservados em suas mensagens. O Amazon Cognito substitui os espaços reservados pelos valores correspondentes. Você pode consultar *Espaços reservados para modelos universais* em modelos de mensagem de qualquer tipo, embora esses valores não estejam presentes em todos os tipos de mensagens.


**Espaços reservados para modelos universais**  

|  Description  |  Token  | Tipo de mensagem | 
| --- | --- | --- | 
| Código de verificação | \$1\$1\$1\$1\$1\$1 | Mensagens de verificação, confirmação e MFA | 
| Senha temporária | \$1\$1\$1\$1\$1\$1 | Mensagens de senha esquecida e de convite | 
| Nome do usuário | \$1username\$1 | Mensagens de convite e de segurança avançada | 

Uma das respostas automatizadas disponíveis com [proteção contra ameaças](cognito-user-pool-settings-threat-protection.md) é notificar o usuário de que o Amazon Cognito detectou atividades possivelmente mal-intencionadas. Você pode usar espaços reservados de modelo de segurança avançada para fazer o seguinte:
+ Inclua detalhes específicos sobre um evento, como endereço IP, cidade, país, hora do login e nome do dispositivo. A proteção contra ameaças do Amazon Cognito pode analisar esses detalhes.
+ Verificar se um link de um clique é válido.
+ Use o ID do evento, o token de feedback e o nome de usuário para seu próprio link de um clique.

**nota**  
Para gerar links com um clique e usar os espaços reservados `{one-click-link-valid}` e `{one-click-link-invalid}` em modelos de e-mail de segurança avançada, será necessário ter um domínio já configurado para o grupo de usuários.

A proteção contra ameaças adiciona os espaços reservados abaixo que você pode inserir nos modelos de mensagem. Esses espaços reservados se aplicam às **Mensagens de autenticação adaptável**, notificações que o Amazon Cognito envia aos usuários cujas sessões foram avaliadas quanto ao nível de risco. Para configurar modelos de mensagens com essas variáveis, atualize a configuração de **função completa** da sua proteção contra ameaças no console do Amazon Cognito ou envie modelos em [SetRiskConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetRiskConfiguration.html)uma solicitação.


**Espaços reservados de modelo de segurança avançada**  

|  Description  |  Token  | 
| --- | --- | 
| IP address (endereço de IP) | \$1ip-address\$1 | 
| Cidade | \$1city\$1 | 
| País | \$1country\$1 | 
| Tempo de login | \$1login-time\$1 | 
| Nome do dispositivo | \$1device-name\$1 | 
| O link de um clique é válido | \$1one-click-link-valid\$1 | 
| O link de um clique não é válido | \$1one-click-link-invalid\$1 | 
| ID do evento | \$1event-id\$1 | 
| Token do feedback | \$1feedback-token\$1 | 

## Personalizar mensagens de MFA enviadas por e-mail e SMS
<a name="cognito-user-pool-settings-SMS-message-customization"></a>

Para personalizar as mensagens de [autenticação multifator (MFA)](user-pool-settings-mfa.md) enviadas por SMS e e-mail, edite **Mensagem de MFA** no menu **Modelos de mensagens** no console de grupos de usuários do Amazon Cognito.

**Importante**  
Sua mensagem personalizada deve conter o espaço reservado `{####}`. Esse espaço reservado é substituído pelo código de autenticação antes de a mensagem ser enviada.

O Amazon Cognito define um limite máximo de 140 caracteres UTF-8 para mensagens SMS, incluindo o código de autenticação.

### Como personalizar mensagens SMS de verificação
<a name="cognito-user-pool-settings-SMS-verification-message-customization"></a>

Para personalizar a mensagem SMS para verificação do número de telefone, edite o modelo **Mensagem de verificação** no menu **Modelos de mensagens** do seu grupo de usuários.

**Importante**  
Sua mensagem personalizada deve conter o espaço reservado `{####}`. Esse espaço reservado é substituído pelo código de verificação antes de a mensagem ser enviada.

O comprimento máximo da mensagem, incluindo o código de verificação, é de 140 caracteres em UTF-8.

## Personalizar mensagens de verificação de e-mail
<a name="cognito-user-pool-settings-email-verification-message-customization"></a>

Para verificar o endereço de e-mail de um usuário em seu grupo de usuários com o Amazon Cognito, você pode enviar ao usuário uma mensagem de e-mail com um link que pode ser selecionado ou enviar um código que possa ser inserido.

Para personalizar o assunto do e-mail e o conteúdo das mensagens de verificação de endereço de e-mail, edite o modelo de **Mensagem de verificação** no menu **Modelos de mensagens** de seu grupo de usuários. Você pode selecionar um **Tipo de verificação** de **Código** ou **Link** ao editar o modelo de **Mensagem de verificação**.

Se você escolher **Código** como tipo de verificação, sua mensagem personalizada deverá conter o espaço reservado `{####}`. Ao enviar a mensagem, o código de verificação substitui esse espaço reservado.

Se você escolher **Link** como o tipo de verificação, sua mensagem personalizada deverá conter o espaço reservado no formato `{##Verify Your Email##}`. Você pode alterar a string de texto entre os caracteres do espaço reservado, por exemplo, `{##Click here##}`. Um link de verificação intitulado *Verify Your Email* (Verificar seu e-mail) substitui esse espaço reservado.

O link para uma mensagem de verificação por e-mail direciona o usuário para um URL como no exemplo a seguir.

```
https://<your user pool domain>/confirmUser/?client_id=abcdefg12345678&user_name=emailtest&confirmation_code=123456
```

O comprimento máximo da mensagem, incluindo o código de verificação (se estiver presente), é de 20.000 caracteres em UTF-8. Você pode usar etiquetas HTML nessa mensagem para formatar o conteúdo.

## Como personalizar mensagens de convite a usuários
<a name="cognito-user-pool-settings-user-invitation-message-customization"></a>

É possível personalizar a mensagem de convite a usuários enviada pelo Amazon Cognito aos novos usuários por SMS ou e-mail editando o modelo de **Mensagens de convite** no menu **Modelos de mensagens**.

**Importante**  
Sua mensagem personalizada deve conter os espaços reservados `{username}` e `{####}`. Quando o Amazon Cognito envia a mensagem de convite, ele substitui esses espaços reservados pelo nome de usuário pela senha do usuário.

O comprimento máximo da mensagem SMS, incluindo o código de verificação, é de 140 caracteres em UTF-8. O comprimento máximo da mensagem de e-mail, incluindo o código de verificação, é de 20.000 caracteres em UTF-8. Você pode usar etiquetas HTML nas suas mensagem de e-mail para formatar o conteúdo.

## Personalizar o endereço de e-mail
<a name="cognito-user-pool-settings-email-address-customization"></a>

Por padrão, o Amazon Cognito envia mensagens de e-mail aos usuários dos seus grupos de usuários do endereço **no-reply@verificationemail.com**. É possível escolher especificar endereços de e-mail FROM (Remetente) e REPLY-TO (Responder para) personalizados em vez de **no-reply@verificationemail.com**.

**Como personalizar os endereços de e-mail FROM e REPLY-TO**

1. Acesse o [console do Amazon Cognito](https://console.aws.amazon.com/cognito/home) e escolha **User Pools** (Grupos de usuários).

1. Escolha um grupo de usuários existente na lista ou [crie um grupo de usuários](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html).

1. Clique no menu **Métodos de autenticação**. Em **Email** (E-mail), escolha **Edit** (Editar).

1. Escolha uma **SES Region** (Região do SES).

1. Escolha um **FROM email address** (Endereço de e-mail do remetente) na lista de endereços de e-mail que você verificou com o Amazon SES na **SES Region** (Região do SES) selecionada por você. Para usar um endereço de e-mail de um domínio verificado, defina as configurações de e-mail na AWS Command Line Interface ou na AWS API. Para mais informações, consulte [Verificar endereços de e-mail e domínios no Amazon SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html) no *Guia do desenvolvedor do Amazon Simple Email Service*.

1. Escolha um **Configuration set** (Conjunto de configurações) na lista de conjuntos de configurações na **SES Region** (Região SES) escolhida.

1. Insira um **FROM sender name** (Nome do remetente) amigável para suas mensagens de e-mail, no formato `John Stiles <johnstiles@example.com>`.

1. Para personalizar o endereço de e-mail do destinatário, insira um endereço de e-mail válido no campo **Endereço de e-mail do destinatário**.

## Como autorizar o Amazon Cognito a enviar e-mails do Amazon SES em seu nome (de um endereço de e-mail remetente personalizado)
<a name="cognito-user-pool-settings-ses-authorization-to-send-email"></a>

É possível configurar o Amazon Cognito para enviar e-mails de um endereço de e-mail remetente personalizado ao invés do seu endereço padrão. Para usar um endereço personalizado, você deve conceder permissão para que o Amazon Cognito envie mensagens de e-mail de uma identidade verificada do Amazon SES. Na maioria dos casos, é possível conceder essa permissão criando uma política de autorização de envio. Para mais informações, consulte [Usar autorização de envio com o Amazon SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html) no *Guia do desenvolvedor do Amazon Simple Email Service*. 

Quando você configura um grupo de usuários para usar o Amazon SES para mensagens de e-mail, o Amazon Cognito cria a função `AWSServiceRoleForAmazonCognitoIdpEmailService` em sua conta para conceder acesso ao Amazon SES. Nenhuma política de autorização de envio é necessária quando a função vinculada ao serviço `AWSServiceRoleForAmazonCognitoIdpEmailService` é usada. Você só precisa adicionar uma política de autorização de envio quando usar a funcionalidade de e-mail padrão em seu grupo de usuários *e* uma identidade verificada do Amazon SES como o endereço remetente.

Para obter mais informações sobre a função vinculada ao serviço criada pelo Amazon Cognito, consulte [Como usar funções vinculadas a serviço para o Amazon Cognito](using-service-linked-roles.md).

O exemplo de política de autorização de envio a seguir concede ao Amazon Cognito uma capacidade limitada de usar uma identidade verificada do Amazon SES. O Amazon Cognito só pode enviar mensagens de e-mail quando o fizer em nome do grupo de usuários na condição `aws:SourceArn` e da conta na condição `aws:SourceAccount`. Para mais exemplos, consulte [Exemplos de política de autorização de envio do Amazon SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization-policy-examples.html) no *Guia do desenvolvedor do Amazon Simple Email Service*.

**nota**  
Neste exemplo, o valor "Sid" é uma string arbitrária que identifica exclusivamente a instrução. Para mais informações sobre sintaxe de políticas, consulte [Políticas de autorização de envio do Amazon SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization-policies.html) no *Guia do desenvolvedor do Amazon Simple Email Service*.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "stmnt1234567891234",
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "email.cognito-idp.amazonaws.com"
                ]
            },
            "Action": [
                "SES:SendEmail",
                "SES:SendRawEmail"
            ],
            "Resource": "arn:aws:ses:us-east-1:111122223333:identity/support@example.com",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "111122223333"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:cognito-idp:us-east-1:111122223333:userpool/us-east-1_EXAMPLE"
                }
            }
        }
    ]
}
```

------

O console do Amazon Cognito adiciona uma política semelhante para você quando você seleciona uma identidade do Amazon SES do menu suspenso. Se usar a CLI ou a API para configurar o grupo de usuários, você deverá anexar uma política estruturada como o exemplo anterior à sua identidade do Amazon SES.