

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 gerenciar usuários em seu grupo de usuários
<a name="managing-users"></a>

Depois de criar um grupo de usuários, você poderá criar, confirmar e gerenciar contas de usuários. Com os grupos de usuários do Amazon Cognito, você pode gerenciar seus usuários e o acesso deles a recursos mapeando funções do IAM para grupos.

O gerenciamento de usuários em seu grupo de usuários do Amazon Cognito envolve várias opções de configuração e tarefas administrativas. Os grupos de usuários podem ser escalados para milhões de usuários. Um diretório de usuários dessa escala requer ferramentas administrativas igualmente escaláveis e reproduzíveis. Você pode querer criar vários perfis de usuário, gerenciar usuários inativos, produzir relatórios de governança e conformidade ou configurar ferramentas de autoatendimento em que os usuários façam a maior parte do trabalho. Depois de criar um grupo de usuários, você pode controlar como os usuários se cadastram e confirmam suas contas, incluindo solicitar verificação de e-mail ou número de telefone. Os administradores também podem criar contas de usuário diretamente e personalizar as mensagens de boas-vindas e os requisitos de senha.

Nos grupos de usuários, você pode gerenciar o acesso aos recursos com base na associação de um usuário ao grupo. Você pode atribuir perfis do IAM a esses grupos para gerenciar o acesso aos Serviços da AWS com bancos de identidades. A associação ao grupo de usuários está presente nos tokens de ID e de acesso. Com essas informações, você pode tomar decisões de controle de acesso em tempo de execução na aplicação ou com um mecanismo de políticas como o Amazon Verified Permissions.

Os grupos de usuários geralmente têm muitos usuários. Você geralmente pesquisará e atualizará contas de usuário. O console e a API do Amazon Cognito oferecem suporte à consulta de usuários com base em atributos padrão, como nome de usuário, e-mail e número de telefone. Os administradores também podem redefinir senhas, desativar contas e visualizar o histórico de eventos do usuário.

Para migrar dados de usuários existentes, o Amazon Cognito tem opções para importar usuários de um arquivo CSV e usar um [acionador do Lambda](user-pool-lambda-migrate-user.md) para migrar automaticamente os usuários quando eles fizerem login pela primeira vez. Essas opções oferecem suporte a transições de usuários de outros diretórios para o seu grupo de usuários.

Você pode usar os recursos de gerenciamento de usuários nos grupos de usuários para ter um controle refinado sobre o ciclo de vida do usuário e a experiência de autenticação. A combinação de cadastro de autoatendimento, contas criadas pelo administrador, grupos e ferramentas de migração faz dos grupos de usuários do Amazon Cognito um diretório flexível.

**Topics**
+ [Configurar políticas para a criação de usuários](user-pool-settings-admin-create-user-policy.md)
+ [Como cadastrar e confirmar contas de usuários](signing-up-users-in-your-app.md)
+ [Como criar contas de usuário como administrador](how-to-create-user-accounts.md)
+ [Como adicionar grupos a um grupo de usuários](cognito-user-pools-user-groups.md)
+ [Como gerenciar e pesquisar contas de usuários](how-to-manage-user-accounts.md)
+ [Senhas, recuperação de contas e políticas de senha](managing-users-passwords.md)
+ [Como importar usuários para um grupo de usuários](cognito-user-pools-import-users.md)
+ [Trabalhar com atributos do usuário](user-pool-settings-attributes.md)

# Configurar políticas para a criação de usuários
<a name="user-pool-settings-admin-create-user-policy"></a>

O grupo de usuários pode permitir que os usuários se inscrevam ou você pode criá-los como administrador. Também é possível controlar quanto do processo de verificação e de confirmação após o cadastro os usuários podem realizar. Por exemplo, talvez você queira revisar os cadastros e aceitá-los com base em um processo de validação externo. Essa configuração ou a *política de criação de usuários do administrador* também define a quantidade de tempo antes da qual um usuário não pode mais confirmar sua conta de usuário.

O Amazon Cognito pode atender às necessidades de seus clientes públicos como a plataforma de gerenciamento de identidade e acesso de clientes (CIAM) para seu software. Um grupo de usuários que aceita se cadastrar e tem um cliente da aplicação, com ou sem login gerenciado, cria um perfil de usuário para qualquer pessoa na Internet que conheça seu ID de cliente da aplicação que pode ser descoberto publicamente e solicite o cadastro. Um perfil de usuário cadastrado pode receber tokens de acesso e identidade e acessar recursos que você autorizou para a aplicação. Antes de ativar o cadastro em seu grupo de usuários, revise suas opções e certifique-se de que sua configuração esteja em conformidade com seus padrões de segurança. Defina **Habilitar autorregistro** e `AllowAdminCreateUserOnly`, descritos nos procedimentos a seguir, com cuidado.

------
#### [ Console de gerenciamento da AWS ]

O menu **Cadastrar-se** do grupo de usuários contém algumas das configurações de cadastro e criação administrativa de usuários no grupo de usuários.

**Como configurar a experiência de cadastro**

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 um e-mail ou mensagem SMS para novos usuários com um código que eles devem apresentar ao grupo de usuários. Isso confirma a propriedade do endereço de e-mail ou do número de telefone, configurando o atributo equivalente como verificado e confirmando a conta do usuário para login. Os **Atributos a serem verificados** escolhidos determinam os métodos de entrega e os destinos das mensagens de verificação.

1. A **Verificação das alterações de atributos** não é significativa quando você está criando usuários, mas está relacionada à verificação dos atributos. É possível permitir que os usuários que alteraram, mas ainda não verificaram, seus [atributos de login](user-pool-settings-attributes.md#user-pool-settings-aliases.title) continuem fazendo login com o novo valor de atributo ou com o original. Para obter mais informações, consulte [Como verificar quando usuários alteram o e-mail ou o número de telefone](signing-up-users-in-your-app.md#verifying-when-users-change-their-email-or-phone-number).

1. A opção **Atributos obrigatórios** exibe os atributos que devem receber um valor antes que um usuário possa se cadastrar ou que você possa criar um usuário. Os atributos obrigatórios só podem ser definidos na criação de um grupo de usuários.

1. Os **Atributos personalizados** são importantes para o processo de criação e cadastro do usuário porque, ao criar um usuário pela primeira vez, você só pode definir um valor para atributos personalizados *imutáveis*. Para obter mais informações sobre atributos personalizados, consulte [Atributos personalizados](user-pool-settings-attributes.md#user-pool-settings-custom-attributes).

1. Em **Cadastro por autoatendimento**, selecione **Habilitar autorregistro** se desejar que os usuários possam gerar uma nova conta com a API `SignUp` [não autenticada](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pools-API-operations.html#user-pool-apis-auth-unauth). Se você desativar o autorregistro, só poderá criar novos usuários como administrador, no console do Amazon Cognito ou [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html)com solicitações de API. Em um grupo de usuários em que o autorregistro está inativo, as solicitações de [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)API retornam `NotAuthorizedException` e o login gerenciado não exibe um link de **inscrição**.

Para grupos de usuários nos quais você planeja criar usuários como administrador, é possível configurar a duração das senhas temporárias no menu **Métodos de autenticação** em **Senhas temporárias definidas por administradores expiram em**.

Outro elemento importante da criação de usuários como administrador é a mensagem de convite. Ao criar um novo usuário, o Amazon Cognito envia uma mensagem ao usuário com um link para a sua aplicação para que o usuário possa fazer login pela primeira vez. Personalize esse modelo de mensagem no menu **Métodos de autenticação**, em **Modelos de mensagens**.

É possível configurar [clientes de aplicações confidenciais](user-pool-settings-client-apps.md#user-pool-settings-client-app-client-types.title), geralmente aplicações da Web, com um segredo de cliente que impede o cadastro sem o segredo do cliente da aplicação. Como prática recomendada de segurança, não distribua segredos de clientes de aplicações em clientes de aplicações públicas, geralmente aplicativos móveis. É possível criar clientes da aplicação com segredos do cliente no menu **Clientes da aplicação** do console do Amazon Cognito.

------
#### [ Amazon Cognito user pools API ]

Você pode definir programaticamente os parâmetros para a criação de usuários em um grupo de usuários em uma solicitação [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)de [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)API.

O [AdminCreateUserConfig](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-AdminCreateUserConfig)elemento define valores para as seguintes propriedades de um grupo de usuários.

1. Habilitar cadastro por autoatendimento

1. A mensagem de convite que você envia aos novos usuários criados por administrador

O exemplo a seguir, quando adicionado ao corpo de uma solicitação completa de API, define um grupo de usuários com cadastro por autoatendimento inativo e um e-mail de convite básico.

```
"AdminCreateUserConfig": { 
      "AllowAdminCreateUserOnly": true,
      "InviteMessageTemplate": { 
         "EmailMessage": "Your username is {username} and temporary password is {####}.",
         "EmailSubject": "Welcome to ExampleApp",
         "SMSMessage": "Your username is {username} and temporary password is {####}."
      }
   }
```

Os seguintes parâmetros adicionais de uma solicitação de [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)API [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)ou API governam a criação de novos usuários.

[AutoVerifiedAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-AutoVerifiedAttributes)  
Os atributos, endereços de e-mail ou números de telefone, aos quais você deseja [enviar uma mensagem automaticamente](user-pool-settings-email-phone-verification.md#user-pool-settings-email-phone-verification.title) ao registrar um novo usuário.

[Políticas](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-Policies)  
A [política de senha](managing-users-passwords.md#user-pool-settings-policies.title) do grupo de usuários.

[Esquema](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-Schema)  
Os [atributos personalizados](user-pool-settings-attributes.md#user-pool-settings-custom-attributes.title) do grupo de usuários. Esses são importantes para o processo de criação e cadastro do usuário porque, ao criar um usuário pela primeira vez, você só pode definir um valor para atributos personalizados *imutáveis*.  
Esse parâmetro também define os atributos necessários para o grupo de usuários. O texto a seguir, quando inserido no elemento `Schema` no corpo completo de uma solicitação da API, define o atributo `email` conforme necessário.  

```
{
            "Name": "email",
            "Required": true
}
```

------

# 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.

# Como criar contas de usuário como administrador
<a name="how-to-create-user-accounts"></a>

Os grupos de usuários não são apenas um diretório de usuários do gerenciamento de identidade e acesso do cliente (CIAM), em que qualquer pessoa na Internet pode cadastrar um perfil de usuário na aplicação. Você pode desativar o cadastro por autoatendimento. Talvez você já conheça seus clientes e queira admitir apenas aqueles que foram autorizados com antecedência. Você pode colocar barreiras de proteção na autenticação manual da aplicação com um [provedor de identidades SAML 2.0 ou OIDC privado](cognito-user-pools-identity-federation.md), [importando usuários](cognito-user-pools-import-users.md), [examinando usuários no momento do cadastro](user-pool-lambda-pre-sign-up.md) ou criando usuários com operações administrativas de API. Seu fluxo de trabalho para criação administrativa de usuários pode ser programático, provisionando usuários após o registro em outro sistema, ou pode ser baseado em testes case-by-case ou no console do Amazon Cognito.

Quando você cria usuários como administrador, o Amazon Cognito define uma senha temporária para eles e envia uma mensagem de boas-vindas ou convite. Eles podem seguir o link na mensagem de convite e fazer login pela primeira vez, definindo uma senha e confirmando a conta. A página a seguir descreve como criar usuários e configurar a mensagem de boas-vindas. Para obter mais informações sobre a criação de usuários com a API de grupos de usuários e um AWS SDK ou CDK, consulte. [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html)

Depois de criar seu grupo de usuários, você pode criar usuários usando a Console de gerenciamento da AWS, bem como a API do AWS Command Line Interface Amazon Cognito. Você pode criar um perfil para um novo usuário em um grupo de usuários e enviar uma mensagem de boas-vindas com instruções de cadastro por SMS ou e-mail.

Veja a seguir alguns exemplos de como os administradores podem gerenciar usuários em grupos de usuários.
+ Crie um novo perfil de usuário no console do Amazon Cognito ou com a operação de API `AdminCreateUser`.
+ Disponibilize [fluxos de autenticação](amazon-cognito-user-pools-authentication-flow-methods.md) sem senha username-and-password, chave de acesso e personalizados para seu grupo de usuários e cliente de aplicativos.
+ Defina os valores dos atributos do usuário.
+ Crie atributos personalizados.
+ Defina o valor dos [atributos personalizados](user-pool-settings-attributes.md#user-pool-settings-custom-attributes) imutáveis nas solicitações de API `AdminCreateUser`. Esse recurso não está disponível no console do Amazon Cognito.
+ Especifique uma senha temporária, crie um usuário sem senha ou permita que o Amazon Cognito gere automaticamente uma senha.
+ Crie novos usuários e confirme automaticamente suas contas, verifique seus endereços de e-mail ou verifique seus números de telefone.
+ [Especifique mensagens personalizadas de convite por SMS e e-mail para novos usuários por meio dos acionadores Console de gerenciamento da AWS ou Lambda, como [mensagem personalizada](user-pool-lambda-custom-message.md), remetente de [SMS personalizado e remetente](user-pool-lambda-custom-sms-sender.md) de e-mail personalizado.](user-pool-lambda-custom-email-sender.md)
+ Especifique se as mensagens de convite serão enviadas por SMS, e-mail ou ambos.
+ Reenvie a mensagem de boas-vindas a um usuário existente chamando a API `AdminCreateUser`, especificando `RESEND` para o parâmetro `MessageAction`.
+ [Suprima](#admincreateuserwalkthrough-step-invitationmessage) o envio da mensagem de convite quando o usuário for criado.
+ Especifique um limite de tempo de expiração de até 90 dias para novas contas de usuário.
+ Permita que os usuários se cadastrem ou exija que novos usuários sejam adicionados apenas pelo administrador.

Os administradores também podem conectar usuários com AWS credenciais em um aplicativo do lado do servidor. Para obter mais informações, consulte [Modelos de autorização para autenticação de API e SDK](authentication-flows-public-server-side.md).

## Fluxos de autenticação de usuários e criação de usuários
<a name="how-to-create-user-accounts-flows"></a>

A criação administrativa de usuários tem opções que diferem com base na configuração do seu grupo de usuários. Os *fluxos de autenticação*, ou métodos disponíveis aos usuários para login e MFA, podem alterar a forma como você cria usuários e as mensagens enviadas a eles. Veja a seguir alguns fluxos de autenticação disponíveis em grupos de usuários.
+ Nome de usuário e senha
+ Chaves de acesso
+ Faça login com terceiros IdPs
+ Sem senha com senhas de uso único por e-mail e SMS () OTPs
+ Autenticação multifatorial com e-mail, SMS e aplicativo autenticador OTPs
+ Autenticação personalizada com acionadores do Lambda

Para obter mais informações sobre como configurar esses fatores de login, consulte [Autenticação com grupos de usuários do Amazon Cognito](authentication.md).

## Criar usuários sem senhas
<a name="how-to-create-user-accounts-thingstoknow-passwordless"></a>

Se o login sem senha estiver habilitado para seu grupo de usuários, você poderá criar usuários sem senhas. Forneça valores de atributos para um fator de login sem senha disponível para criar um usuário sem uma senha. Por exemplo, se o login sem senha com OTP enviada por e-mail estiver disponível em seu grupo de usuários, você poderá criar um usuário sem senha e com um atributo de endereço de e-mail. Se os únicos fluxos de autenticação disponíveis para novos usuários exigirem uma senha, por exemplo, chave de acesso ou nome de usuário e senha, você deverá criar ou gerar uma senha temporária para cada novo usuário.

**Como criar um novo usuário sem uma senha**
+ Selecione **Não defina uma senha** no console do Amazon Cognito
+ Omita ou deixe em branco o parâmetro `TemporaryPassword` da solicitação de API `AdminCreateUser`

**Usuários sem senhas são confirmados automaticamente**  
Normalmente, novos usuários recebem uma senha temporária e entram em um status `FORCE_CHANGE_PASSWORD` ao serem criados. Quando você cria usuários sem senhas, eles imediatamente entram em um estado `CONFIRMED`. Você não pode reenviar códigos de confirmação para esses usuários no estado `CONFIRMED`.

**As mensagens de convite mudam para usuários sem senhas.**  
Por padrão, o Amazon Cognito envia uma [mensagem de convite](cognito-user-pool-settings-message-customizations.md#cognito-user-pool-settings-user-invitation-message-customization) para novos usuários que diz: `Your username is {userName} and your password is {####}.` Quando você cria usuários sem senha, a mensagem diz: `Your username is {userName}.` Personalize sua mensagem de convite para refletir se você definirá senhas para os usuários. Omita a variável de senha `{####}` nos modelos de autenticação sem senha.

**Não é possível gerar senhas automaticamente quando fatores sem senha estão disponíveis**  
Se configurou o grupo de usuários para oferecer suporte ao login sem senha com OTP enviada por e-mail ou telefone, você não conseguirá gerar uma senha automaticamente. Para os usuários que terão uma senha, você deverá definir uma senha temporária ao criar os perfis deles.

**Os usuários sem senha devem ter valores para todos os atributos obrigatórios**  
Quando você cria um usuário *sem* uma senha, sua solicitação só é bem-sucedida se o usuário fornecer valores para todos os atributos que você marcou como obrigatórios em seu grupo de usuários. Isso se aplica a qualquer atributo obrigatório, não somente aos atributos de número de telefone e e-mail obrigatórios para a entrega da OTP.

## Criar usuários que fornecerão valores de atributos obrigatórios posteriormente
<a name="how-to-create-user-accounts-thingstoknow-password-restrictions"></a>

É recomendável exigir atributos em seu grupo de usuários. No entanto, colete esses atributos após a criação administrativa de usuários, durante a interação do usuário na aplicação. Os administradores podem omitir valores para os atributos obrigatórios ao criar usuários com *senhas temporárias*. Você não pode omitir valores de atributos obrigatórios para usuários sem senha.

Os usuários com valores ausentes para os atributos obrigatórios e uma senha temporária recebem um desafio [NEW\$1PASSWORD\$1REQUIRED](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html#CognitoUserPools-RespondToAuthChallenge-request-ChallengeResponses) no primeiro login. Em seguida, eles podem informar um valor para os atributos obrigatórios ausentes no parâmetro `requiredAttributes`. Você pode criar usuários com senhas e sem atributos obrigatórios somente se todos os atributos obrigatórios forem [mutáveis](user-pool-settings-attributes.md#user-pool-settings-custom-attributes). Os usuários só podem concluir o login com desafios `NEW_PASSWORD_REQUIRED` e valores de atributos obrigatórios se esses atributos forem [graváveis](user-pool-settings-client-apps.md#cognito-user-pools-app-idp-settings-about) pelo cliente de aplicação que eles usam para fazer login.

Ao definir uma senha permanente para um usuário criado pelo administrador, o status muda para `CONFIRMED` e seu grupo de usuários não solicita uma nova senha *ou* atributos obrigatórios no primeiro login.

## Criando um novo usuário no Console de gerenciamento da AWS
<a name="creating-a-new-user-using-the-console"></a>

É possível definir requisitos de senha de usuário, configurar as mensagens de convite e verificação enviadas aos usuários e adicionar novos usuários com o console do Amazon Cognito.

### Definir uma política de senha e habilitar a autoinscrição
<a name="set-user-password-policy"></a>

Você pode definir as configurações para a complexidade mínima da senha e se os usuários podem se inscrever usando public APIs em seu grupo de usuários.

**Configurar uma política de senhas**

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** e localize **Política de senha**. Escolha **Editar**.

1. Selecione o **Password policy mode** (Modo de política de senha) **Custom** (Personalizado).

1. Selecione um **Password minimum length** (Comprimento mínimo da senha). Para os limites do requisito de tamanho da senha, consulte [Cotas de recursos de grupos de usuários](https://docs.aws.amazon.com/cognito/latest/developerguide/limits.html#limits-hard).

1. Selecione um requisito de **Password complexity** (Complexidade de senha).

1. Escolha por quanto tempo a senha definida pelos administradores deve ser válida.

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

**Permitir cadastro por autoatendimento**

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 **Cadastrar-se** e localize **Cadastro por autoatendimento**. Selecione **Edit** (Editar).

1. Escolha se deseja **Enable self-registration** (Habilitar a autoinscrição). O autorregistro geralmente é usado com clientes de aplicativos públicos que precisam registrar novos usuários em seu grupo de usuários sem distribuir um segredo de cliente ou credenciais de API AWS Identity and Access Management (IAM).
**Como desabilitar a autoinscrição**  
Se você não habilitar a autoinscrição, os novos usuários deverão ser criados por ações administrativas da API usando credenciais da API do IAM ou mediante login com provedores federados.

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

### Personalizar mensagens de e-mail e de SMS
<a name="creating-a-new-user-customize-messages"></a>

**Personalizar mensagens de usuário**

É possível personalizar as mensagens que o Amazon Cognito envia aos seus usuários quando você os convida para o acesso, eles se cadastram em uma conta de usuário ou acessam e são solicitados a fazer a autenticação multifator (MFA).
**nota**  
Uma **Invitation message** (Mensagem de convite) é enviada quando você cria um usuário em seu grupo de usuários e o convida a acessar. O Amazon Cognito envia informações iniciais de acesso para o endereço de e-mail ou o número de telefone do usuário.  
Uma **Verification message** (Mensagem de verificação) é enviada quando um usuário se cadastra em uma conta no grupo de usuários. O Amazon Cognito envia um código para o usuário. Quando o usuário fornece o código ao Amazon Cognito, ele verifica suas informações de contato e confirma sua conta para acesso. Códigos de verificação são válidos por 24 horas.  
Uma **MFA message** (Mensagem de MFA) é enviada quando você habilita o SMS de MFA em seu grupo de usuários e um usuário que tenha configurado o SMS de MFA faz o acesso e a MFA é solicitada.

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. Escolha o menu **Modelos de mensagens** e selecione **Mensagem de verificação**, **Mensagem de convite** ou **Mensagem de MFA** e clique em **Editar**.

1. Personalize as mensagens para o tipo de mensagem escolhido.
**nota**  
Todas as variáveis nos modelos de mensagens devem ser incluídas quando você personaliza a mensagem. Se a variável, por exemplo **\$1\$1\$1\$1\$1\$1**, não for incluída, seu usuário não terá informações suficientes para concluir a ação da mensagem.  
Para mais informações, consulte [Modelos de mensagens](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-settings-message-templates.html).

1. 

   1. **Mensagens de verificação**

      1. Selecione um **Verification type** (Tipo de verificação) para mensagens de **Email** (E-mail). Um verificação por **Code** (Código) envia um código numérico que o usuário deve inserir. Uma verificação por **Link** (Link) envia um link no qual o usuário pode clicar para verificar suas informações de contato. O texto na variável para uma mensagem de **Link** é exibido como texto com hiperlink. Por exemplo, um modelo de mensagem usando a variável \$1\$1\$1Clique aqui\$1\$1\$1 é exibido como [Clique aqui]() na mensagem de e-mail.

      1. Insira um **Email subject** (Assunto do e-mail) para mensagens de **Email** (E-mail).

      1. Insira um modelo personalizado de **Email message** (Mensagem de e-mail) para mensagens de **Email** (E-mail). Você pode personalizar esse modelo usando código em HTML.

      1. Insira um modelo personalizado de **SMS message** (Mensagem SMS) para mensagens de **SMS** (SMS).

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

   1. **Mensagens de convite**

      1. Insira um **Email subject** (Assunto do e-mail) para mensagens de **Email** (E-mail).

      1. Insira um modelo personalizado de **Email message** (Mensagem de e-mail) para mensagens de **Email** (E-mail). Você pode personalizar esse modelo usando código em HTML.

      1. Insira um modelo personalizado de **SMS message** (Mensagem SMS) para mensagens de **SMS** (SMS).

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

   1. **Mensagens de MFA**

      1. Insira um modelo personalizado de **SMS message** (Mensagem SMS) para mensagens de **SMS** (SMS).

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

### Criar um usuário
<a name="creating-a-new-user-using-the-users-tab"></a>

**Criar um usuário**

Você pode criar novos usuários para seu grupo de usuários diretamente do console do Amazon Cognito. Normalmente, os usuários podem fazer login depois que eles definem uma senha. Para acesso com um endereço de e-mail, o usuário precisa verificar o atributo `email`. Para fazer login com um número de telefone, o usuário deve verificar o atributo `phone_number`. Para confirmar contas como administrador, você também pode usar a API AWS CLI ou ou criar perfis de usuário com um provedor de identidade federado. Para mais informações, consulte a [Referência de API do Amazon Cognito](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/).

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 **Usuários** e, em seguida, selecione **Criar um usuário**.

1. Revise os **User pool sign-in and security requirements** (Requisitos de acesso e segurança do grupo de usuários) para obter orientações sobre requisitos de senha, métodos de recuperação de conta disponíveis e atributos de alias para seu grupo de usuários.

1. <a name="admincreateuserwalkthrough-step-invitationmessage"></a>Escolha como você deseja enviar uma **Invitation message** (Mensagem de convite). Escolha mensagem SMS, mensagem de e-mail ou ambos. Para suprimir a mensagem de convite, clique em **Não enviar um convite**.
**nota**  
Para que você possa enviar mensagens de convite, configure um remetente e uma Região da AWS com o Amazon Simple Notification Service e o Amazon Simple Email Service no menu **Métodos de autenticação** do grupo de usuários. Aplicam-se tarifas de mensagens e dados do destinatário da mensagem. A cobrança de mensagens de e-mail pelo Amazon SES e de mensagens SMS pelo Amazon SNS é feita separadamente.

1. Selecione um **Username** (Nome de usuário) para o novo usuário.

1. Escolha **Create a password** (Criar uma senha) ou **Generate a password** (Gerar uma senha) se desejar que o Amazon Cognito gere uma senha para o usuário. A opção de gerar uma senha não estará disponível se o [login sem senha](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless) estiver habilitado no grupo de usuários. Qualquer senha temporária deve aderir à política de senha do grupo de usuários.

1. Escolha **Criar**.

1. Clique no menu **Usuários** e selecione o **Nome de usuário** correspondente. Adicione e edite **User attributes** (Atributos do usuário) e **Group memberships** (Associações de grupo). Examine **User event history** (Histórico de eventos do usuário).

# Como adicionar grupos a um grupo de usuários
<a name="cognito-user-pools-user-groups"></a>

O suporte a grupos de usuários no Amazon Cognito permite que você crie e gerencie grupos, adicione usuários a grupos e remova usuários de grupos. Use grupos a fim de criar coleções de usuários para gerenciar suas permissões ou representar diferentes tipos de usuários. Você pode atribuir uma função AWS Identity and Access Management (IAM) a um grupo para definir as permissões dos membros de um grupo.

Você pode usar grupos para criar um conjunto de usuários em um grupo de usuários, que normalmente é feito para definir as permissões para esses usuários. Por exemplo, você pode criar grupos separados para os usuários que são leitores, colaboradores e editores do seu site e aplicativo. Usando a função do IAM associada a um grupo, você também pode definir permissões diferentes para os diferentes grupos de modo que apenas colaboradores possam colocar conteúdo no Amazon S3 e apenas editores possam publicar conteúdo por meio de uma API no Amazon API Gateway.

O Amazon Cognito cria um grupo de usuários para cada OIDC e [provedor de identidade social (](cognito-user-pools-identity-federation.md#cognito-user-pools-identity-federation-how-it-works)IdP) que você adiciona ao seu grupo de usuários. SAMl O nome do grupo está no formato `[user pool ID]_[IdP name]`, por exemplo, `us-east-1_EXAMPLE_MYSSO` ou `us-east-1_EXAMPLE_Google`. Cada perfil de usuário exclusivo do IdP gerado automaticamente é adicionado automaticamente a esse grupo. Os [usuários vinculados](cognito-user-pools-identity-federation-consolidate-users.md) não são adicionados automaticamente a esse grupo, mas você pode adicionar os perfis ao grupo em outro processo.

Você pode criar e gerenciar grupos em um grupo de usuários a partir da Console de gerenciamento da AWS APIs, da e da CLI. Como desenvolvedor (usando AWS credenciais), você pode criar, ler, atualizar, excluir e listar os grupos de um grupo de usuários. Você também pode adicionar e remover usuários dos grupos.

Não há custo adicional para usar grupos dentro de um grupo de usuários. Para obter mais informações, consulte [Preço do Amazon Cognito](https://aws.amazon.com/cognito/pricing/).

## Como atribuir funções do IAM a grupos
<a name="assigning-iam-roles-to-groups"></a>

É possível usar grupos para controlar permissões aos recursos usando uma função do IAM. As funções do IAM incluem políticas de confiança e políticas de permissão. A política de [confiança](https://docs.aws.amazon.com/cognito/latest/developerguide/role-trust-and-permissions.html) da função especifica quem pode usar a função. As políticas de [permissão](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies) especificam as ações e os recursos que os membros do grupo podem acessar. Ao criar uma função do IAM, configure a política de confiança da função a fim de permitir que os usuários do grupo assumam a função. Nas políticas de permissão da função, especifique as permissões que você deseja que o grupo tenha.

Ao criar um grupo no Amazon Cognito, especifique uma função do IAM fornecendo o [ARN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns)da função. Quando membros do grupo fazem login usando o Amazon Cognito, eles podem receber credenciais temporárias dos grupos de identidades. Suas permissões são determinadas pela função do IAM associada.

Usuários individuais podem estar em vários grupos. Como desenvolvedor, você tem as seguintes opções para escolher automaticamente a função do IAM quando um usuário estiver em vários grupos:
+ Você pode atribuir valores de precedência para cada grupo. O grupo com a melhor (mais baixa) precedência será escolhido e sua função do IAM associada será aplicada. 
+ Seu aplicativo também pode escolher entre as funções disponíveis ao solicitar AWS credenciais para um usuário por meio de um grupo de identidades, especificando um ARN de função no parâmetro. [GetCredentialsForIdentity](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetCredentialsForIdentity.html)`CustomRoleARN` A função do IAM especificada deve corresponder a uma função que esteja disponível para o usuário.

## Como atribuir valores de precedência a grupos
<a name="assigning-precedence-values-to-groups"></a>

Um usuário pode pertencer a mais de um grupo. Nos tokens de ID e acesso do usuário, a afirmação `cognito:groups` contém a lista de todos os grupos aos quais um usuário pertence. A requisição `cognito:roles` contém a lista de funções correspondentes aos grupos.

Como um usuário pode pertencer a mais de um grupo, uma precedência pode ser atribuída a cada grupo. Esse é um valor inteiro não negativo que especifica a precedência desse grupo em relação aos outros grupos aos quais um usuário pertence no grupo de usuários. Zero é o principal valor de precedência. Os grupos com os menores valores precedência prevalecem sobre grupos com valores de precedência nulos ou superiores. Se um usuário pertencer a dois ou mais grupos, o grupo com o menor valor de precedência será o que terá a função do IAM aplicada à declaração `cognito:preferred_role` no token de ID do usuário.

Dois grupos podem ter o mesmo valor de precedência. Se isso acontecer, nenhum dos grupos terá precedência sobre o outro. Se dois grupos com o mesmo valor de precedência tiverem a mesma função ARN, essa função será usada na requisição `cognito:preferred_role` em tokens de ID para os usuários em cada grupo. Se os dois grupos tiverem funções diferentes ARNs, a `cognito:preferred_role` reivindicação não será definida nos tokens de ID dos usuários.

## Como usar grupos para controlar permissões com o Amazon API Gateway
<a name="using-groups-to-control-permission-with-amazon-api-gateway"></a>

Você pode usar grupos em um grupo de usuários para controlar permissões com o Amazon API Gateway. Os grupos dos quais um usuário é membro estão incluídos no token de ID e no token de acesso de um grupo de usuários na declaração `cognito:groups`. É possível enviar tokens de ID ou de acesso com solicitações para o Amazon API Gateway e usar um autorizador de grupo de usuários do Amazon Cognito para uma API REST. Para mais informações, consulte [Controlar o acesso a uma API REST usando um grupo de usuários do Amazon Cognito como autorizador](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-integrate-with-cognito.html) no [Guia do desenvolvedor do API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/).

Também é possível autorizar o acesso a uma API HTTP do Amazon API Gateway com um autorizador JWT personalizado. Para obter mais informações, consulte [Controle do acesso ao HTTP APIs com autorizadores JWT](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-jwt-authorizer.html) no Guia do [desenvolvedor do API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/).

## Limitações nos grupos
<a name="user-pool-user-groups-limitations"></a>

Grupos de usuários estão sujeitas às seguintes limitações:
+ O número de grupos que você pode criar é limitado pelas [cotas de serviço do Amazon Cognito](quotas.md).
+ Grupos não podem ser aninhados.
+ Você não pode pesquisar usuários em um grupo.
+ Você não pode pesquisar grupos por nome, mas pode listá-los.

## Criando um novo grupo no Console de gerenciamento da AWS
<a name="creating-a-new-group-using-the-console"></a>

Siga o procedimento abaixo para criar um novo grupo.

**Para criar um novo grupo**

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

1. Escolha **User Pools** (Grupos de usuários).

1. Escolha um grupo de usuários existente da lista.

1. Clique no menu **Grupos** e selecione **Criar um grupo**.

1. Na página **Create a group** (Criar um grupo), em **Group name** (Nome do grupo), insira um nome para o novo grupo.

1. Opcionalmente, é possível fornecer informações adicionais sobre esse grupo usando qualquer um dos seguintes campos:
   + **Description** (Descrição): insira detalhes sobre o uso planejado para esse novo grupo.
   + **Precedence** (Precedência): o Amazon Cognito avalia e aplica todas as permissões de grupo para um determinado usuário com base nos grupos aos quais eles pertencem que têm um valor de precedência menor. O grupo com a precedência mais baixa será escolhido e sua função do IAM associada será aplicada. Para obter mais informações, consulte [Como atribuir valores de precedência a grupos](#assigning-precedence-values-to-groups).
   + **IAM role** (Função do IAM): é possível atribuir uma função do IAM ao grupo quando precisar controlar permissões aos recursos. Se você estiver integrando um grupo de usuários a um grupo de identidades, a configuração de **IAM role (Função do IAM)** determinará qual função estará atribuída no token de ID do usuário se o grupo de identidades estiver configurado para selecionar a função a partir do token. Para obter mais informações, consulte [Como atribuir funções do IAM a grupos](#assigning-iam-roles-to-groups).
   + **Add users to this group** (Adicionar usuários a esse grupo): adicione usuários existentes como membros desse grupo após sua criação.

1. Selecione **Create** (Criar) para confirmar.

# Como gerenciar e pesquisar contas de usuários
<a name="how-to-manage-user-accounts"></a>

Os grupos de usuários podem conter milhões de usuários. Trabalhar com um conjunto de dados desse porte é um desafio para os administradores. O Amazon Cognito tem ferramentas para encontrar e modificar perfis de usuário. Os principais métodos para encontrar usuários são o menu **Usuários** do console do Amazon Cognito e com. [ListUsers](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUsers.html) Dos métodos que recuperam informações sobre usuários, essas são as opções que não têm um impacto nos custos, ao contrário de, por exemplo, [AdminGetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminGetUser.html).

Esta seção do guia contém informações sobre como encontrar e atualizar perfis de usuário em um grupo de usuários.

## Como visualizar atributos do usuário
<a name="manage-user-accounts-viewing-user-attributes"></a>

Siga o procedimento abaixo para visualizar atributos do usuário no console do Amazon Cognito.

**Para visualizar atributos do usuário**

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

1. Escolha **User Pools** (Grupos de usuários).

1. Escolha um grupo de usuários existente da lista.

1. Clique no menu **Usuários** e escolha um usuário na lista.

1. Na página de detalhes do usuário, em **User attributes** (Atributos do usuário), você pode ver quais atributos estão associados ao usuário.

## Como redefinir uma senha do usuário
<a name="manage-user-accounts-reset-user-password"></a>

Siga o procedimento abaixo para redefinir uma senha do usuário no console do Amazon Cognito.

**Para redefinir uma senha do usuário**

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

1. Escolha **User Pools** (Grupos de usuários).

1. Escolha um grupo de usuários existente da lista.

1. Clique no menu **Usuários** e escolha um usuário na lista.

1. Na página de detalhes do usuário, escolha **Actions** (Ações), **Reset password** (Redefinir senha).

1. Na caixa de diálogo **Reset password** (Redefinir senha), leia as informações e, quando estiver pronto, escolha **Reset** (Redefinir).

   Essa ação resulta imediatamente no envio de um código de confirmação para o usuário e desabilita a senha atual do usuário, ao alterar o estado do usuário para `RESET_REQUIRED`. O código **Reset password** (Redefinir senha) é válido por 1 hora.

## Habilitar, desabilitar e excluir contas de usuário
<a name="manage-user-accounts-enable-disable"></a>

Você pode excluir perfis de usuário não utilizados ou, se quiser impedir temporariamente o acesso, desabilitá-los. Os usuários podem excluir as próprias contas, mas somente os administradores do grupo de usuários podem habilitar e desabilitar contas de usuário.

**Efeito da exclusão**  
Os usuários não podem fazer login com contas de usuário excluídas e, para recuperar o acesso, devem se cadastrar ou criar uma nova conta.

**Efeito da desabilitação de contas**  
Quando você desabilita uma conta de usuário, o Amazon Cognito invalida automaticamente todas as sessões autenticadas, desativa a conta do usuário para login e [revoga os tokens de acesso e atualização](token-revocation.md). O Amazon Cognito retorna um erro `invalid_request` com a mensagem `User is not enabled` quando um usuário tenta fazer login em uma conta que você desabilitou. Esse comportamento não muda com as [configurações de divulgação de existência do usuário](cognito-user-pool-managing-errors.md) para o cliente de aplicação. É possível desabilitar as contas de usuário locais e os perfis locais das contas de usuário federado. Quando os usuários fazem login com o login gerenciado ou com a IU hospedada clássica, você desabilita a conta deles e eles tentam fazer login novamente com o cookie do navegador que mantém a sessão autenticada, o Amazon Cognito os redireciona para a página de login.

**Efeito da habilitação de contas**  
Os usuários podem fazer login imediatamente nas contas após você habilitá-las. As contas de usuário são habilitadas por padrão. Os atributos e senhas dos usuários permanecem os mesmos de antes da desabilitação da conta. Os tokens que sua aplicação revogou, independentemente de você ter desabilitado a conta do usuário ou revogado separadamente o token de atualização, permanecem inválidos depois que você habilita a conta de usuário que tinha o token.

------
#### [ Delete a user account (console) ]

**Como excluir uma conta de usuário**

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

1. Escolha **User Pools** (Grupos de usuários).

1. Escolha um grupo de usuários existente da lista.

1. Clique no menu **Usuários** e marque o botão de seleção ao lado do nome de usuário de um usuário na lista.

1. Escolha **Excluir**.

1. Selecione **Desabilitar acesso do usuário**.

1. Escolha **Excluir**.

------
#### [ Delete a user account (API) ]

Os usuários podem excluir suas contas com a operação da access-token-authorized [DeleteUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUser.html)API de autoatendimento. Veja a seguir um exemplo de corpo da solicitação `DeleteUser`.

```
{
   "AccessToken": "eyJra456defEXAMPLE"
}
```

Os administradores podem excluir contas de usuário com a operação de API autorizada pelo IAM [AdminDeleteUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminDeleteUser.html). Veja a seguir um exemplo de corpo da solicitação `AdminDeleteUser`.

```
{
   "Username": "testuser",
   "UserPoolId": "us-west-2_EXAMPLE"
}
```

------
#### [ Disable a user account (console) ]

**Como desabilitar uma conta de usuário**

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

1. Escolha **User Pools** (Grupos de usuários).

1. Escolha um grupo de usuários existente da lista.

1. Clique no menu **Usuários** e escolha o nome de usuário de um usuário na lista.

1. Na página de detalhes do usuário, selecione **Ações** e **Desabilitar acesso do usuário**.

1. Na caixa de diálogo criada, clique em **Desabilitar**.

------
#### [ Disable a user account (API) ]

Os administradores podem desativar contas de usuário com a operação de API autorizada pelo IAM [AdminDisableUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminDisableUser.html). Veja a seguir um exemplo de corpo da solicitação `AdminDisableUser`.

```
{
   "Username": "testuser",
   "UserPoolId": "us-west-2_EXAMPLE"
}
```

------
#### [ Enable a user account (console) ]

**Como habilitar uma conta de usuário**

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

1. Escolha **User Pools** (Grupos de usuários).

1. Escolha um grupo de usuários existente da lista.

1. Clique no menu **Usuários** e escolha o nome de usuário de um usuário na lista.

1. Na página de detalhes do usuário, selecione **Ações** e **Habilitar acesso do usuário**.

1. Na caixa de diálogo criada, clique em **Habilitar**.

------
#### [ Enable a user account (API) ]

Os administradores podem habilitar contas de usuário com a operação de API autorizada pelo IAM [AdminEnableUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminEnableUser.html). Veja a seguir um exemplo de corpo da solicitação `AdminEnableUser`.

```
{
   "Username": "testuser",
   "UserPoolId": "us-west-2_EXAMPLE"
}
```

------

## Como pesquisar atributos de usuários
<a name="manage-user-accounts-searching-user-attributes"></a>

Se você já tiver criado um grupo de usuários, poderá pesquisar no painel **Users (Usuários)** no Console de gerenciamento da AWS. Você também pode usar a [ListUsers API](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUsers.html) do Amazon Cognito, que aceita um parâmetro **Filter**.

Você pode pesquisar qualquer um dos seguintes atributos padrão: Atributos personalizados não podem ser pesquisados.
+ username (diferencia maiúsculas de minúsculas)
+ e-mail
+ phone\$1number
+ name
+ given\$1name
+ family\$1name
+ preferred\$1username
+ cognito: user\$1status (chamado **Status** no console) (diferencia maiúsculas de minúsculas)
+ status (chamado **Enabled (Habilitado)** no console) (diferencia maiúsculas de minúsculas)
+ sub

**nota**  
Você também pode listar usuários usando um filtro no lado do cliente. O filtro no lado do servidor não encontra correspondência com mais de um atributo. Para pesquisa avançada, use um filtro no lado do cliente com o parâmetro `--query` da ação `list-users` na AWS Command Line Interface. Quando você usa um filtro do lado do cliente, ListUsers retorna uma lista paginada de zero ou mais usuários. Você pode receber várias páginas consecutivas com zero resultados. Repita a consulta com cada token de paginação retornado até que você receba um valor de token de paginação nulo, em seguida, revise o resultado combinado.  
Para obter mais informações sobre filtragem do lado do servidor e do lado do cliente, consulte [AWS CLI Filtragem](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-filter.html) de saída no Guia do usuário. AWS Command Line Interface 

## Pesquisando usuários com o Console de gerenciamento da AWS
<a name="cognito-user-pools-manage-user-accounts-searching-for-users-using-console"></a>

Se você já tiver criado um grupo de usuários, poderá pesquisar no painel **Users (Usuários)** no Console de gerenciamento da AWS.

Console de gerenciamento da AWS as pesquisas são sempre pesquisas com prefixo (“começa com”).

**Para pesquisar um usuário no console do Amazon Cognito**

1. Acesse o [console do Amazon Cognito](https://console.aws.amazon.com/cognito/home). Você pode ser solicitado a fornecer suas AWS credenciais.

1. Escolha **User Pools** (Grupos de usuários).

1. Escolha um grupo de usuários existente da lista.

1. Clique no menu **Usuários** e digite o nome de usuário no campo de pesquisa. Observe que alguns valores de atributo diferenciam maiúsculas de minúsculas (por exemplo, **Username**).

   Você também pode encontrar usuários ajustando o filtro de pesquisa para restringir o escopo para outras propriedades do usuário, como **Email** (E-mail), **Phone number** (Número de telefone) ou **Last name** (Sobrenome).

## Pesquisar usuários usando o API `ListUsers`
<a name="cognito-user-pools-searching-for-users-using-listusers-api"></a>

 [Para pesquisar usuários do seu aplicativo, use a API do Amazon CognitoListUsers .](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUsers.html) Esta API usa os seguintes parâmetros: 
+  `AttributesToGet`: uma matriz de strings, onde cada string é o nome de um atributo de usuário a ser retornados para cada usuário nos resultados da pesquisa. Para recuperar todos os atributos, não inclua o parâmetro `AttributesToGet` nem a solicitação `AttributesToGet` com um valor da string literal `null`.
+  `Filter`: uma string de filtro do formulário "`AttributeName` `Filter-Type` "`AttributeValue`"". Aspas dentro da string de filtro devem ser evitadas usando o caractere de barra invertida (`\`). Por exemplo, .`"family_name = \"Reddy\""` Se a string de filtro estiver vazia, `ListUsers` retorna todos os usuários no grupo de usuários. 
  +  `AttributeName`: o nome do atributo a ser pesquisado. Você só pode pesquisar um atributo por vez. 
**nota**  
Você só pode pesquisar atributos padrão. Atributos personalizados não podem ser pesquisados. Isso é porque somente atributos indexados são pesquisáveis, e atributos personalizados não podem ser indexados.
  +  `Filter-Type`: para obter uma correspondência exata, use `=`, por exemplo, `given_name = "Jon"`. Para uma correspondência de prefixo ("começa com"), use `^=`, por exemplo, `given_name ^= "Jon"`. 
  +  `AttributeValue`: o valor de atributo que deve ser correspondido por cada usuário.
+  `Limit`: o número máximo de usuários a serem retornados.
+  `PaginationToken`: um token para obter mais resultados de uma pesquisa anterior. O Amazon Cognito encerra a validade do token de paginação após uma hora.
+  `UserPoolId`: a ID de grupo de usuários para o grupo de usuários na qual a pesquisa deve ser realizada.

Todas as pesquisas diferenciam maiúsculas de minúsculas. Os resultados da pesquisa são classificados pelo atributo nomeado pela string `AttributeName`, em ordem ascendente.

## Exemplos de uso da API `ListUsers`
<a name="cognito-user-pools-searching-for-users-listusers-api-examples"></a>

O exemplo a seguir retorna todos os usuários e inclui todos os atributos.

```
{
    "AttributesToGet": null,
    "Filter": "",
    "Limit": 10,
    "UserPoolId": "us-east-1_samplepool"
}
```

O exemplo a seguir retorna todos os usuários cujos números de telefone começam com "\$11312" e inclui todos os atributos.

```
{
    "AttributesToGet": null,
    "Filter": "phone_number ^= \"+1312\"",
    "Limit": 10,
    "UserPoolId": "us-east-1_samplepool"
}
```

O exemplo a seguir retorna os primeiros 10 usuários que têm "Reddy" como sobrenome. Para cada usuário, os resultados da pesquisa incluem nome do usuário, número de telefone e endereço de e-mail. Se houver mais de 10 usuários correspondentes no grupo de usuários, a resposta incluirá um token de paginação.

```
{
    "AttributesToGet": [
        "given_name", 
        "phone_number", 
        "email"
    ],
    "Filter": "family_name = \"Reddy\"",
    "Limit": 10,
    "UserPoolId": "us-east-1_samplepool"
}
```

Se o exemplo anterior retornar um token de paginação, o exemplo a seguir retornará os próximos 10 usuários que correspondam à mesma string de filtro.

```
{
    "AttributesToGet": [
        "given_name", 
        "phone_number", 
        "email"
    ],
    "Filter": "family_name = \"Reddy\"",
    "Limit": 10,
    "PaginationToken": "pagination_token_from_previous_search",
    "UserPoolId": "us-east-1_samplepool"
}
```

# Senhas, recuperação de contas e políticas de senha
<a name="managing-users-passwords"></a>

Todos os usuários que fazem login em um grupo de usuários, até mesmo [usuários federados](cognito-terms.md#terms-federateduser), têm senhas atribuídas aos seus perfis de usuário. [Usuários locais](cognito-terms.md#terms-localuser) e [usuários vinculados](cognito-terms.md#terms-linkeduser) devem inserir uma senha ao fazerem login. Os usuários federados não usam senhas de grupos de usuários, mas fazem login usando o provedor de identidades (IdP). Você pode permitir que os usuários redefinam suas próprias senhas, redefinam ou alterem senhas como administrador e [definam políticas](#user-pool-settings-policies) para complexidade e histórico de senhas.

O Amazon Cognito não armazena senhas de usuários em texto simples. Em vez disso, ele armazena um hash da senha de cada usuário com um salt específico do usuário. Por esse motivo, você não pode recuperar senhas existentes dos perfis de usuário em seus grupos de usuários. Como prática recomendada, não armazene senhas de usuário em texto simples em nenhum lugar. Redefina as senhas quando os usuários as esquecerem.

## Redefinição e recuperação de senha
<a name="user-pool-password-reset-and-recovery"></a>

Os usuários esquecem suas senhas. Você pode permitir que eles mesmos as redefinam, ou exigir que um administrador redefina a senha para eles. Os grupos de usuários do Amazon Cognito têm opções para os dois modelos. Esta parte do guia aborda as configurações do grupo de usuários e as operações de API para redefinição de senha.

A operação [ForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html)da API e a opção de login gerenciado **Esqueceu sua senha?** enviam aos usuários um código que, quando eles confirmam que têm o código correto, lhes dá a oportunidade de definir uma nova senha com [ConfirmForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmForgotPassword.html). Esse é o modelo de recuperação de senha por autoatendimento.

**Recuperação de usuários não verificados**  
É possível enviar mensagens de recuperação para usuários que verificaram seu endereço de e-mail ou número de telefone. Se eles não tiverem um e-mail ou telefone de recuperação confirmado, um administrador do grupo de usuários poderá marcar o endereço de e-mail ou número de telefone como verificado. Edite os **Atributos de usuário** do usuário no console do Amazon Cognito e marque a caixa de seleção ao lado de **Marcar número de telefone como verificado** ou **Marcar endereço de e-mail como verificado**. Você também pode `phone_number_verified` definir `email_verified` ou como verdadeiro em uma [AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html)solicitação. Para novos usuários, a operação da [ResendConfirmationCode](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ResendConfirmationCode.html)API envia um novo código para seu endereço de e-mail ou número de telefone e eles podem concluir a confirmação e a verificação por autoatendimento.

**Redefinir senhas como administrador**  
As operações [AdminSetUserPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserPassword.html)e a [AdminResetUserPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminResetUserPassword.html)API são os métodos de redefinição de senha iniciados pelo administrador. `AdminSetUserPassword`define uma senha temporária ou permanente e `AdminResetUserPassword` envia aos usuários um código de redefinição de senha da mesma forma que. `ForgotPassword`

### Configurar redefinição e recuperação de senha
<a name="user-pool-password-reset-and-recovery-configure"></a>

O Amazon Cognito seleciona automaticamente suas opções de recuperação de conta com base nos atributos e opções de login obrigatórios escolhidos ao criar um grupo de usuários no console. Você pode modificar essas configurações padrão.

O método de MFA preferido de um usuário influencia os métodos que ele pode usar para recuperar a senha. Os usuários cujo MFA preferencial é por mensagem de e-mail não podem receber um código de redefinição de senha por e-mail. Os usuários cujo MFA preferencial é por mensagem SMS não podem receber um código de redefinição de senha por SMS.

Suas configurações de [recuperação de senha](#user-pool-password-reset-and-recovery) devem fornecer uma opção alternativa quando os usuários não estão qualificados para usar o método de redefinição de senha de sua preferência. Por exemplo, seus mecanismos de recuperação podem ter o e-mail como prioridade e o MFA do e-mail pode ser opcional no seu grupo de usuários. Nesse caso, adicione a recuperação da conta de mensagens SMS como uma segunda opção ou use operações administrativas da API para redefinir as senhas desses usuários.

O Amazon Cognito responde às solicitações de redefinição de senha de usuários que não têm um método de recuperação válido com uma resposta de erro `InvalidParameterException`.

**nota**  
Os usuários não podem receber códigos de redefinição de senha e de MFA no mesmo endereço de e-mail ou número de telefone. Se eles usarem senhas de uso único (OTPs) de mensagens de e-mail para MFA, deverão usar mensagens SMS para recuperação da conta. Se OTPs usarem mensagens SMS para MFA, deverão usar mensagens de e-mail para recuperação da conta. Em grupos de usuários com MFA, talvez os usuários não consigam concluir a recuperação de senha por autoatendimento se tiverem o endereço de e-mail cadastrado, mas não tiverem o número de telefone, ou vice-versa.  
Para evitar que os usuários não consigam redefinir as senhas em grupos de usuários com essa configuração, defina os atributos `email` e `phone_number` [como obrigatórios](user-pool-settings-attributes.md). Como alternativa, é possível configurar processos que sempre coletam e definem esses atributos quando os usuários se cadastram ou quando seus administradores criam perfis de usuário. Quando os usuários têm ambos os atributos, o Amazon Cognito envia automaticamente códigos de redefinição de senha para o destino que *não* é o fator de MFA do usuário.

O procedimento a seguir configura a recuperação de contas de autoatendimento em um grupo de usuários.

------
#### [ Configure self-service password reset (API/SDK) ]

O `AccountRecoverySetting` parâmetro é o parâmetro do grupo de usuários que define os métodos que os usuários podem usar para recuperar sua senha em solicitações de [ForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html)API ou quando selecionam **Esqueceu a senha?** no login gerenciado. `ForgotPassword`envia um código de recuperação para um e-mail verificado ou um número de telefone verificado. O código de recuperação é válido por uma hora. Quando você especifica uma [AccountRecoverySetting](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AccountRecoverySettingType.html) para o grupo de usuários, o Amazon Cognito escolhe o destino de entrega de código com base na prioridade definida por você.

Quando você define `AccountRecoverySetting` e um usuário tem o MFA SMS configurado, o SMS não pode ser usado como um mecanismo de recuperação de conta. A prioridade dessa configuração é determinada com `1` sendo da prioridade mais alta. O Amazon Cognito envia uma verificação para apenas um dos métodos especificados. O exemplo de `AccountRecoverySetting` a seguir define endereços de e-mail como o destino principal dos códigos de recuperação de conta, recorrendo à mensagem SMS se o usuário não tiver um endereço de e-mail cadastrado.

```
"AccountRecoverySetting": { 
   "RecoveryMechanisms": [ 
      { 
         "Name": "verified_email",
         "Priority": 1
      },
      { 
         "Name": "verified_phone_number",
         "Priority": 2
      }
   ]
}
```

O valor `admin_only` desativa a recuperação de contas de autoatendimento, exigindo que os usuários entrem em contato com o administrador para redefinir a senha. Você não pode usar `admin_only` com nenhum outro mecanismo de recuperação de conta. O seguinte exemplo…

```
"AccountRecoverySetting": { 
   "RecoveryMechanisms": [ 
      { 
         "Name": "admin_only",
         "Priority": 1
      }
   ]
}
```

Se você não especificar `AccountRecoverySetting`, o Amazon Cognito enviará o código de recuperação primeiro para um número de telefone verificado e, se o usuário não tiver um número de telefone cadastrado, para um endereço de e-mail verificado.

Para obter mais informações sobre a `AccountRecoverySetting`, consulte [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html) e [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html).

------
#### [ Configure self-service password reset (console) ]

Configure as opções de recuperação de conta e redefinição de senha no menu **Fazer login** do seu grupo de usuários.

**Como configurar a recuperação da conta de usuário**

1. Faça login no [console do Amazon Cognito](https://console.aws.amazon.com/cognito/home).

1. 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 **Fazer login**. Localize **Recuperação de contas de usuários** e clique em **Editar**

1. Para permitir que os usuários redefinam suas próprias senhas, selecione **Habilitar recuperação de contas de autoatendimento**.

1. Configure o método de entrega dos códigos de recuperação de senha que seu grupo de usuários envia aos usuários. Em **Método de entrega para mensagens de recuperação de conta de usuário**, selecione uma opção disponível. Como prática recomendada, escolha uma opção que tenha um método secundário para enviar mensagens, por exemplo, **E-mail se disponível, ou SMS**. Com um método de entrega secundário, o Amazon Cognito pode enviar códigos aos usuários de forma que eles precisem usar um meio diferente para redefinição de senha e para MFA.

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

------

### Comportamento para esquecimento da senha
<a name="forgot-password"></a>

Em uma determinada hora, permitimos entre 5 e 20 tentativas para que um usuário solicite ou insira um código de redefinição de senha como parte das ações e ações de esquecimento da senha. confirm-forgot-password O valor exato depende dos parâmetros de risco associados às solicitações. Observe que esse comportamento está sujeito a alterações. 

## Como adicionar requisitos de senha do grupo de usuários
<a name="user-pool-settings-policies"></a>

Senhas fortes e complexas são a prática recomendada de segurança para seu grupo de usuários. Especialmente em aplicações abertas à Internet, senhas fracas podem expor as credenciais dos usuários a sistemas que adivinham senhas e tentam acessar seus dados. Quanto mais complexa for uma senha, mais difícil será adivinhá-la. O Amazon Cognito tem ferramentas adicionais para administradores preocupados com a segurança, como [proteção contra ameaças](cognito-user-pool-settings-threat-protection.md#cognito-user-pool-settings-threat-protection.title) e [AWS WAF web ACLs](user-pool-waf.md#user-pool-waf.title), mas sua política de senha é um elemento central da segurança do seu diretório de usuários.

As senhas para usuários locais nos grupos de usuários do Amazon Cognito não expiram automaticamente. Como prática recomendada, registre a hora, a data e os metadados das redefinições de senha do usuário em um sistema externo. Com um log externo de tempo da senha, sua aplicação ou um acionador do Lambda pode pesquisar o tempo da senha de um usuário e exigir uma redefinição após determinado período.

Você pode configurar o grupo de usuários para exigir uma complexidade mínima de senha que esteja de acordo com seus padrões de segurança. Senhas complexas têm no mínimo oito caracteres. Eles também incluem uma combinação de caracteres maiúsculos, numéricos e especiais.

Com os níveis de recursos Essentials ou Plus, é possível definir uma política de reutilização de senha. Você pode impedir que um usuário redefina sua senha para uma nova senha que corresponda à senha atual ou a qualquer uma das 23 senhas anteriores adicionais, totalizando no máximo 24.

**Como definir uma política do grupo de usuários**

1. Crie um grupo de usuários e navegue até a etapa **Configurar requisitos de segurança** ou acesse um grupo de usuários existente e navegue até o menu **Métodos de autenticação**.

1. Navegue até **Política de senha**.

1. Escolha um **Modo de política de senha**. Os **Padrões do Cognito** configuram o grupo de usuários com as configurações mínimas recomendadas. Também é possível escolher uma política de senha **Personalizada**.

1. Defina um **Tamanho mínimo de senha**. Todos os usuários devem se cadastrar ou serem criados com uma senha com tamanho maior ou igual a esse valor. É possível definir esse valor mínimo de até 99, mas os usuários podem definir senhas com até 256 caracteres.

1. Configure as regras de complexidade de senhas em **Requisitos de senha**. Escolha os tipos de caracteres: números, caracteres especiais, letras maiúsculas e minúsculas, dos quais você deseja exigir pelo menos um na senha de cada usuário.

   Você pode exigir que as senhas contenham pelo menos um dos seguintes caracteres: Depois que o Amazon Cognito verificar se as senhas contêm os caracteres mínimos necessários, as senhas de seus usuários podem conter caracteres adicionais de qualquer tipo até atingir o tamanho máximo.
   + Letras maiúsculas e minúsculas do [latim básico](https://en.wikipedia.org/wiki/ISO_basic_Latin_alphabet)
   + Números
   + Os caracteres especiais a seguir.

     ```
     ^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~ ` = + - 
     ```
   + Caracteres de espaço não iniciais e não finais.

1. Defina um valor para **Senhas temporárias definidas por administradores expiram em**. Após esse período, um novo usuário criado no console do Amazon Cognito com `AdminCreateUser` não poderá fazer login e definir uma nova senha. Depois de fazerem login com a senha temporária, as contas de usuário nunca expirarão. Para atualizar a duração da senha na API de grupos de usuários do Amazon Cognito, defina um valor para [TemporaryPasswordValidityDays ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_PasswordPolicyType.html#CognitoUserPools-Type-PasswordPolicyType-TemporaryPasswordValidityDays)a sua solicitação [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)ou para a [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)API.

1. Defina um valor para **Impedir o uso de senhas anteriores**, se disponível. Para usar esse recurso, selecione o [nível de recursos](cognito-sign-in-feature-plans.md) Essentials ou Plus em seu grupo de usuários. O valor desse parâmetro é o número de senhas anteriores que uma nova senha é impedida de corresponder quando o usuário redefine a senha.

Para redefinir o acesso de uma conta de usuário expirada, siga um destes procedimentos:
+ Envie uma nova senha temporária e redefina o período de expiração com uma solicitação de [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserPassword.html)API `MessageAction` definida como`RESEND`.
+ Exclua o perfil de usuário e crie outro.
+ Gere um novo código de confirmação em uma solicitação de [AdminResetUserPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminResetUserPassword.html)API.

# Como importar usuários para um grupo de usuários
<a name="cognito-user-pools-import-users"></a>

Existem duas maneiras de importar ou migrar usuários do seu diretório de usuários ou de um banco de dados de usuários existente para grupos de usuários do Amazon Cognito. Você pode migrar os usuários quando eles fizerem login usando o Amazon Cognito pela primeira vez com um acionador do Lambda de migração de usuários. Com essa abordagem, os usuários podem continuar usando suas senhas existentes e não terão que redefini-las após a migração para o grupo de usuários. Como alternativa, você pode migrar usuários em lote carregando um arquivo CSV que contenha os atributos de perfil do usuário para todos os usuários. As seções a seguir descrevem essas duas abordagens.

**Mais atributos**
+ [Abordagens para migrar usuários para grupos de usuários do Amazon Cognito](https://aws.amazon.com/blogs/security/approaches-for-migrating-users-to-amazon-cognito-user-pools/)
+ [AWS re:inforce 2023 — Migração para o Amazon Cognito](https://www.youtube.com/watch?v=OkDj9uXWwCc)

**Topics**
+ [Como importar usuários com um acionador do Lambda de migração de usuários](cognito-user-pools-import-using-lambda.md)
+ [Como importar usuários para grupos de usuários com base em um arquivo CSV](cognito-user-pools-using-import-tool.md)

# Como importar usuários com um acionador do Lambda de migração de usuários
<a name="cognito-user-pools-import-using-lambda"></a>

Com essa abordagem, você pode migrar perfeitamente os usuários do diretório existente para grupos de usuários quando um usuário fizer login pela primeira vez com sua aplicação ou solicitar uma redefinição de senha. Adicione uma função [Migrar o acionador do Lambda do usuário](user-pool-lambda-migrate-user.md) ao grupo de usuários para que ele receba metadados sobre os usuários que tentam fazer login e retorne informações de perfil de usuário de uma fonte de identidade externa. Para obter detalhes e um código de exemplo para esse acionador do Lambda, bem como parâmetros de solicitação e resposta, consulte [Parâmetros do acionador do Lambda de migrar usuário](user-pool-lambda-migrate-user.md#cognito-user-pools-lambda-trigger-syntax-user-migration).

Antes de iniciar a migração de usuários, crie uma função Lambda de migração de usuários em sua Conta da AWS e, em seu grupo de usuários, configure a função do Lambda como acionador de migração de usuários. Adicione uma política de autorização à sua função do Lambda que permita que somente a entidade principal da conta de serviço do Amazon Cognito, `cognito-idp.amazonaws.com`, invoque a função do Lambda, e apenas no contexto de seu próprio grupo de usuários. Para obter mais informações, consulte [Uso de políticas baseadas em recursos para o AWS Lambda (políticas de função do Lambda)](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html). 

**Processo de login**

1. O usuário abre sua aplicação e faz login com a API de grupos de usuários do Amazon Cognito ou por meio do login gerenciado. Para obter mais informações sobre como facilitar o login com o Amazon APIs Cognito, consulte. [Integração da autenticação e autorização do Amazon Cognito com aplicações móveis e da web](cognito-integrate-apps.md)

1. Sua aplicação envia o nome de usuário e a senha ao Amazon Cognito. Se seu aplicativo tiver uma interface de usuário de login personalizada que você criou com um AWS SDK, seu aplicativo deverá usar [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)ou [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)com o `USER_PASSWORD_AUTH` fluxo ou. `ADMIN_USER_PASSWORD_AUTH` Quando a aplicação usa um desses fluxos, o SDK envia a senha ao servidor.
**nota**  
Antes de adicionar um acionador de migração de usuários, ative o fluxo `USER_PASSWORD_AUTH` ou `ADMIN_USER_PASSWORD_AUTH` nas configurações do cliente de aplicação. Você deve usar esses fluxos em vez do fluxo `USER_SRP_AUTH` padrão. O Amazon Cognito deve enviar uma senha à sua função do Lambda para que ele possa verificar a autenticação do usuário no outro diretório. Uma SRP obscurece a senha do usuário de sua função do Lambda.

1. O Amazon Cognito verifica se o nome de usuário enviado corresponde a um nome de usuário ou alias no grupo de usuários. Você pode definir o nome de usuário preferido, o endereço de e-mail ou o número de telefone do usuário como um alias no grupo de usuários. Se o usuário não existir, o Amazon Cognito enviará parâmetros, incluindo o nome de usuário e a senha, à função [Migrar o acionador do Lambda do usuário](user-pool-lambda-migrate-user.md).

1. Sua função [Migrar o acionador do Lambda do usuário](user-pool-lambda-migrate-user.md) verifica ou autentica o usuário com seu diretório de usuários existente ou com o banco de dados de usuários. A função retorna atributos do usuário que o Amazon Cognito armazena no perfil do usuário no grupo de usuários. Você pode retornar um parâmetro `username` somente se o nome de usuário enviado corresponder a um atributo de alias. Se você quiser que os usuários continuem usando a senha que eles já têm, sua função definirá o atributo `finalUserStatus` como `CONFIRMED` na resposta do Lambda. Sua aplicação deve retornar todos os parâmetros `"response"` mostrados em [Parâmetros do acionador do Lambda de migrar usuário](user-pool-lambda-migrate-user.md#cognito-user-pools-lambda-trigger-syntax-user-migration).
**Importante**  
Não registre todo o objeto de evento de solicitação em seu código Lambda de migração de usuários. Esse objeto de evento de solicitação inclui a senha do usuário. Se você não limpar os registros, as senhas aparecerão nos Registros. CloudWatch 

1. O Amazon Cognito cria o perfil de usuário no grupo de usuários e retorna tokens para o aplicativo cliente.

1. Sua aplicação executa a entrada de token, aceita a autenticação do usuário e prossegue para o conteúdo solicitado.

Depois de migrar seus usuários, use `USER_SRP_AUTH` para fazer login. O protocolo Secure Remote Password (SRP) não envia a senha pela rede e oferece benefícios de segurança em relação ao fluxo `USER_PASSWORD_AUTH` usado durante a migração.

Em caso de erros durante a migração, incluindo problemas com o dispositivo cliente ou a rede, a aplicação receberá respostas de erro da API de grupos de usuários do Amazon Cognito. Quando isso acontecer, o Amazon Cognito poderá ou não criar a conta de usuário em seu grupo de usuários. Em seguida, o usuário deverá tentar entrar novamente. Se o login falhar repetidamente, tente redefinir a senha do usuário com o fluxo de esquecimento de senha em sua aplicação. 

O fluxo de esquecimento de senha também chama sua função [Migrar o acionador do Lambda do usuário](user-pool-lambda-migrate-user.md) com uma fonte de eventos `UserMigration_ForgotPassword`. Como o usuário não envia uma senha quando solicita uma redefinição de senha, o Amazon Cognito não inclui uma senha no evento que ele envia à sua função do Lambda. Sua função só pode pesquisar o usuário em seu diretório de usuários existente e retornar atributos para adicionar ao perfil do usuário em seu grupo de usuários. Depois que a função conclui a invocação e retorna a resposta ao Amazon Cognito, o grupo de usuários envia um código de redefinição de senha por e-mail ou SMS. Em seu aplicativo, solicite ao usuário o código de confirmação e uma nova senha e, em seguida, envie essas informações para o Amazon Cognito em uma solicitação de [ConfirmForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmForgotPassword.html)API. Também é possível usar as páginas integradas para o fluxo de esquecimento da senha no login gerenciado.

**Recursos adicionais do**
+ [Abordagens para migrar usuários para grupos de usuários do Amazon Cognito](https://aws.amazon.com/blogs/security/approaches-for-migrating-users-to-amazon-cognito-user-pools/)

# Como importar usuários para grupos de usuários com base em um arquivo CSV
<a name="cognito-user-pools-using-import-tool"></a>

Quando você tem um repositório de identidade externo e tem tempo para preparar seu grupo de usuários para novos usuários locais, a importação em massa de usuários de um arquivo de valores separados por vírgula (CSV) pode ser uma opção simplificada e econômica para a migração para um grupo de usuários do Amazon Cognito. A importação de um arquivo CSV é um processo de baixar e preencher um arquivo de modelo e, em seguida, entregar o arquivo ao seu grupo de usuários em um trabalho de importação. Você pode usar uma importação de CSV para criar rapidamente usuários de teste. Você também pode preencher programaticamente o arquivo com solicitações da API de leitura para seu repositório de identidade externo e, em seguida, analisar seus detalhes e atributos em operações de gravação no arquivo.

O processo de importação define valores para todos os atributos de usuário, exceto **password**. Não há suporte para a importação de senha, pois as melhores práticas de segurança exigem que as senhas não estejam disponíveis como texto sem formatação, e não oferecemos suporte à importação de hashes. Isso significa que os usuários devem alterar suas senhas na primeira vez em que fizerem login. Seus usuários estão em estado `RESET_REQUIRED` quando são importados por esse método.

A maneira mais simples de importar usuários de um CSV é ativar o [login sem senha](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless) no grupo de usuários. Com os atributos de endereço de e-mail e número de telefone e a configuração correta do grupo de usuários, os usuários podem entrar com senhas de uso único por e-mail ou SMS (OTPs) imediatamente após a conclusão do trabalho de importação. Para obter mais informações, consulte [Solicitação de redefinição de senha aos usuários importados](#cognito-user-pools-using-import-tool-password-reset).

Também é possível definir as senhas dos usuários com uma solicitação de API [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserPassword.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserPassword.html) que define o parâmetro `Permanent` como `true`. A importação de CSV não contribui para a cobrança mensal de usuários ativos (MAUs) em seu grupo de usuários. No entanto, as operações de redefinição de senha são geradas. MAUs Para gerenciar os custos ao importar um grande número de usuários com senhas que podem não estar imediatamente ativos, configure a aplicação para solicitar aos usuários uma nova senha quando eles fizerem login e receberem o desafio `RESET_REQUIRED`.

**nota**  
A data de criação de cada usuário é a hora em que o usuário foi importado para o grupo de usuários. A data de criação não é um dos atributos importados.

**Etapas para criar um trabalho de importação de usuário**

1. Crie uma função do Amazon CloudWatch Logs no console AWS Identity and Access Management (IAM).

1. Crie o arquivo .csv de importação do usuário.

1. Crie e execute o trabalho de importação do usuário.

1. Carregue o arquivo.csv de importação do usuário.

1. Inicie e execute o trabalho de importação do usuário.

1. Use CloudWatch para verificar o registro de eventos.

1. Solicite que os usuários importados redefinam suas senhas.

**Mais atributos**
+ [Arquitetura de referência de exportação de perfis de usuário do Cognito](https://aws.amazon.com/solutions/implementations/cognito-user-profiles-export-reference-architecture/) para exportar contas de usuário entre grupos de usuários

**Topics**
+ [Criação da função do CloudWatch Logs IAM](#cognito-user-pools-using-import-tool-cli-cloudwatch-iam-role)
+ [Criar o arquivo CSV de importação do usuário](#cognito-user-pools-using-import-tool-csv-header)
+ [Como criar e executar o trabalho de importação do grupo de usuários do Amazon Cognito](#cognito-user-pools-creating-import-job)
+ [Visualizando os resultados da importação do grupo de usuários no CloudWatch console](#cognito-user-pools-using-import-tool-cloudwatch)
+ [Solicitação de redefinição de senha aos usuários importados](#cognito-user-pools-using-import-tool-password-reset)

## Criação da função do CloudWatch Logs IAM
<a name="cognito-user-pools-using-import-tool-cli-cloudwatch-iam-role"></a>

Se você estiver usando a CLI ou a API do Amazon Cognito, precisará criar uma função do IAM. CloudWatch O procedimento a seguir descreve como criar uma função do IAM que o Amazon Cognito pode usar para gravar os resultados do seu trabalho de importação no Logs. CloudWatch 

**nota**  
Ao criar um trabalho de importação no console do Amazon Cognito, você pode criar o perfil do IAM ao mesmo tempo. Quando você seleciona **Create a new IAM role** (Criar um perfil do IAM), o Amazon Cognito aplica automaticamente a política de confiança e a política do IAM apropriadas ao perfil.

**Para criar a função do CloudWatch Logs IAM para importação de grupos de usuários (AWS CLI, API)**

1. Faça login no Console de gerenciamento da AWS e abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Crie uma nova função do IAM para um AWS service (Serviço da AWS). Para obter instruções detalhadas, consulte [Criar um perfil para um AWS service (Serviço da AWS)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html#roles-creatingrole-service-console) no *Guia do usuário do AWS Identity and Access Management *.

   1. Ao selecionar um **Use case** (Caso de uso) para o **Trusted entity type** (Tipo de entidade confiável), escolha qualquer serviço. Atualmente, o Amazon Cognito não está listado nos casos de uso de serviço.

   1. Na tela **Add permissions** (Adicionar permissões), escolha **Create policy** (Criar política) e insira a instrução de política a seguir. *REGION*Substitua pelo Região da AWS do seu grupo de usuários, por exemplo`us-east-1`. *ACCOUNT*Substitua pelo seu Conta da AWS ID, por exemplo`111122223333`.

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "logs:CreateLogGroup",
                      "logs:CreateLogStream",
                      "logs:DescribeLogStreams",
                      "logs:PutLogEvents"
                  ],
                  "Resource": [
                      "arn:aws:logs:us-east-1:111122223333:log-group:/aws/cognito/*"
                  ]
              }
          ]
      }
      ```

------

1. Como você não escolheu o Amazon Cognito como entidade confiável ao criar o perfil, agora é necessário editar manualmente a relação de confiança do perfil. No painel de navegação do console do IAM, selecione **Roles** (Perfis) e escolha o perfil criado.

1. Selecione a guia **Trust relationships (Relações de confiança)**.

1. Selecione **Edit trust policy** (Editar política de confiança).

1. Cole a seguinte instrução de política em **Edit trust policy** (Editar política de confiança), substituindo qualquer texto existente: 

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

****  

   ```
   {
           "Version":"2012-10-17",		 	 	 
           "Statement": [
               {
                   "Effect": "Allow",
                   "Principal": {
                       "Service": "cognito-idp.amazonaws.com"
                   },
                   "Action": "sts:AssumeRole"
               }
           ]
       }
   ```

------

1. Escolha **Atualizar política**. 

1. Anote o ARN do perfil do . Forneça o ARN ao criar o trabalho de importação.

## Criar o arquivo CSV de importação do usuário
<a name="cognito-user-pools-using-import-tool-csv-header"></a>

Antes de poder importar os usuários existentes para o grupo de usuários, é necessário criar um arquivo de valores separados por vírgula (CSV) que contenha os usuários que você deseja importar e os atributos deles. No grupo de usuários, é possível recuperar um arquivo de importação de usuários com cabeçalhos que refletem o esquema de atributos do grupo de usuários. Depois, você pode inserir informações do usuário que correspondam aos requisitos de formatação em [Formatar o arquivo CSV](#cognito-user-pools-using-import-tool-formatting-csv-file). 

### Baixar o cabeçalho do arquivo CSV (console)
<a name="cognito-user-pools-using-import-tool-downloading-csv-header-console"></a>

Use o procedimento a seguir para baixar o arquivo de cabeçalho CSV.

**Como baixar o cabeçalho do arquivo CSV**

1. Acesse o [console do Amazon Cognito](https://console.aws.amazon.com/cognito/home). Você pode ser solicitado a fornecer suas AWS credenciais.

1. Escolha **User Pools** (Grupos de usuários).

1. Escolha um grupo de usuários existente da lista.

1. Clique no menu **Usuários**.

1. Na seção **Import users** (Importar usuários), selecione **Create an import job** (Criar um trabalho de importação).

1. Em **Upload CSV** (Fazer upload do CSV, selecione o link *template.csv* e baixe o arquivo CSV.

### Baixar o cabeçalho do arquivo CSV (AWS CLI)
<a name="cognito-user-pools-using-import-tool-downloading-csv-header-using-cli"></a>

Para obter uma lista dos cabeçalhos corretos, no menu **Usuários**, em **Importar usuários**, selecione **Criar trabalho de importação**. Na caixa de diálogo a seguir, selecione o link `template.csv` para baixar um arquivo de modelo com os atributos do grupo de usuários.

Você também pode executar o seguinte comando da CLI, onde *USER\$1POOL\$1ID* está o identificador do grupo de usuários para o qual você importará usuários:

```
aws cognito-idp get-csv-header --user-pool-id "USER_POOL_ID"
```

Resposta de exemplo:

```
{
    "CSVHeader": [
        "name",
        "given_name",
        "family_name",
        "middle_name",
        "nickname",
        "preferred_username",
        "profile",
        "picture",
        "website",
        "email",
        "email_verified",
        "gender",
        "birthdate",
        "zoneinfo",
        "locale",
        "phone_number",
        "phone_number_verified",
        "address",
        "updated_at",
        "cognito:mfa_enabled",
        "cognito:username"
    ],
    "UserPoolId": "USER_POOL_ID"
}
```

### Formatar o arquivo CSV
<a name="cognito-user-pools-using-import-tool-formatting-csv-file"></a>

 O arquivo de cabeçalho CSV de importação de usuários baixado se parece com a string a seguir. Ele também inclui os atributos personalizados que você adicionou ao grupo de usuários.

```
cognito:username,name,given_name,family_name,middle_name,nickname,preferred_username,profile,picture,website,email,email_verified,gender,birthdate,zoneinfo,locale,phone_number,phone_number_verified,address,updated_at,cognito:mfa_enabled
```

Edite o arquivo CSV para que ele inclua esse cabeçalho e os valores de atributo dos usuários e seja formatado de acordo com as seguintes regras:

**nota**  
Para obter mais informações sobre valores de atributo, como o formato apropriado de números de telefone, consulte [Trabalhar com atributos do usuário](user-pool-settings-attributes.md).
+ A primeira linha no arquivo é a linha de cabeçalho baixada que contém os nomes de atributo de usuário.
+ A ordem das colunas no arquivo CSV não importa.
+ Cada linha após a primeira linha contém os valores de atributo para um usuário.
+ Todas as colunas do cabeçalho devem estar presente, mas você não precisa fornecer valores em cada coluna.
+ Os seguintes atributos são necessários:
  + **cognito:username**
  + **email\$1verified** ou **phone\$1number\$1verified**
    + Pelo menos um dos atributos verificados automaticamente devem ser `true` para todos os usuários. Um atributo verificado automaticamente é um endereço de e-mail ou número de telefone para o qual o Amazon Cognito envia automaticamente um código quando um novo usuário se junta ao grupo de usuários.
    + O grupo de usuários deve ter, pelo menos, um atributo verificado automaticamente, **email\$1verified** ou **phone\$1number\$1verified**. Se o grupo de usuários não tiver atributos verificados automaticamente, o trabalho de importação não será iniciado.
    + Se o grupo de usuários tiver apenas um atributo verificado automaticamente, esse atributo deverá ser verificado para todos os usuários. Por exemplo, se o grupo de usuários tiver apenas **phone\$1number** como atributo verificado automaticamente, o valor de **phone\$1number\$1verified** deverá ser `true` para todos os usuários.
**nota**  
Para que os usuários redefinam suas senhas, eles deverão ter um e-mail ou número de telefone verificado. O Amazon Cognito envia uma mensagem contendo um código de redefinição de senha para o e-mail ou ao número de telefone especificado no arquivo CSV. Se a mensagem for enviada ao número de telefone, ela será enviada por mensagem de SMS. Para obter mais informações, consulte [Como verificar informações de contato no cadastro](signing-up-users-in-your-app.md#allowing-users-to-sign-up-and-confirm-themselves).
  + **email** (se **email\$1verified** for `true`)
  + **phone\$1number** (se **phone\$1number\$1verified** for `true`)
  + Todos os atributos marcados como necessários quando você criou o grupo de usuários
+ Os valores de atributo que são strings *não* devem ser aspas.
+ Se um valor de atributo contiver uma vírgula, você deverá colocar uma barra invertida (\$1) antes da vírgula. Isso acontece porque os campos em um arquivo CSV são separados por vírgulas.
+ O conteúdo do arquivo CSV deve estar no formato UTF-8 sem a marca de ordem de byte.
+ O campo **cognito:username** é obrigatório e deve ser exclusivo no grupo de usuários. Ele pode ser qualquer string Unicode. No entanto, ele não pode conter espaços ou guias.
+ Os valores da **data de nascimento**, se presentes, devem estar no formato **mm/dd/yyyy**. Isso significa, por exemplo, que a data de nascimento 1°. de fevereiro de 1985 deve ser codificada como **02/01/1985**.
+ O campo **cognito:mfa\$1enabled** deve corresponder aos requisitos de MFA do seu grupo de usuários. Se você tiver definido a autenticação multifator (MFA) para ser obrigatória no grupo de usuários, esse campo deverá ser `true` ou estar em branco para todos os usuários. Se você tiver definido a MFA para ser desativada, esse campo deverá ser `false` ou ficar em branco para todos os usuários. Um valor em branco define o status habilitado para MFA dos usuários importados para o estado exigido pelo grupo de usuários. Você pode importar usuários em um grupo de usuários exigido pela MFA sem um fator de MFA válido, independentemente de ter definido um valor `cognito:mfa_enabled`. Os usuários nesse estado têm a MFA ativa, mas não podem fazer login até configurarem um atributo de e-mail, um atributo de número de telefone ou uma TOTP, e essa configuração é um fator de MFA válido em seu grupo de usuários.
+ O comprimento máximo da linha é de 16.000 caracteres.
+ O tamanho máximo do arquivo CSV é 100 MB.
+ O número máximo de linhas (usuários) no arquivo é de 500.000. Esse máximo não inclui a linha de cabeçalho.
+ Espera-se que o valor do campo **updated\$1at** esteja no formato de época em segundos, por exemplo: **1471453471**.
+ Qualquer espaço em branco à esquerda ou à direita em um valor de atributo será aparado.

A lista a seguir é um exemplo de arquivo de importação CSV para um grupo de usuários sem atributos personalizados. Seu esquema do grupo de usuários pode ser diferente deste exemplo. Nesse caso, você deve fornecer valores de teste no modelo CSV baixado do seu grupo de usuários.

```
cognito:username,name,given_name,family_name,middle_name,nickname,preferred_username,profile,picture,website,email,email_verified,gender,birthdate,zoneinfo,locale,phone_number,phone_number_verified,address,updated_at,cognito:mfa_enabled
John,,John,Doe,,,,,,,johndoe@example.com,TRUE,,02/01/1985,,,+12345550100,TRUE,123 Any Street,,FALSE
Jane,,Jane,Roe,,,,,,,janeroe@example.com,TRUE,,01/01/1985,,,+12345550199,TRUE,100 Main Street,,FALSE
```

## Como criar e executar o trabalho de importação do grupo de usuários do Amazon Cognito
<a name="cognito-user-pools-creating-import-job"></a>

Esta seção descreve como criar e executar o trabalho de importação do grupo de usuários usando o console do Amazon Cognito e o AWS Command Line Interface ()AWS CLI.

**Topics**
+ [Importar usuários de um arquivo CSV (console)](#cognito-user-pools-using-import-tool-console)
+ [Como importar usuários (AWS CLI)](#cognito-user-pools-using-import-tool-cli)

### Importar usuários de um arquivo CSV (console)
<a name="cognito-user-pools-using-import-tool-console"></a>

O procedimento a seguir descreve como importar os usuários do arquivo CSV.

**Como importar usuários do arquivo CSV (console)**

1. Acesse o [console do Amazon Cognito](https://console.aws.amazon.com/cognito/home). Você pode ser solicitado a fornecer suas AWS credenciais.

1. Escolha **User Pools** (Grupos de usuários).

1. Escolha um grupo de usuários existente da lista.

1. Clique no menu **Usuários**.

1. Na seção **Import users** (Importar usuários), selecione **Create an import job** (Criar um trabalho de importação).

1. Na página **Create import job** (Criar um trabalho de importação), insira um **Job name** (Nome do trabalho).

1. Escolha entre **Create a new IAM role** (Criar um perfil do IAM) ou **Use an existing IAM role** (Usar um perfil do IAM existente).

   1. Se você optou por **Create a new IAM role** (Criar um perfil do IAM), insira um nome para o novo perfil. O Amazon Cognito criará automaticamente uma função com as permissões e a relação de confiança corretas. A entidade principal do IAM que cria o trabalho de importação deve ter permissões para criar perfis do IAM.

   1. Se você optou por **Use an existing IAM role** (Usar um perfil do IAM existente), escolha um perfil na lista em **IAM role selection** (Seleção de perfil do IAM). Esse perfil deve ter as permissões e a política de confiança descritas em [Criação da função do CloudWatch Logs IAM](#cognito-user-pools-using-import-tool-cli-cloudwatch-iam-role).

1. Em **Fazer upload do CSV**, selecione **Escolher arquivo** e anexe o arquivo CSV que você preparou.

1. Selecione **Create job** (Criar trabalho) para enviar seu trabalho, mas iniciá-lo mais tarde. Selecione **Create and start job** (Criar e iniciar trabalho) para enviar seu trabalho e iniciá-lo imediatamente.

1. Se você criou o trabalho, mas não o iniciou, poderá iniciá-lo mais tarde. No menu **Usuários**, em **Importar usuários**, escolha o trabalho de importação e clique em **Iniciar**. Você também pode enviar uma solicitação de [StartUserImportJob](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_StartUserImportJob.html)API a partir de um AWS SDK.

1. Monitore o andamento do trabalho de importação de usuários no menu **Usuários** em **Importar usuários**. Se o trabalho não for bem-sucedido, você poderá selecionar o valor do **Status**. Para obter mais detalhes, selecione **Visualizar os CloudWatch registros para obter mais detalhes** e analisar quaisquer problemas no console de CloudWatch registros.

### Como importar usuários (AWS CLI)
<a name="cognito-user-pools-using-import-tool-cli"></a>

Os comandos da CLI a seguir estão disponíveis para importar usuários para um grupo de usuários:
+ `create-user-import-job`
+ `get-csv-header`
+ `describe-user-import-job`
+ `list-user-import-jobs`
+ `start-user-import-job`
+ `stop-user-import-job`

Para obter a lista de opções de linha de comando desses comandos, use a opção de linha de comando `help`. Por exemplo:

```
aws cognito-idp get-csv-header help
```

#### Como criar um trabalho de importação de usuário
<a name="cognito-user-pools-using-import-tool-cli-creating-user-import-job"></a>

Depois de criar seu arquivo CSV, crie um trabalho de importação de usuários executando o seguinte comando da CLI, *JOB\$1NAME* onde está o nome que você está escolhendo para o trabalho*USER\$1POOL\$1ID*, o ID do grupo de usuários ao qual os novos usuários serão adicionados *ROLE\$1ARN* e o ARN da função que você recebeu em: [Criação da função do CloudWatch Logs IAM](#cognito-user-pools-using-import-tool-cli-cloudwatch-iam-role) 

```
aws cognito-idp create-user-import-job --job-name "JOB_NAME" --user-pool-id "USER_POOL_ID" --cloud-watch-logs-role-arn "ROLE_ARN"
```

O *PRE\$1SIGNED\$1URL* retorno na resposta é válido por 15 minutos. Após esse tempo, ele expirará e você deverá criar um novo trabalho de importação de usuário para obter um novo URL.

**Example Resposta:**  

```
{
    "UserImportJob": {
        "Status": "Created",
        "SkippedUsers": 0,
        "UserPoolId": "USER_POOL_ID",
        "ImportedUsers": 0,
        "JobName": "JOB_NAME",
        "JobId": "JOB_ID",
        "PreSignedUrl": "PRE_SIGNED_URL",
        "CloudWatchLogsRoleArn": "ROLE_ARN",
        "FailedUsers": 0,
        "CreationDate": 1470957431.965
    }
}
```

#### Valores de status de um trabalho de importação de usuário
<a name="cognito-user-pools-using-import-tool-cli-status-values-for-user-import-job"></a>

Nas respostas aos comandos de importação de usuário, você verá um dos seguintes valores de `Status`:
+ `Created`: o trabalho foi criado, mas não foi iniciado.
+ `Pending`: um estado de transição. Você iniciou o trabalho, mas não começou a importação de usuários ainda.
+ `InProgress`: o trabalho foi iniciado e os usuários estão sendo importados.
+ `Stopping`: você interrompeu o trabalho, mas o trabalho ainda não parou de importar usuários.
+ `Stopped`: você interrompeu o trabalho e o trabalho interrompeu a importação de usuários.
+ `Succeeded`: o trabalho foi concluído com êxito.
+ `Failed`: o trabalho foi interrompido devido a um erro.
+ `Expired`: você criou um trabalho, mas não iniciou o trabalho no intervalo de 24 a 48 horas. Todos os dados associados ao trabalho foram excluídos e o trabalho não pode ser iniciado.

#### Fazer upload do arquivo CSV
<a name="cognito-user-pools-using-import-tool-cli-uploading-csv-file"></a>

Use o comando `curl` a seguir para fazer upload do arquivo CSV que contém os dados do usuário no URL pré-assinado que você obteve da resposta do comando `create-user-import-job`.

```
curl -v -T "PATH_TO_CSV_FILE" -H "x-amz-server-side-encryption:aws:kms" "PRE_SIGNED_URL"
```

Na saída deste comando, procure a frase `"We are completely uploaded and fine"`. Essa frase indica que o upload do arquivo foi realizado com êxito. Os grupos de usuários não mantêm as informações nos arquivos de importação depois que você executa os trabalhos de importação. Depois que eles forem concluídos ou expirarem, o Amazon Cognito excluirá seu arquivo CSV carregado.

#### Como descrever um trabalho de importação de usuário
<a name="cognito-user-pools-using-import-tool-cli-describing-user-import-job"></a>

Para obter uma descrição do seu trabalho de importação de usuários, use o comando a seguir, onde *USER\$1POOL\$1ID* está o ID do grupo de usuários e *JOB\$1ID* o ID do trabalho que foi retornado quando você criou o trabalho de importação de usuários. 

```
aws cognito-idp describe-user-import-job --user-pool-id "USER_POOL_ID" --job-id "JOB_ID"
```

**Example Resposta de exemplo:**  

```
{
    "UserImportJob": {
        "Status": "Created",
        "SkippedUsers": 0,
        "UserPoolId": "USER_POOL_ID",
        "ImportedUsers": 0,
        "JobName": "JOB_NAME",
        "JobId": "JOB_ID",
        "PreSignedUrl": "PRE_SIGNED_URL",
        "CloudWatchLogsRoleArn":"ROLE_ARN",
        "FailedUsers": 0,
        "CreationDate": 1470957431.965
    }
}
```

No exemplo de saída anterior, *PRE\$1SIGNED\$1URL* é o URL para o qual você carregou o arquivo CSV. Esse *ROLE\$1ARN* é o ARN da função de CloudWatch registros que você recebeu ao criar a função.

#### Como listar os trabalhos de importação de usuário
<a name="cognito-user-pools-using-import-tool-cli-listing-user-import-jobs"></a>

Para listar os trabalhos de importação de usuário, use o comando a seguir:

```
aws cognito-idp list-user-import-jobs --user-pool-id "USER_POOL_ID" --max-results 2
```

**Example Resposta de exemplo:**  

```
{
    "UserImportJobs": [
        {
            "Status": "Created",
            "SkippedUsers": 0,
            "UserPoolId": "USER_POOL_ID",
            "ImportedUsers": 0,
            "JobName": "JOB_NAME",
            "JobId": "JOB_ID",
            "PreSignedUrl":"PRE_SIGNED_URL",
            "CloudWatchLogsRoleArn":"ROLE_ARN",
            "FailedUsers": 0,
            "CreationDate": 1470957431.965
        },
        {
            "CompletionDate": 1470954227.701,
            "StartDate": 1470954226.086,
            "Status": "Failed",
            "UserPoolId": "USER_POOL_ID",
            "ImportedUsers": 0,
            "SkippedUsers": 0,
            "JobName": "JOB_NAME",
            "CompletionMessage": "Too many users have failed or been skipped during the import.",
            "JobId": "JOB_ID",
            "PreSignedUrl":"PRE_SIGNED_URL",
            "CloudWatchLogsRoleArn":"ROLE_ARN",
            "FailedUsers": 5,
            "CreationDate": 1470953929.313
        }
    ],
    "PaginationToken": "PAGINATION_TOKEN"
}
```

Os trabalhos são listados em ordem cronológica, do último criado ao primeiro. A *PAGINATION\$1TOKEN* string após o segundo trabalho indica que há resultados adicionais para esse comando de lista. Para listar os resultados adicionais, use a opção `--pagination-token` opção da seguinte forma:

```
aws cognito-idp list-user-import-jobs --user-pool-id "USER_POOL_ID" --max-results 10 --pagination-token "PAGINATION_TOKEN"
```

#### Como iniciar um trabalho de importação de usuário
<a name="cognito-user-pools-using-import-tool-cli-starting-user-import-job"></a>

Para iniciar um trabalho de importação de usuário, use o seguinte comando:

```
aws cognito-idp start-user-import-job --user-pool-id "USER_POOL_ID" --job-id "JOB_ID"
```

Somente um trabalho de importação pode ser ativado por vez por conta.

**Example Resposta de exemplo:**  

```
{
    "UserImportJob": {
        "Status": "Pending",
        "StartDate": 1470957851.483,
        "UserPoolId": "USER_POOL_ID",
        "ImportedUsers": 0,
        "SkippedUsers": 0,
        "JobName": "JOB_NAME",
        "JobId": "JOB_ID",
        "PreSignedUrl":"PRE_SIGNED_URL",
        "CloudWatchLogsRoleArn": "ROLE_ARN",
        "FailedUsers": 0,
        "CreationDate": 1470957431.965
    }
}
```

#### Como interromper um trabalho de importação de usuário
<a name="cognito-user-pools-using-import-tool-cli-stopping-user-import-job"></a>

Para interromper um trabalho de importação de usuário em andamento, use o comando a seguir. Após interromper o trabalho, ele não poderá ser reiniciado.

```
aws cognito-idp stop-user-import-job --user-pool-id "USER_POOL_ID" --job-id "JOB_ID"
```

**Example Resposta de exemplo:**  

```
{
    "UserImportJob": {
        "CompletionDate": 1470958050.571,
        "StartDate": 1470958047.797,
        "Status": "Stopped",
        "UserPoolId": "USER_POOL_ID",
        "ImportedUsers": 0,
        "SkippedUsers": 0,
        "JobName": "JOB_NAME",
        "CompletionMessage": "The Import Job was stopped by the developer.",
        "JobId": "JOB_ID",
        "PreSignedUrl":"PRE_SIGNED_URL",
        "CloudWatchLogsRoleArn": "ROLE_ARN",
        "FailedUsers": 0,
        "CreationDate": 1470957972.387
    }
}
```

## Visualizando os resultados da importação do grupo de usuários no CloudWatch console
<a name="cognito-user-pools-using-import-tool-cloudwatch"></a>

Você pode ver os resultados do seu trabalho de importação no CloudWatch console da Amazon.

**Topics**
+ [Como visualizar os resultados](#cognito-user-pools-using-import-tool-viewing-the-results)
+ [Como interpretar os resultados](#cognito-user-pools-using-import-tool-interpreting-the-results)

### Como visualizar os resultados
<a name="cognito-user-pools-using-import-tool-viewing-the-results"></a>

As etapas a seguir descrevem como exibir os resultados de importação de grupo de usuários.

**Para exibir os resultados da importação de grupos de usuários**

1. Faça login no Console de gerenciamento da AWS e abra o CloudWatch console em [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Escolha **Logs**.

1. Escolha o grupo de logs dos trabalhos de importação de grupo de usuários. O nome do grupo de logs está no formato `/aws/cognito/userpools/USER_POOL_ID/USER_POOL_NAME`.

1. Escolha o log do trabalho de importação de usuário que você acabou de executar. O nome do registro está no formato*JOB\$1ID*/*JOB\$1NAME*. Os resultados do registro referem-se aos usuários por número de linha. Nenhum dado de usuário é gravado no log. Para cada usuário, uma linha semelhante à seguinte é exibida:
   + `[SUCCEEDED] Line Number 5956 - The import succeeded.`
   + `[SKIPPED] Line Number 5956 - The user already exists.`
   + `[FAILED] Line Number 5956 - The User Record does not set any of the auto verified attributes to true. (Example: email_verified to true).`

### Como interpretar os resultados
<a name="cognito-user-pools-using-import-tool-interpreting-the-results"></a>

Usuários importados com sucesso têm seu status definido como "PasswordReset”.

Nos casos a seguir, o usuário não será importado, mas o trabalho de importação continuará:
+ Nenhum atributo verificado automaticamente é definido como `true`.
+ Os dados do usuário não correspondem ao esquema.
+ Não é possível importar o usuário devido a um erro interno.

Nos casos a seguir, o trabalho de importação apresentará falha:
+ A função Amazon CloudWatch Logs não pode ser assumida, não tem a política de acesso correta ou foi excluída.
+ O grupo de usuários foi excluído.
+ O Amazon Cognito não pode analisar o arquivo .csv.

## Solicitação de redefinição de senha aos usuários importados
<a name="cognito-user-pools-using-import-tool-password-reset"></a>

Se o grupo de usuários oferecer somente login baseado em senha, os usuários deverão redefinir as senhas após a importação. Na primeira vez que fizerem login, poderão inserir *qualquer* senha. O Amazon Cognito solicita que eles insiram uma nova senha na resposta da API à solicitação de login da sua aplicação.

Se o grupo de usuários tiver fatores de autenticação sem senha, o Amazon Cognito os usará como padrão para usuários importados. Eles não serão solicitados a criar uma nova senha e poderão fazer login imediatamente com uma OTP enviada por e-mail ou SMS, sem senha. Você também poderá solicitar que os usuários definam uma senha para poderem usar outros métodos de login, como nome de usuário e senha ou chave de acesso. As condições a seguir se aplicam ao login sem senha após a importação do usuário.

1. Você deve importar usuários com um atributo que corresponda a um fator de login sem senha disponível. Se os usuários puderem fazer login com um endereço de e-mail, você deverá importar um atributo `email`. Se puderem fazer login com um número de telefone, você deverá importar um atributo `phone_number`. Se puderem fazer login com ambos, importe um valor para qualquer um dos atributos.

1. Normalmente, os usuários são importados em um estado `RESET_REQUIRED` em que precisam redefinir a senha. Se eles forem importados com a capacidade de fazer login com um fator sem senha, o Amazon Cognito definirá seu estado como `CONFIRMED`.

Para saber mais sobre a autenticação sem senha, incluindo como configurá-la e como criar o fluxo de autenticação em sua aplicação, consulte [Autenticação com grupos de usuários do Amazon Cognito](authentication.md).

O procedimento a seguir descreve a experiência do usuário em um mecanismo de login personalizado com usuários locais em um `RESET_REQUIRED` após a importação de um arquivo CSV. Se seus usuários fizerem login com login gerenciado, instrua-os a selecionar a opção **Esqueceu a senha?**, informe o código deles por e-mail ou mensagem de texto e defina uma senha.

**Solicitação de redefinição de senha aos usuários importados**

1. Na aplicação, tente fazer login silenciosamente para o usuário atual com `InitiateAuth` usando uma senha aleatória.

1. O Amazon Cognito retorna uma `NotAuthorizedException` quando `PreventUserExistenceErrors` está habilitado. Caso contrário, retornará `PasswordResetRequiredException`.

1. A aplicação faz uma solicitação da API `ForgotPassword` e redefine a senha do usuário.

   1. A aplicação envia o nome de usuário em uma solicitação de API `ForgotPassword`.

   1. O Amazon Cognito envia um código para o e-mail ou telefone verificado. O destino depende dos valores que você forneceu para `email_verified` e `phone_number_verified` no arquivo CSV. A resposta à solicitação `ForgotPassword` indica o destino do código.
**nota**  
O grupo de usuários deve estar configurado para verificar e-mails ou números de telefone. Para obter mais informações, consulte [Como cadastrar e confirmar contas de usuários](signing-up-users-in-your-app.md).

   1. A aplicação exibe uma mensagem para o usuário verificar o local para onde o código foi enviado e solicita que o usuário insira o código e uma nova senha.

   1. O usuário informa o código e a nova senha no aplicativo.

   1. A aplicação envia o código e a nova senha em uma solicitação da API `ConfirmForgotPassword`.

   1. A aplicação redireciona o usuário para fazer login.

# Trabalhar com atributos do usuário
<a name="user-pool-settings-attributes"></a>

Os atributos são informações que ajudam a identificar usuários específicos, como nome, endereço de e-mail e número de telefone. Um novo grupo de usuários tem um conjunto padrão de *atributos*. Você também pode adicionar atributos personalizados à sua definição de grupo de usuários no Console de gerenciamento da AWS. Este tópico descreve esses atributos detalhadamente e oferece dicas sobre como configurar seu grupo de usuários.

Não armazene todas as informações sobre seus usuários nos atributos. Por exemplo, mantenha os dados do usuário que são alterados com frequência, como estatísticas de uso ou pontuações de jogos, em um repositório de dados separado, como o Amazon Cognito Sync ou o Amazon DynamoDB.

Limpe as entradas dos valores de string de atributos do usuário antes de enviá-los ao grupo de usuários. Um método para analisar os valores de atributos do usuário propostos é utilizando um acionador do Lambda, como o de [pré-cadastro](user-pool-lambda-pre-sign-up.md).

**nota**  
Alguns documentos e padrões se referem a atributos como *membros*.

**Topics**
+ [Atributos padrão](#cognito-user-pools-standard-attributes)
+ [Nome de usuário e nome de usuário preferencial](#user-pool-settings-usernames)
+ [Personalização dos atributos de login](#user-pool-settings-aliases)
+ [Atributos personalizados](#user-pool-settings-custom-attributes)
+ [Permissões e escopos do atributo](#user-pool-settings-attribute-permissions-and-scopes)

## Atributos padrão
<a name="cognito-user-pools-standard-attributes"></a>

O Amazon Cognito atribui a todos os usuários um conjunto de atributos padrão com base na [Especificação do OpenID Connect](http://openid.net/specs/openid-connect-core-1_0.html#StandardClaims). Por padrão, os valores de atributo padrão e personalizados podem ser qualquer string de até 2.048 caracteres, mas alguns valores têm restrições de formato. 

Os atributos padrão são:
+ `name`
+ `family_name`
+ `given_name`
+ `middle_name`
+ `nickname`
+ `preferred_username`
+ `profile`
+ `picture`
+ `website`
+ `gender`
+ `birthdate`
+ `zoneinfo`
+ `locale`
+ `updated_at`
+ `address`
+ `email`
+ `phone_number`
+ `sub`

Exceto `sub`, os atributos padrão são opcionais por padrão para todos os usuários. Para tornar um atributo obrigatório, durante o processo de criação do grupo de usuários, marque a caixa de seleção **Required** (Obrigatório) ao lado do atributo. O Amazon Cognito atribui um valor de identificador de usuário exclusivo ao atributo `sub` de cada usuário. Somente os atributos **email** e **phone\$1number** podem ser verificados.

Os atributos padrão têm propriedades predefinidas que você pode visualizar no `SchemaAttributes` parâmetro de uma [resposta da DescribeUserPool API](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeUserPool.html#API_DescribeUserPool_ResponseSyntax). Você pode definir valores personalizados para essas propriedades de atributos, como restrições de tipo de dados, mutabilidade e comprimento. Para modificar as propriedades do atributo padrão, defina seus valores personalizados no [parâmetro CreateUserPool Esquema](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-Schema). O esquema também representa onde você define os atributos necessários. Você não pode modificar propriedades de atributos padrão ao criar grupos de usuários no console do Amazon Cognito.

**nota**  
 Quando você marcar um atributo padrão como **Required** (Obrigatório), o usuário não poderá se inscrever, a menos que forneça um valor para o atributo. Para criar usuários e não fornecer valores para os atributos necessários, os administradores podem usar a [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html)API. Após a criação de um grupo de usuários, não é possível alternar um atributo entre obrigatório e não obrigatório.Detalhes do atributo padrão e restrições de formato

**birthdate**  
O valor deve ser uma data válida de 10 caracteres no formato YYYY-MM-DD.

**email**  
Os usuários e administradores podem verificar valores de endereço de e-mail.  
Um administrador com Conta da AWS as permissões adequadas pode alterar o endereço de e-mail do usuário e também marcá-lo como verificado. Marque um endereço de e-mail como verificado com a [AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html)API ou o comando [admin-update-user-attributes](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/admin-update-user-attributes.html) AWS Command Line Interface (AWS CLI). Com esse comando, o administrador pode alterar o atributo `email_verified` para `true`. Você também pode editar um usuário no menu **Usuários** do console do Amazon Cognito para marcar um endereço de e-mail como verificado.  
O valor deve ser uma [string de endereço de e-mail válida](https://datatracker.ietf.org/doc/html/rfc3696#section-3) seguindo o formato de e-mail padrão com o símbolo @ e o domínio, com até 2.048 caracteres.

**phone\$1number**  
O usuário deverá fornecer um número de telefone se a autenticação multifator (MFA) de SMS estiver ativa. Para obter mais informações, consulte [Adicionar MFA a um grupo de usuários](user-pool-settings-mfa.md).  
Os usuários e administradores podem verificar valores de número de telefone.  
Um administrador com Conta da AWS as permissões adequadas pode alterar o número de telefone do usuário e também marcá-lo como verificado. Marque um número de telefone como verificado com a [AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html)API ou o [admin-update-user-attributes](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/admin-update-user-attributes.html) AWS CLI comando. Com esse comando, o administrador pode alterar o atributo `phone_number_verified` para `true`. Você também pode editar um usuário no menu **Usuários** do console do Amazon Cognito para marcar um número de telefone como verificado.  
Os números de telefone devem seguir estas regras de formatação: devem começar com um sinal de mais (**\$1**), seguido imediatamente do código do país. Um número de telefone pode conter apenas o sinal **\$1** e os dígitos. Remova quaisquer outros caracteres de um número de telefone, como parênteses, espaços ou traços (**-**) antes de enviar o valor ao serviço. Por exemplo, um número de telefone dos Estados Unidos deve seguir este formato: **\$114325551212**.

**preferred\$1username**  
Você pode selecionar `preferred_username` conforme necessário ou como um alias, mas não ambos. Se `preferred_username` for um alias, você pode fazer uma solicitação para a operação da [UpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserAttributes.html)API e adicionar o valor do atributo depois de confirmar o usuário.

**sub**  
Indexe e pesquise seus usuários com base no atributo `sub`. O atributo `sub` é um identificador de usuário exclusivo em cada grupo de usuários. Os usuários podem alterar atributos como `phone_number` e `email`. O atributo `sub` tem um valor fixo. Para ter mais informações sobre como descobrir usuários, consulte [Como gerenciar e pesquisar contas de usuários](how-to-manage-user-accounts.md).

### Exibir atributos obrigatórios
<a name="how-to-edit-standard-attributes"></a>

Siga o procedimento abaixo a fim de exibir atributos obrigatórios para um determinado grupo de usuários.

**nota**  
Não é possível alterar atributos obrigatórios após a criação de um grupo de usuários.

**Para exibir atributos obrigatórios**

1. Acesse o [Amazon Cognito](https://console.aws.amazon.com/cognito/home) no. Console de gerenciamento da AWS Se o console solicitar, insira suas AWS credenciais.

1. Escolha **User Pools** (Grupos de usuários).

1. Escolha um grupo de usuários existente da lista.

1. Clique no menu **Cadastrar-se**.

1. Na seção **Required attributes** (Atributos obrigatórios), veja os atributos obrigatórios de seu grupo de usuários.

## Nome de usuário e nome de usuário preferencial
<a name="user-pool-settings-usernames"></a>

O valor de `username` é um atributo separado; não equivale ao atributo `name`. Cada usuário tem um atributo `username`. O Amazon Cognito gera automaticamente um nome de usuário para usuários federados. Você deve fornecer um atributo `username` para criar um usuário local no diretório do Amazon Cognito. Após a criação de um usuário, não é possível alterar o valor do atributo `username`.

Os desenvolvedores podem usar o atributo `preferred_username` para atribuir aos usuários nomes de usuário que eles podem alterar. Para obter mais informações, consulte [Personalização dos atributos de login](#user-pool-settings-aliases).

Se sua aplicação não exigir um nome de usuário, não será necessário solicitar que os usuários o forneçam. O aplicativo pode criar um nome de usuário exclusivo para os usuários no plano de fundo. Isso pode ser útil se você desejar que os usuários se inscrevam e façam login com um endereço de e-mail e senha. Para obter mais informações, consulte [Personalização dos atributos de login](#user-pool-settings-aliases).

`username` deve ser exclusivo em um grupo de usuários. `username` pode ser reutilizado, mas somente depois que você o excluir e ele não estiver mais em uso. Para obter informações sobre as restrições de string aos `username` atributos, consulte a propriedade *username* de uma solicitação de [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html#CognitoUserPools-SignUp-request-Username)API.

## Personalização dos atributos de login
<a name="user-pool-settings-aliases"></a>

Ao criar um grupo de usuários, você pode configurar *atributos de nome de usuário* caso queira que os usuários possam se inscrever e fazer login com um endereço de e-mail ou um número de telefone como nome de usuário. Como alternativa, você pode configurar *atributos de alias* para dar aos usuários a seguinte opção: incluir vários atributos ao se inscreverem e, então, fazer login com um nome de usuário, nome de usuário preferencial, endereço de e-mail ou número de telefone.

**Importante**  
Após a criação de um grupo de usuários, não é possível alterar essa configuração.

### Como escolher entre atributos de alias e atributos de nome de usuário
<a name="user-pool-settings-aliases-settings"></a>


| Seu requisito | Atributos de alias | Atributos do nome de usuário | 
| --- |--- |--- |
| Os usuários têm vários atributos de login | Sim¹ | Não² | 
| Os usuários devem verificar o endereço de e-mail ou o número de telefone antes de poderem fazer login com ele | Sim | Não | 
| Inscreva usuários com endereços de e-mail ou números de telefone duplicados e evite erros³ UsernameExistsException | Sim | Não | 
| Pode atribuir o mesmo valor de atributo de endereço de e-mail ou número de telefone a mais de um usuário | Sim⁴ | Não | 

¹ Os atributos de login disponíveis são nome de usuário, endereço de e-mail, número de telefone e nome de usuário de preferência.

² É possível fazer login com o endereço de e-mail ou o número de telefone.

³ O grupo de usuários não gera erros `UsernameExistsException` quando os usuários se registram com endereços de e-mail ou números de telefone possivelmente duplicados, mas sem nome de usuário. Esse comportamento é independente de **Evitar erros de existência de nome de usuário**, que se aplica às operações de login, mas não às operações de inscrição.

⁴ Somente o último usuário que verificou o atributo pode fazer login com ele.

#### Opção 1: vários atributos de login (atributos de alias)
<a name="user-pool-settings-aliases-settings-option-1"></a>

Um atributo é um *alias* quando os usuários têm um nome de usuário, mas também podem fazer login com esse atributo. Configure aliases quando quiser permitir que os usuários optem entre o nome de usuário e outros valores de atributo no campo de nome de usuário do formulário de login. O atributo `username` é um valor fixo que os usuários não podem mudar. Se você marcar um atributo como alias, os usuários poderão fazer login usando esse atributo em vez de o nome de usuário. Você pode marcar os atributos de endereço de e-mail, número de telefone e nome de usuário preferido como aliases. Por exemplo, se você selecionar um endereço de e-mail e número de telefone como aliases para um grupo de usuários, os usuários desse grupo poderão fazer login usando o respectivo nome de usuário, endereço de e-mail ou número de telefone com a senha.

Para escolher atributos de alias, selecione **User name** (Nome de usuário) e pelo menos uma opção de login adicional ao criar o grupo de usuários.

**nota**  
Ao configurar seu grupo de usuários para indistinção de maiúsculas e minúsculas, o usuário poderá usar letras minúsculas ou maiúsculas para se cadastrar ou fazer login com o alias. Para obter mais informações, consulte a Referência [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)da *API de grupos de usuários do Amazon Cognito*.

Se você selecionar o endereço de e-mail como um alias, o Amazon Cognito não aceitará um nome de usuário que corresponda a um formato de endereço de e-mail válido. Da mesma forma, se você selecionar o número de telefone como alias, o Amazon Cognito não aceitará um nome de usuário para esse grupo de usuários que corresponda a um formato de número de telefone válido.

**nota**  
Os valores de alias devem ser exclusivos em um grupo de usuários. Se configurar um alias para um endereço de e-mail ou número de telefone, o valor que você fornecer poderá apresentar o estado verificado em apenas uma conta. Durante o cadastro, se o usuário fornecer um endereço de e-mail ou número de telefone como um valor de alias e outro usuário já tiver usado esse valor, o registro será bem-sucedido. No entanto, quando um usuário tentar confirmar a conta com esse e-mail (ou número de telefone) e inserir o código válido, o Amazon Cognito retornará um erro `AliasExistsException`. Esse erro indica ao usuário que já existe uma conta com esse endereço de e-mail (ou número de telefone). Nesse ponto, o usuário pode abandonar a tentativa de criar a nova conta e, em vez disso, tentar redefinir a senha para a conta antiga. Se o usuário continuar criando a nova conta, sua aplicação deverá chamar a API `ConfirmSignUp` com a opção `forceAliasCreation`. `ConfirmSignUp` com `forceAliasCreation` move o alias da conta anterior para a conta recém-criada e marca o atributo não verificado na conta anterior.

Os números de telefone e os endereços de e-mail só se tornarão aliases ativos para um usuário depois que você os verificar. Recomendamos escolher a verificação automática dos endereços de e-mail e números de telefone se você os usar como aliases.

Escolha atributos de alias para evitar erros `UsernameExistsException` nos atributos de endereço de e-mail e número de telefone quando os usuários se inscreverem.

Ative o atributo `preferred_username` para que o usuário possa alterar o nome que ele usa para fazer login enquanto o valor de atributo `username` não mudar. Se desejar configurar essa experiência de usuário, envie o novo valor de `username` como `preferred_username` e escolha `preferred_username` como alias. Assim, os usuários poderão fazer login com o novo valor que eles inseriram. Se você selecionar `preferred_username` como alias, o usuário só poderá fornecer o valor quando confirmar uma conta. Ele não poderá fornecer o valor durante o registro.

Quando o usuário se inscreve com um nome de usuário, é possível escolher se ele pode fazer login com um ou mais dos aliases a seguir.
+ Um endereço de e-mail verificado
+ Um número de telefone verificado
+ Nome de usuário preferido

Depois que o usuário se cadastra, ele não pode alterar esses aliases.

**Importante**  
Quando seu grupo de usuários é compatível com login com aliases e você deseja autorizar ou pesquisar um usuário, não identifique seu usuário por nenhum de seus atributos de login. O identificador de usuário de valor fixo `sub` é o único indicador consistente da identidade do seu usuário.

Inclua as etapas a seguir quando criar o grupo de usuários para que os usuários possam fazer login com um alias.

------
#### [ Phone number or email address (console) ]

Você deve definir o endereço de e-mail e o número de telefone como atributos de alias ao criar um grupo de usuários.

**Como criar um grupo de usuários com aliases de nome de usuário no console do Amazon Cognito**

1. Acesse o [Amazon Cognito](https://console.aws.amazon.com/cognito/home) no Console de gerenciamento da AWS. Se o console solicitar, insira suas AWS credenciais.

1. Crie um novo grupo de usuários com o botão **Comece a usar** ou **Criar grupo de usuários**.

1. Escolha as configurações da aplicação em **Definir a aplicação**.

1. Em **Configurar opções**, em **Opções para identificadores de login**, marque a caixa de seleção ao lado de **Nome de usuário** e pelo menos uma das outras opções, **E-mail** e **Número de telefone**.

1. Escolha os atributos de alias como **Atributos obrigatórios para a inscrição**. No formulário de cadastro de login gerenciado, o Amazon Cognito solicita que novos usuários forneçam valores para os atributos obrigatórios.

1. Em **Adicionar um URL de retorno**, configure um URL de retorno de chamada da aplicação para redirecionamento após o login de login gerenciado.

1. Escolha **Criar**.

------
#### [ Phone number or email address (API/SDK) ]

Crie um novo grupo de usuários com a operação [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)da API. Configure o parâmetro `AliasAttributes` conforme mostrado. Você pode remover a entrada `email` se quiser somente aliases de números de telefone ou remover a entrada `phone_number` se quiser somente aliases de endereço de e-mail.

```
"AliasAttributes": [
   "email",
   "phone_number"
],
```

------
#### [ Preferred username (API/SDK) ]

O console do Amazon Cognito cria grupos de usuários sem `preferred_username` como um alias. Para criar grupos de usuários com um `preferred_username` alias, configure grupos de usuários com solicitações de [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)API em um AWS SDK. Para oferecer suporte à criação de atributos de nome de usuário preferenciais no cadastro, defina `preferred_username` como um atributo obrigatório. No formulário de cadastro de login gerenciado, o Amazon Cognito solicita que novos usuários forneçam valores para os atributos obrigatórios. Você *pode* definir `preferred_username` como um atributo obrigatório no console do Amazon Cognito, mas isso não o torna disponível como um alias.

**Configurar como um alias**  
Configure `preferred_username` como um alias no parâmetro `AliasAttributes` de uma solicitação `CreateUserPool`, conforme mostrado. Remova todos os valores que você não deseja como atributos de alias da lista.

```
"AliasAttributes": [
   "email",
   "phone_number",
   "preferred_username"
],
```

**Configurar como obrigatório**  
No formulário de cadastro de login gerenciado, o Amazon Cognito solicita que novos usuários forneçam valores para os atributos obrigatórios. Configure `preferred_username` conforme necessário no `SchemaAttributes` parâmetro de uma [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)solicitação.

Para definir o nome de usuário preferencial como um atributo obrigatório, configure-o conforme mostrado. O exemplo a seguir modifica o esquema padrão de `preferred_username` para torná-lo obrigatório. Outros parâmetros do esquema, como `AttributeDataType` (usa `string` como padrão) e `StringAttributeConstraints` (usa de 1 a 99 caracteres como padrão), assumem valores padrão.

```
"Schema": [
   {
      "Name": "preferred_username",
      "Required": true
   }
]
```

------

#### Opção 2: endereço de e-mail ou número de telefone como atributo de login (atributos de nome de usuário)
<a name="user-pool-settings-aliases-settings-option-2"></a>

Quando o usuário se inscreve com um endereço de e-mail ou número de telefone como o respectivo nome de usuário, é possível escolher se ele pode se inscrever apenas com endereços de e-mail, apenas números de telefone ou qualquer um dos dois. 

Para escolher atributos de nome de usuário, não selecione **Nome de usuário** como opção de login ao criar o grupo de usuários.

O endereço de e-mail ou o número de telefone deve ser exclusivo e não deve estar em uso por outro usuário. Ele não precisa ser verificado. Depois que o usuário se cadastra com um endereço de e-mail ou número de telefone, ele não pode criar uma nova conta com o mesmo endereço de e-mail ou número de telefone. O usuário só poderá reutilizar a conta existente e redefinir a respectiva senha, se necessário. No entanto, ele pode alterar o endereço de e-mail ou o número de telefone para um novo endereço de e-mail ou número de telefone. Se o endereço de e-mail ou o número de telefone ainda não estiver em uso, ele se tornará o novo nome de usuário.

Ao selecionar endereço de e-mail e número de telefone como atributos de nome de usuário, os usuários podem fazer login com um ou outro, mesmo que forneçam valores para ambos os atributos. O nome de usuário de login é baseado no valor que você passa no `Username` parâmetro de. [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html#CognitoUserPools-SignUp-request-Username)

**nota**  
Se um usuário se inscrever com um endereço de e-mail como nome de usuário, ele poderá alterar o nome de usuário para outro endereço de e-mail, mas não poderá alterá-lo para um número de telefone. Se os usuários se inscreverem com um número de telefone, eles poderão alterar o nome de usuário para outro número de telefone, mas não poderão alterá-lo para um endereço de e-mail.

Siga as etapas abaixo durante o processo de criação do grupo de usuários para configurar o cadastro e o login com um endereço de e-mail ou número de telefone.

------
#### [ Username attributes (console) ]

O procedimento a seguir cria um grupo de usuários com atributos de nome de usuário de endereço de e-mail ou número de telefone. A diferença no processo de atributos de nome de usuário no console do Amazon Cognito é que você também não define o **Nome de usuário** como um atributo de login.

**Como criar um grupo de usuários com atributos de nome de usuário no console do Amazon Cognito**

1. Acesse o [Amazon Cognito](https://console.aws.amazon.com/cognito/home) no Console de gerenciamento da AWS. Se o console solicitar, insira suas AWS credenciais.

1. Crie um novo grupo de usuários com o botão **Comece a usar** ou **Criar grupo de usuários**.

1. Escolha as configurações da aplicação em **Definir a aplicação**.

1. Em **Configurar opções**, em **Opções para identificadores de login**, selecione os atributos de nome de usuário: **E-mail**, **Número de telefone** ou ambos. Deixe **Nome de usuário** desmarcado.

1. Como prática recomendada, selecione os atributos de nome de usuário como **Atributos obrigatórios para inscrição**. No formulário de cadastro de login gerenciado, o Amazon Cognito solicita que novos usuários forneçam valores para os atributos obrigatórios. Se você não definir os atributos de nome de usuário como obrigatórios, o Amazon Cognito não solicitará que os novos usuários os forneçam. Nesse cenário, você deve configurar sua aplicação para coletar e enviar endereços de e-mail ou números de telefone de cada usuário antes que ele possa fazer login.

1. Em **Adicionar um URL de retorno**, configure um URL de retorno de chamada da aplicação para redirecionamento após o login de login gerenciado.

1. Escolha **Criar**.

------
#### [ Username attributes (API/SDK) ]

Em uma [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)solicitação, configure o `UsernameAttributes` parâmetro conforme mostrado. Para permitir o login somente com nomes de usuário de endereço de e-mail, especifique `email` sozinho nessa lista. Para permitir o login somente com nomes de usuário de números de telefone, especifique `phone_number` sozinho. Esse parâmetro substitui o nome de usuário como opção de login.

```
"UsernameAttributes": [ 
   "email",
   "phone_number"
],
```

------

Ao configurar atributos de nome de usuário, você pode fazer solicitações de [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)API que transmitem um endereço de e-mail ou número de telefone no `username` parâmetro. Veja a seguir o comportamento da operação de API `SignUp` com atributos de nome de usuário.
+ Se a string `username` estiver no formato válido de endereço de e-mail, por exemplo, `user@example.com`, o grupo de usuários preencherá automaticamente o atributo `email` do usuário com o valor `username`.
+ Se a string `username` estiver no formato válido de número de telefone, por exemplo, `+12065551212`, o grupo de usuários ocupa automaticamente o atributo `phone_number` do usuário com o valor `username`.
+ Se a string `username` não estiver no formato de endereço de e-mail ou número de telefone, a API `SignUp` retornará uma exceção.
+ Se a string `username` contiver um endereço de e-mail ou número de telefone já em uso, a API `SignUp` retornará uma exceção.
+ A API `SignUp` preenche o atributo `username` com um [UUID](cognito-terms.md#terms-uuid) para seu usuário. Este UUID possui o mesmo valor reivindicado pelo `sub` no token de identidade do usuário.

Você pode usar um endereço de e-mail ou número de telefone no lugar do nome de usuário em tudo APIs, exceto na [ListUsers](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUsers.html)operação. Nas solicitações de API `ListUsers`, é possível especificar um `Filter` de `email` ou `phone_number`. Se você filtrar por `username`, deverá fornecer o nome de usuário do UUID, não o endereço de e-mail ou número de telefone.

## Atributos personalizados
<a name="user-pool-settings-custom-attributes"></a>

Você pode adicionar até 50 atributos personalizados ao grupo de usuários. Você pode especificar um comprimento mínimo e/ou máximo para os atributos personalizados. No entanto, o comprimento máximo para qualquer atributo personalizado não pode ultrapassar 2.048 caracteres. O nome de um atributo personalizado deve corresponder ao padrão de expressão regular descrito no `Name` parâmetro de [SchemaAttributeType](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SchemaAttributeType.html).

**Todo atributo personalizado tem as seguintes características:**
+ Você pode defini-lo como uma string, número, booleano ou objeto `DateTime`. O Amazon Cognito grava valores de atributo personalizados no token de ID somente como strings.
**nota**  
No console do Amazon Cognito, é possível adicionar atributos personalizados somente dos tipos de dados de string e número. Opções adicionais, como tipos de dados booleanos e de `DateTime` atributos, só estão disponíveis na `SchemaAttributes` propriedade [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)e nas solicitações da [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)API.
+ Não é possível exigir que os usuários forneçam um valor para o atributo.
+ Você não poderá removê-lo ou alterá-lo depois de adicioná-lo ao grupo de usuários.
+ A extensão de caracteres do nome do atributo está dentro do limite que o Amazon Cognito aceita. Para obter mais informações, consulte [Cotas no Amazon Cognito](quotas.md).
+ Ele pode ser *mutável* ou *imutável*. É possível gravar um valor em um atributo imutável ao criar um usuário. Você pode alterar o valor de um atributo mutável se o cliente de aplicação tiver permissão de gravação para o atributo. Consulte [Permissões e escopos do atributo](#user-pool-settings-attribute-permissions-and-scopes) para obter mais informações.

**nota**  
No código e nas configurações de regra de [Controle de acesso com base em perfil](role-based-access-control.md), os atributos personalizados requerem o prefixo `custom:` para que sejam diferenciados dos atributos padrão.

Você também pode adicionar *atributos de desenvolvedor* ao criar grupos de usuários, na `SchemaAttributes` propriedade de [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html). Os atributos de desenvolvedor têm um prefixo `dev:`. Você só pode modificar os atributos de desenvolvedor de um usuário com AWS credenciais. Os atributos de desenvolvedor são um recurso herdado que o Amazon Cognito substituiu pelas permissões de leitura e gravação do cliente da aplicação.

Siga o procedimento abaixo para criar um novo atributo personalizado.

**Para adicionar um atributo personalizado usando o console**

1. Acesse o [Amazon Cognito](https://console.aws.amazon.com/cognito/home) no. Console de gerenciamento da AWS Se o console solicitar, insira suas AWS credenciais.

1. Escolha **User Pools** (Grupos de usuários).

1. Escolha um grupo de usuários existente da lista.

1. Clique no menu **Cadastrar-se** e, na seção **Atributos personalizados**, selecione **Adicionar atributos personalizados**.

1. Na página **Add custom attributes** (Adicionar atributos personalizados), forneça os seguintes detalhes sobre o novo atributo:
   + Insira um **Name** (Nome).
   + Selecione um **Type** (Tipo), que pode ser **String** ou **Number** (Número).
   + Insira um tamanho de string **Min.** (Mínimo) ou um valor numérico.
   + Insira um tamanho de string **Max.** (Máximo) ou um valor numérico.
   + Selecione **Mutable** (Mutável) se quiser conceder permissão aos usuários para alterar o valor de um atributo personalizado depois que eles definirem o valor inicial.

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

## Permissões e escopos do atributo
<a name="user-pool-settings-attribute-permissions-and-scopes"></a>

Para cada aplicação cliente, é possível configurar permissões de leitura e gravação para cada atributo de usuário. Dessa forma, você pode controlar o acesso de leitura que qualquer aplicação tiver e modificar cada atributo armazenado para seus usuários. Por exemplo, você pode ter um atributo personalizado que indique se um usuário é ou não um cliente pagante. Suas aplicações podem ver esse atributo, mas não o alterar diretamente. Em vez disso, você atualizará o atributo usando uma ferramenta administrativa ou um processo em segundo plano. Você pode definir permissões para atributos de usuário no console do Amazon Cognito, na API do Amazon Cognito ou na AWS CLI. Por padrão, todos os novos atributos personalizados só estarão disponíveis depois que você definir permissões de leitura e gravação para eles. Por padrão, quando você cria um cliente de aplicação, concede à aplicação permissões de leitura e gravação para todos os atributos padrão e personalizados. Para limitar a aplicação somente à quantidade de informações necessárias, atribua permissões específicas aos atributos na configuração do cliente da aplicação.

Como prática recomendada, especifique as permissões de leitura e gravação dos atributos ao criar um cliente de aplicação. Conceda ao cliente de aplicação acesso ao conjunto mínimo de atributos de usuário necessários para a operação da aplicação.

**nota**  
[DescribeUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeUserPoolClient.html)retorna somente valores para `ReadAttributes` e `WriteAttributes` quando você configura permissões do cliente do aplicativo que não sejam as padrão.

**Como atualizar as permissões de atributo (Console de gerenciamento da AWS)**

1. Acesse o [Amazon Cognito](https://console.aws.amazon.com/cognito/home) no. Console de gerenciamento da AWS Se o console solicitar, insira suas AWS credenciais.

1. Escolha **User Pools** (Grupos de usuários).

1. Escolha um grupo de usuários existente da lista.

1. Clique no menu **Clientes da aplicação** e selecione um cliente da aplicação na lista.

1. Na guia **Permissões de atributos**, selecione **Editar**.

1. Na página **Edit attribute read and write permissions** (Editar permissões de leitura e gravação de atributos), configure suas permissões de leitura e gravação e, em seguida, escolha **Save changes** (Salvar alterações).

Repita essas etapas para cada cliente de aplicativo usando o atributo personalizado.

Para cada cliente de aplicação, é possível marcar atributos como legíveis ou graváveis. Isso se aplica aos atributos padrão e aos atributos personalizados. A aplicação pode recuperar o valor dos atributos que você marca como legíveis, bem como definir ou modificar o valor dos atributos marcados como graváveis. Se seu aplicativo tentar definir um valor para um atributo que não está autorizado a escrever, o Amazon Cognito retornará. `NotAuthorizedException` [GetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html)as solicitações incluem um token de acesso com uma reivindicação do cliente do aplicativo; o Amazon Cognito retorna somente valores para atributos que o cliente do aplicativo pode ler. O token de ID do usuário de uma aplicação contém apenas declarações que correspondem aos atributos legíveis. Todos os clientes da aplicação podem gravar os atributos necessários do grupo de usuários. Você só pode definir o valor de um atributo em uma solicitação de API de grupos de usuários do Amazon Cognito quando também fornece um valor para quaisquer atributos obrigatórios que ainda não tenham um valor.

Os atributos personalizados têm recursos distintos para permissões de leitura e gravação. É possível criá-los como mutáveis ou imutáveis para o grupo de usuários e defini-los como atributos de leitura ou gravação para qualquer cliente da aplicação.

Um atributo personalizado imutável pode ser atualizado uma vez durante a criação do usuário. É possível preencher um atributo imutável com os métodos a seguir.
+ `SignUp`: um usuário se inscreve em um cliente da aplicação que tenha acesso de gravação a um atributo personalizado imutável. Ele fornece um valor para esse atributo.
+ Fazer login com um IdP de terceiros: um usuário faz login em um cliente da aplicação que tem acesso de gravação a um atributo personalizado imutável. A configuração do grupo de usuários para o IdP tem uma regra para associar uma declaração fornecida a um atributo imutável. Isso é possível, mas não prático, porque o usuário só poderá fazer login uma vez. O Amazon Cognito rejeita todas as tentativas de login após a primeira, pois existe uma regra de mapeamento para um atributo now-unwriteable.
+ `AdminCreateUser`: você fornece um valor para um atributo imutável.

### Permissões de atributos com escopos
<a name="user-pool-settings-attribute-scope-based-permissions"></a>

Nos grupos de usuários que você configura com um AWS SDK ou CDK, a API REST ou o AWS CLI, você pode configurar o acesso de leitura ou gravação do cliente do aplicativo com o escopo do OIDC. `oidc:profile` O `oidc:profile` concede acesso de leitura ou gravação aos seguintes atributos padrão:
+ `name`
+ `family_name`
+ `given_name`
+ `middle_name`
+ `nickname`
+ `preferred_username`
+ `profile`
+ `picture`
+ `website`
+ `gender`
+ `birthdate`
+ `zoneinfo`
+ `locale`

Essa lista contém os atributos padrão do OIDC menos `email`, `phone_number`, `sub` e `address`, conforme definido na [seção 2.4 da especificação do OIDC](https://openid.net/specs/openid-connect-basic-1_0.html#Scopes). Para receber informações sobre os escopos que você pode atribuir aos clientes da aplicação, consulte [Escopos, M2M e servidores de recursos](cognito-user-pools-define-resource-servers.md).

Para configurar seu cliente de aplicativo para gravar nos atributos sob o `oidc:profile` escopo, defina o valor de [WriteAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html#CognitoUserPools-CreateUserPoolClient-request-WriteAttributes)to`oidc:profile`, além de quaisquer outros atributos que você queira permitir que seu aplicativo modifique, em uma [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html)solicitação de [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html)API. Da mesma forma, para conceder acesso de leitura a esses atributos, adicione `oidc:profile` ao valor de [ReadAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html#CognitoUserPools-CreateUserPoolClient-request-ReadAttributes).

Você pode alterar os escopos e as permissões de atributo após ter criado o grupo de usuários.