

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

# Usar atributos de segurança de grupos de usuários do Amazon Cognito
<a name="managing-security"></a>

Você pode querer proteger a aplicação contra invasão de rede, adivinhação de senhas, falsificação de identidade de usuário e cadastros e logins mal-intencionados. Sua configuração dos recursos de segurança dos grupos de usuários do Amazon Cognito pode ser um componente essencial na arquitetura de segurança. A segurança do seu aplicativo é de *responsabilidade do cliente “Segurança na nuvem”*, conforme descrito no [Modelo de Responsabilidade AWS Compartilhada](https://aws.amazon.com/compliance/shared-responsibility-model/). As ferramentas deste capítulo contribuem para que o design de segurança da sua aplicação esteja alinhado com essas metas.

Uma decisão importante que você deve tomar ao configurar seu grupo de usuários é permitir o cadastro e o login públicos. Algumas opções de grupos de usuários, como clientes confidenciais, criação administrativa e confirmação de usuários e grupos de usuários sem domínio, estão sujeitas, em menor grau, a ataques pela Internet. No entanto, um caso de uso comum são clientes públicos que aceitam o cadastro de qualquer pessoa na Internet e enviam todas as operações diretamente para seu grupo de usuários. Em qualquer configuração, mas especialmente no caso dessas públicas, recomendamos que você planeje e implante seu grupo de usuários com os recursos de segurança em mente. A segurança insuficiente também pode afetar sua AWS fatura quando fontes indesejadas criam novos usuários ativos ou tentam explorar usuários existentes.

A MFA e a proteção contra ameaças se aplicam aos usuários [locais](cognito-terms.md#terms-localuser). IdPs Os terceiros são responsáveis pela postura de segurança dos usuários [federados.](cognito-terms.md#terms-federateduser)Recursos de segurança de grupos de usuários.

**Autenticação multifatorial (MFA)**  
Solicite um código que seu grupo de usuários envie por e-mail (com o plano de recursos Essentials ou Plus) ou mensagem SMS ou de uma aplicação autenticadora para confirmar o login do grupo de usuários.

**Proteção contra ameaças**  
Procure no cadastro indicadores de risco e aplique a MFA ou bloqueie o login. Adicione declarações e escopos personalizados para acessar tokens. Envie códigos MFA do e-mail.

**AWS WAF web ACLs**  
Inspecione o tráfego de entrada nos [endpoints do grupo de usuários e na API de autenticação](authentication-flows-public-server-side.md#user-pools-API-operations) em busca de atividades indesejadas nas camadas da rede e de aplicação.

**Diferenciação de letras maiúsculas e minúsculas**  
Impeça a criação de usuários cujo endereço de e-mail ou nome de usuário preferencial seja idêntico ao de outro usuário, a não ser pela diferenciação de letras maiúsculas e minúsculas.

**Deletion protection (Proteção contra exclusão)**  
Evite que sistemas automatizados excluam acidentalmente seus grupos de usuários. Exija confirmação adicional da exclusão do grupo de usuários no Console de gerenciamento da AWS.

**Erros de existência de usuários**  
Proteja-se contra a divulgação de nomes de usuário e aliases existentes no grupo de usuários. Retorne um erro genérico em resposta à autenticação malsucedida, independentemente de o nome de usuário ser válido ou não.

**Topics**
+ [Adicionar MFA a um grupo de usuários](user-pool-settings-mfa.md)
+ [Segurança avançada com proteção contra ameaças](cognito-user-pool-settings-threat-protection.md)
+ [Associar uma ACL AWS WAF da web a um grupo de usuários](user-pool-waf.md)
+ [Sensibilidade entre maiúsculas e minúsculas do grupo de usuários](user-pool-case-sensitivity.md)
+ [Proteção contra exclusão do grupo de usuários](user-pool-settings-deletion-protection.md)
+ [Gerenciar respostas de erro de existência do usuário](cognito-user-pool-managing-errors.md)

# Adicionar MFA a um grupo de usuários
<a name="user-pool-settings-mfa"></a>

a MFA adiciona um fator de autenticação do tipo *algo que você tem* ao fator *algo que você sabe* inicial, geralmente um nome de usuário e senha. Você pode optar por mensagens de texto SMS, e-mails ou senhas de uso único com marcação temporal (TOTP) como fatores adicionais para o login dos usuários com senhas como o fator de autenticação primário.

A autenticação multifator (MFA) aumenta a segurança dos [usuários locais](cognito-terms.md#terms-localuser) na aplicação. No caso de [usuários federados](cognito-terms.md#terms-federateduser), o Amazon Cognito delega todos os processos de autenticação ao IdP e não oferece a eles fatores de autenticação adicionais.

**nota**  
Na primeira vez que um novo usuário faz login no seu aplicativo, o Amazon Cognito emite tokens OAuth 2.0, mesmo que seu grupo de usuários exija MFA. O segundo fator de autenticação quando o usuário faz login pela primeira vez é a confirmação da mensagem de verificação que o Amazon Cognito envia a ele. Se o grupo de usuários exigir MFA, o Amazon Cognito solicitará que o usuário inscreva um fator de login adicional para ser usado durante toda tentativa de login posterior à primeira.

Com a autenticação adaptável, você pode configurar o grupo de usuários para exigir um fator de autenticação adicional em resposta a um aumento no nível de risco. Para adicionar autenticação adaptável ao grupo de usuários, consulte [Segurança avançada com proteção contra ameaças](cognito-user-pool-settings-threat-protection.md).

Quando você define a MFA como `required` para um grupo de usuários, todos os usuários devem concluir a MFA para fazer login. Para fazer login, cada usuário deve configurar pelo menos um fator de MFA. Quando a MFA é exigida, você deve incluir a configuração da MFA na integração dos usuários para que seu grupo de usuários permita que eles façam login.

O login gerenciado solicita que os usuários configurem a MFA quando você a define como obrigatória. Quando você define a MFA como opcional no grupo de usuários, o login gerenciado não a solicita aos usuários. Para trabalhar com a MFA opcional, você deve criar uma interface na aplicação que solicite que os usuários selecionem se desejam configurar a MFA e, depois, oriente-os durante as entradas da API para verificar o fator adicional de login.

**Topics**
+ [Informações importantes sobre a MFA de grupo de usuários](#user-pool-settings-mfa-prerequisites)
+ [Preferências de MFA do usuário](#user-pool-settings-mfa-preferences)
+ [Detalhes da lógica de MFA no runtime do usuário](#user-pool-settings-mfa-user-outcomes)
+ [Configurar um grupo de usuários para a autenticação multifator](#user-pool-configuring-mfa)
+ [MFA de mensagens SMS e e-mail](user-pool-settings-mfa-sms-email-message.md)
+ [MFA de token de software TOTP](user-pool-settings-mfa-totp.md)

## Informações importantes sobre a MFA de grupo de usuários
<a name="user-pool-settings-mfa-prerequisites"></a>

Antes de configurar a MFA, considere o seguinte:
+ Os usuários podem ter MFA *ou* fazer login sem senha, com uma exceção: chaves de acesso com verificação de usuário podem atender aos requisitos de MFA quando você configura em seu grupo de usuários. `FactorConfiguration` `MULTI_FACTOR_WITH_USER_VERIFICATION` `WebAuthnConfiguration`
  + Você não pode definir o MFA como obrigatório em grupos de usuários que oferecem suporte a senhas de uso [único](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless).
  + Você não pode adicionar `EMAIL_OTP` ou aumentar `AllowedFirstAuthFactors` quando `SMS_OTP` a MFA é necessária em seu grupo de usuários. Você pode adicionar `WEB_AUTHN` quando `FactorConfiguration` está definido como`MULTI_FACTOR_WITH_USER_VERIFICATION`.
  + O [login baseado em opções](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) só oferece fatores `PASSWORD` e `PASSWORD_SRP` em todos os clientes da aplicação quando a MFA é necessária no grupo de usuários. Para obter mais informações sobre fluxos de nome de usuário e senha, consulte [Fazer login com senhas persistentes](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-password) e [Fazer login com senhas persistentes e carga útil segura](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-srp) no capítulo **Autenticação** deste guia.
  + Em grupos de usuários em que a MFA é opcional, os usuários que configuraram um fator de MFA só podem entrar com fluxos de autenticação de nome de usuário e senha no login baseado em opções. Esses usuários são elegíveis para todos os fluxos de [login baseado no cliente](authentication-flows-selection-sdk.md#authentication-flows-selection-client).

  A tabela a seguir descreve o efeito das configurações de MFA do grupo de usuários e da configuração dos fatores de MFA pelo usuário na capacidade de os usuários fazerem login com fatores sem senha.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/user-pool-settings-mfa.html)
+ 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](managing-users-passwords.md#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`.

  O exemplo de corpo da solicitação [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html#API_UpdateUserPool_Examples)ilustra um exemplo `AccountRecoverySetting` em que os usuários podem voltar à recuperação por mensagem SMS quando a redefinição de senha da mensagem de e-mail não está disponível.
+ 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 possuem 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.
+ Ao ativar a MFA em seu grupo de usuários e escolher **Mensagem de texto SMS** ou **Mensagem de e-mail** como um segundo fator, você pode enviar mensagens para um atributo de número de telefone ou e-mail que você não verificou no Amazon Cognito. Depois que o usuário conclui a MFA, o Amazon Cognito define o atributo `phone_number_verified` ou `email_verified` como `true`.
+ Depois de cinco tentativas malsucedidas de apresentar um código de MFA, o Amazon Cognito inicia o processo de bloqueio de tempo limite exponencial descrito em [Comportamento de bloqueio em tentativas fracassadas de login](authentication.md#authentication-flow-lockout-behavior).
+ Se sua conta estiver na sandbox de SMS Região da AWS que contém os recursos do Amazon Simple Notification Service (Amazon SNS) para seu grupo de usuários, você deve verificar os números de telefone no Amazon SNS antes de enviar uma mensagem SMS. Para obter mais informações, consulte [Configurações de mensagens SMS para grupos de usuários do Amazon Cognito](user-pool-sms-settings.md).
+ Para alterar o status da MFA dos usuários em resposta aos eventos detectados com proteção contra ameaças, ative a MFA e a defina como opcional no console do grupo de usuários do Amazon Cognito. Para obter mais informações, consulte [Segurança avançada com proteção contra ameaças](cognito-user-pool-settings-threat-protection.md).
+ As mensagens de e-mail e SMS exigem que seus usuários tenham atributos de endereço de e-mail e número de telefone, respectivamente. Você pode definir `email` ou `phone_number` como atributos obrigatórios do seu grupo de usuários. Nesse caso, os usuários não podem concluir o cadastro a menos que informem um número de telefone. Se você não definir esses atributos como obrigatórios, mas quiser usar a MFA para e-mail ou SMS, solicite aos usuários o endereço de e-mail ou número de telefone quando eles se cadastrarem. Como prática recomendada, configure seu grupo de usuários para enviar mensagens automáticas aos usuários para [verificar esses atributos](signing-up-users-in-your-app.md).

  O Amazon Cognito considera um número de telefone ou endereço de e-mail como verificado se um usuário recebeu com sucesso um código temporário por SMS ou mensagem de e-mail e devolveu esse código em uma solicitação de [VerifyUserAttribute](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifyUserAttribute.html)API. Como alternativa, sua equipe pode definir números de telefone e marcá-los como verificados com um aplicativo administrativo que realiza solicitações de [AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html)API.
+ Se você definiu a MFA como obrigatória e ativou mais de um fator de autenticação, o Amazon Cognito solicitará que novos os usuários selecionem um fator de MFA que queiram usar. Os usuários devem ter um número de telefone para configurar a MFA de mensagens SMS e um endereço de e-mail para configurar a MFA de mensagens de e-mail. Se um usuário não tiver o atributo definido para nenhuma MFA baseada em mensagem disponível, o Amazon Cognito solicitará que ele configure a MFA TOTP. A solicitação para escolher um fator de MFA (`SELECT_MFA_TYPE`) e configurar um fator escolhido (`MFA_SETUP`) surge como uma resposta desafiadora às operações [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)de [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)API.

## Preferências de MFA do usuário
<a name="user-pool-settings-mfa-preferences"></a>

Os usuários podem configurar vários fatores de MFA. Apenas um valor pode estar ativo. Você pode escolher a preferência efetiva de MFA para seus usuários nas configurações do grupo de usuários ou nas solicitações do usuário. Um grupo de usuários solicita que o usuário forneça códigos de MFA quando as configurações do grupo de usuários e suas próprias configurações em nível de usuário atendem às seguintes condições:

1. Você define a MFA como opcional ou obrigatória em seu grupo de usuários.

1. O usuário tem um atributo `phone_number` ou `email` válido ou configurou uma aplicação autenticadora para TOTP.

1. Pelo menos um fator de MFA está ativo.

1. Um fator de MFA é definido como preferencial.

### Evite o uso do mesmo fator para login e MFA
<a name="user-pool-settings-mfa-preferences-same-factor"></a>

É possível configurar seu grupo de usuários de forma que um fator de login seja a única opção de login e MFA disponível para alguns ou todos os usuários. Esse resultado pode ocorrer quando seu principal caso de uso de login são senhas de uso único por mensagem de e-mail ou mensagem SMS (). OTPs O MFA preferido de um usuário pode ser o mesmo tipo de fator de seu login nas seguintes condições:
+ O MFA é necessário no grupo de usuários.
+ O OTP por e-mail e SMS estão disponíveis nas opções de login e *MFA* no grupo de usuários.
+ O usuário faz login com e-mail ou mensagem SMS OTP.
+ Eles têm um atributo de endereço de e-mail, mas nenhum atributo de número de telefone, ou um atributo de número de telefone, mas nenhum atributo de endereço de e-mail.

Nesse cenário, o usuário pode entrar com uma OTP de e-mail e concluir o MFA com uma OTP de e-mail. Essa opção cancela a função essencial do MFA. Os usuários que fazem login com senhas de uso único devem poder usar métodos de entrega diferentes para fazer login e para MFA. Quando os usuários têm opções de SMS e e-mail, o Amazon Cognito atribui automaticamente um fator diferente. Por exemplo, quando um usuário faz login com OTP de e-mail, seu MFA preferido é SMS OTP.

Siga as etapas a seguir para abordar a autenticação do mesmo fator quando seu grupo de usuários oferece suporte à autenticação OTP para login e MFA.

1. Ative o OTP por e-mail e SMS como fatores de login.

1. Ative o OTP por e-mail e SMS como fatores de MFA.

1. Coletar

### Configurações do grupo de usuários e seus efeitos nas opções de MFA
<a name="user-pool-settings-mfa-preferences-things-to-know"></a>

A configuração do seu grupo de usuários influencia os métodos de MFA que os usuários podem escolher. A seguir estão algumas configurações do grupo de usuários que influenciam a capacidade dos usuários de configurar a MFA.
+ Na configuração **Autenticação multifator** no menu **Login** do console do Amazon Cognito, você pode definir a MFA como opcional ou obrigatória, ou desativá-la. O equivalente de API dessa configuração é o [MfaConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-MfaConfiguration)parâmetro de `CreateUserPool``UpdateUserPool`, `SetUserPoolMfaConfig` e.

  Além disso, na configuração de **Autenticação multifator**, a configuração de métodos de **MFA** determina os fatores de MFA que os usuários podem configurar. O equivalente da API a essa configuração é a [SetUserPoolMfaConfig](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserPoolMfaConfig.html)operação. 
+ No menu **Login**, em **Recuperação de conta de usuário**, você pode configurar como seu grupo de usuários envia mensagens aos usuários que esquecem a senha. O método de MFA de um usuário não pode ter o mesmo método de entrega de MFA do grupo de usuários para códigos de senha esquecida. O parâmetro da API para o método de entrega de senha esquecida é o [AccountRecoverySetting](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-AccountRecoverySetting)parâmetro de e. `CreateUserPool` `UpdateUserPool`

  Por exemplo, usuários não podem configurar a MFA do e-mail quando a opção de recuperação é **Somente e-mail**. Isso ocorre porque você não pode habilitar a MFA do e-mail e definir a opção de recuperação como **Somente e-mail** no mesmo grupo de usuários. Quando você define essa opção como **E-mail se disponível, ou SMS**, o e-mail é a opção prioritária de recuperação, mas seu grupo de usuários pode recorrer à mensagem SMS quando um usuário não está qualificado para a recuperação de mensagens de e-mail. Nesse cenário, os usuários podem definir a MFA do e-mail como preferencial e só podem receber uma mensagem SMS quando tentarem redefinir sua senha.
+ Se você definir apenas um método de MFA como disponível, não precisará gerenciar as preferências de MFA do usuário.
+ Uma configuração ativa de SMS torna automaticamente as mensagens SMS um método de MFA disponível em seu grupo de usuários.

  Uma [configuração de e-mail](user-pool-email.md) ativa com seus próprios recursos do Amazon SES em um grupo de usuários e o plano de recursos Essentials ou Plus torna automaticamente as mensagens de e-mail um método de MFA disponível em seu grupo de usuários.
+ Quando você define a MFA como obrigatória em um grupo de usuários, os usuários não podem habilitar ou desabilitar nenhum método de MFA. Você só pode definir um método preferencial.
+ Quando você define a MFA como opcional em um grupo de usuários, o login gerenciado não solicita que os usuários configurem a MFA, mas solicita que os usuários forneçam um código de MFA quando têm um método de MFA preferencial.
+ Quando você ativa a [proteção contra ameaças](cognito-user-pool-settings-threat-protection.md) e configura respostas de autenticação adaptativa no modo de função completa, a MFA deve ser opcional em seu grupo de usuários. Uma das opções de resposta com a autenticação adaptativa é exigir MFA para um usuário cuja tentativa de login é avaliada como contendo um nível de risco.

  A configuração **Atributos obrigatórios** no menu **Cadastrar-se** do console determina se os usuários devem fornecer um endereço de e-mail ou número de telefone para se cadastrar na aplicação. Mensagens de e-mail e SMS se tornam fatores elegíveis de MFA quando um usuário tem o atributo correspondente. O parâmetro [Schema](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-Schema) de `CreateUserPool` define os atributos como obrigatórios.
+ Quando você define a MFA como obrigatória em um grupo de usuários e um usuário faz login com o login gerenciado, o Amazon Cognito solicita que ele selecione um método de MFA dentre os métodos disponíveis para seu grupo de usuários. O login gerenciado trata da coleta de um endereço de e-mail ou um número de telefone e da configuração de TOTP. O diagrama a seguir demonstra a lógica por trás das opções que o Amazon Cognito apresenta aos usuários.

### Configurar preferências de MFA para usuários
<a name="user-pool-settings-mfa-preferences-configure"></a>

Você pode configurar as preferências de MFA para usuários em um modelo de autoatendimento com autorização de token de acesso ou em um modelo gerenciado pelo administrador com operações administrativas de API. Essas operações ativam ou desativam os métodos de MFA e definem um dos vários métodos como a opção preferencial. Depois que o usuário definir uma preferência de MFA, o Amazon Cognito solicitará que ele forneça um código do método de MFA preferencial no momento do login. Os usuários que não definiram uma preferência recebem uma solicitação para escolher um método preferencial em um desafio `SELECT_MFA_TYPE`.
+ Em um modelo de autoatendimento do usuário ou aplicativo público [SetUserMfaPreference](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserMFAPreference.html), autorizado com um token de acesso do usuário conectado, define a configuração da MFA.
+ Em um aplicativo confidencial ou gerenciado pelo administrador, autorizado com AWS credenciais administrativas [AdminSetUserPreference](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserMFAPreference.html), define a configuração da MFA.

Você também pode definir as preferências de MFA do usuário no menu **Usuários** do console do Amazon Cognito. Para obter mais informações sobre os modelos de autenticação pública e confidencial na API de grupos de usuários do Amazon Cognito, consulte [Noções básicas sobre a autenticação de API, OIDC e páginas de login gerenciado](authentication-flows-public-server-side.md#user-pools-API-operations).

## Detalhes da lógica de MFA no runtime do usuário
<a name="user-pool-settings-mfa-user-outcomes"></a>

Para determinar as etapas a serem tomadas quando os usuários fazem login, seu grupo de usuários avalia as preferências de MFA do usuário, [os atributos do usuário](user-pool-settings-attributes.md), a [configuração de MFA do grupo de usuários](#user-pool-configuring-mfa), as ações de [proteção contra ameaças](cognito-user-pool-settings-adaptive-authentication.md) e as configurações de [recuperação de contas de autoatendimento](managing-users-passwords.md#user-pool-password-reset-and-recovery). Em seguida, ele conecta os usuários, solicita que eles escolham um método de MFA, solicita que configurem um método de MFA ou solicita a MFA. Para configurar um método de MFA, os usuários devem fornecer um [endereço de e-mail ou número de telefone](user-pool-settings-mfa-sms-email-message.md) ou [registrar um autenticador TOTP](user-pool-settings-mfa-totp.md#totp-mfa-set-up-api). Eles também podem configurar opções de MFA e [registrar uma opção preferida](#user-pool-settings-mfa-preferences-configure) com antecedência. O diagrama a seguir lista os efeitos detalhados da configuração do grupo de usuários nas tentativas de login imediatamente após a inscrição inicial.

A lógica ilustrada aqui se aplica às aplicações baseados em SDK e ao [login gerenciado](cognito-user-pools-managed-login.md), mas é menos visível no login gerenciado. Ao solucionar problemas de MFA, retroceda dos resultados dos usuários para as configurações do perfil do usuário e do grupo de usuários que contribuíram para a decisão.

![\[Um diagrama do processo de decisão dos grupos de usuários do Amazon Cognito para a seleção de MFA do usuário final.\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/cup-mfa-decision-tree.png)


A lista a seguir corresponde à numeração no diagrama lógico de decisão e descreve cada etapa em detalhes. Um ![\[checkmark\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/checkmark.png) indica uma autenticação bem-sucedida e a conclusão do fluxo. Um ![\[error\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/error.png) indica uma autenticação malsucedida.

1. Um usuário apresenta o nome de usuário ou nome de usuário e senha na tela de login. Se ele não apresentar credenciais válidas, a solicitação de login será negada. 

1. Se ele conseguir a autenticação por nome de usuário e senha, determine se a MFA será obrigatória, opcional ou desativada. Se ela estiver desativada, o nome de usuário e a senha corretos resultarão em autenticação bem-sucedida. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/checkmark.png)

   1. Se a MFA for opcional, determine se o usuário configurou anteriormente um autenticador TOTP. Se ele tiver configurado o TOTP, solicite a MFA com TOTP. Se ele responder com sucesso ao desafio de MFA, o login será bem-sucedido. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/checkmark.png)

   1. Determine se o recurso de autenticação adaptável da proteção contra ameaças exigiu que o usuário configurasse a MFA. Se ele não tiver atribuído a MFA, o login será bem-sucedido. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/checkmark.png)

1. Se a MFA for necessária ou a autenticação adaptativa tiver atribuído a MFA, determine se o usuário definiu um fator de MFA como habilitado e preferencial. Se ele tiver, solicite a MFA com esse fator. Se ele responder com sucesso ao desafio de MFA, o login será bem-sucedido. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/checkmark.png)

1. Se o usuário não tiver definido uma preferência de MFA, determine se ele registrou um autenticador TOTP.

   1. Se o usuário registrou um autenticador TOTP, determine se a MFA com TOTP está disponível no grupo de usuários (a MFA com TOTP pode ser desabilitada após os usuários terem configurado previamente os autenticadores).

   1. Determine se a MFA por mensagem SMS ou de e-mail também está disponível no grupo de usuários.

   1.  Se nem a MFA do e-mail nem SMS estiverem disponíveis, solicite ao usuário a MFA com TOTP. Se ele responder com sucesso ao desafio de MFA, o login será bem-sucedido. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/checkmark.png)

   1. Se a MFA do e-mail ou SMS estiver disponível, determine se o usuário tem o atributo `email` ou `phone_number` correspondente. Nesse caso, qualquer atributo que não seja o método principal de recuperação de contas de autoatendimento e esteja habilitado para MFA estará disponível para ele.

   1. Solicite ao usuário um desafio `SELECT_MFA_TYPE` com opções `MFAS_CAN_SELECT` que incluem TOTP e os fatores de MFA disponíveis por SMS ou e-mail.

   1.  Solicite ao usuário o fator que ele selecionou em resposta ao desafio `SELECT_MFA_TYPE`. Se ele responder com sucesso ao desafio de MFA, o login será bem-sucedido. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/checkmark.png)

1. Se o usuário não registrou um autenticador TOTP, ou se o fez, mas a MFA com TOTP está atualmente desabilitada, determine se o usuário tem um atributo `email` ou `phone_number`.

1.  Se o usuário tiver somente um endereço de e-mail ou somente um número de telefone, determine se esse atributo também é o método que o grupo de usuários implementa para enviar mensagens de recuperação de conta para redefinição de senha. Nesse caso, ele não conseguirá concluir o login com a exigência de MFA e o Amazon Cognito retornará um erro. Para ativar o login desse usuário, você deverá adicionar um atributo de não recuperação ou registrar um autenticador TOTP para ele. ![\[alt text not found\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/error.png)

   1. Se ele tiver um endereço de e-mail ou número de telefone de não recuperação disponível, determine se o fator MFA do e-mail ou SMS correspondente está habilitado.

   1. Se ele tiver um atributo de endereço de e-mail de não recuperação e a MFA do e-mail estiver habilitada, solicite um desafio `EMAIL_OTP`. Se ele responder com sucesso ao desafio de MFA, o login será bem-sucedido. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/checkmark.png)

   1. Se ele tiver um atributo de número de telefone de não recuperação e a MFA do SMS estiver habilitada, solicite um desafio `SMS_MFA`. Se ele responder com sucesso ao desafio de MFA, o login será bem-sucedido. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/checkmark.png)

   1. Se ele não tiver um atributo qualificado para um fator de MFA do e-mail ou SMS habilitado, determine se a MFA com TOTP está habilitada. Se a MFA com TOTP estiver desabilitada, ele não conseguirá concluir o login com a exigência de MFA e o Amazon Cognito retornará um erro. Para ativar o login desse usuário, você deverá adicionar um atributo de não recuperação ou registrar um autenticador TOTP para ele. ![\[alt text not found\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/error.png)
**nota**  
Essa etapa já foi avaliada como **Não** se o usuário tiver um autenticador TOTP, mas a MFA com TOTP estiver desabilitada.

   1. Se a MFA com TOTP estiver habilitada, apresente ao usuário um desafio `MFA_SETUP` com `SOFTWARE_TOKEN_MFA` nas opções `MFAS_CAN_SETUP`. Para concluir esse desafio, você deve registrar separadamente um autenticador TOTP para o usuário e responder com `"ChallengeName": "MFA_SETUP", "ChallengeResponses": {"USERNAME": "[username]", "SESSION": "[Session ID from VerifySoftwareToken]}"`.

   1. Depois que o usuário responder ao `MFA_SETUP` desafio com o token de sessão de uma [VerifySoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifySoftwareToken.html)solicitação, solicite a ele um `SOFTWARE_TOKEN_MFA` desafio. Se ele responder com sucesso ao desafio de MFA, o login será bem-sucedido. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/checkmark.png)

1. Se o usuário tiver um endereço de e-mail e um número de telefone, determine qual atributo, se houver, é o principal método para mensagens de recuperação de conta para redefinição de senha.

   1. Se a recuperação de conta de autoatendimento estiver desabilitada, qualquer um dos atributos poderá ser usado para a MFA. Determine se um ou ambos os fatores de MFA do e-mail e SMS estão habilitados.

   1. Se ambos os atributos estiverem habilitados como um fator de MFA, solicite ao usuário um desafio `SELECT_MFA_TYPE` com as opções `MFAS_CAN_SELECT` `SMS_MFA` e `EMAIL_OTP`.

   1. Solicite ao usuário o fator que ele selecionou em resposta ao desafio `SELECT_MFA_TYPE`. Se ele responder com sucesso ao desafio de MFA, o login será bem-sucedido. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/checkmark.png)

   1. Se somente um atributo for um fator de MFA elegível, solicite que ele responda a um desafio para o fator restante. Se ele responder com sucesso ao desafio de MFA, o login será bem-sucedido. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/checkmark.png)

      Esse resultado acontece nos cenários a seguir.

      1. Quando ele tem os atributos `email` e `phone_number`, a MFA do SMS e e-mail estão habilitadas, e o principal método de recuperação da conta é por e-mail ou mensagem SMS.

      1. Quando ele tem os atributos `email` e `phone_number`, somente a MFA do SMS ou a MFA do e-mail está habilitada e a recuperação de conta de autoatendimento está desabilitada.

1. Se o usuário não tiver registrado um autenticador TOTP e não tiver um atributo `email` nem `phone_number`, solicite a ele um desafio `MFA_SETUP`. A lista em `MFAS_CAN_SETUP` inclui todos os fatores de MFA habilitados no grupo de usuários que não são a principal opção de recuperação de conta. Ele pode responder a esse desafio com `ChallengeResponses` para MFA do e-mail ou com TOTP. Para configurar a MFA do SMS, adicione um atributo de número de telefone separadamente e reinicie a autenticação.

   Para a MFA com TOTP, responda com `"ChallengeName": "MFA_SETUP", "ChallengeResponses": {"USERNAME": "[username]", "SESSION": "[Session ID from VerifySoftwareToken]"}`.

   Para a MFA do e-mail, responda com `"ChallengeName": "MFA_SETUP", "ChallengeResponses": {"USERNAME": "[username]", "email": "[user's email address]"}`.

   1. Solicite ao usuário o fator que ele selecionou em resposta ao desafio `SELECT_MFA_TYPE`. Se ele responder com sucesso ao desafio de MFA, o login será bem-sucedido. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/checkmark.png)

## Configurar um grupo de usuários para a autenticação multifator
<a name="user-pool-configuring-mfa"></a>

Você pode configurar o MFA no console do Amazon Cognito ou com a operação [SetUserPoolMfaConfig](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserPoolMfaConfig.html)da API e os métodos do SDK.

**Para configurar MFA no console do Amazon Cognito**

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**. Encontre **Autenticação multifator** e selecione **Editar**.

1. Escolha o método **MFA enforcement** (Aplicação de MFA) que você deseja usar com o grupo de usuários.  
![\[Uma captura de tela do console do Amazon Cognito com opções de MFA.\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/cup-mfa.png)

   1. **Solicite a MFA**. Todos os usuários do grupo de usuários devem fazer login com um código adicional de SMS, e-mail ou senha de uso único com marcação temporal (TOTP) como um fator de autenticação adicional.

   1. **MFA opcional**. MFA opcional: é possível oferecer aos usuários a opção de cadastrar um fator adicional de acesso e ainda permitir o acesso por usuários sem MFA configurada. Se você usar a autenticação adaptativa, escolha essa opção. Para obter mais informações sobre autenticação adaptativa, consulte [Segurança avançada com proteção contra ameaças](cognito-user-pool-settings-threat-protection.md).

   1. **Sem MFA**. Os usuários não podem registrar um fator adicional de login.

1. Escolha os **MFA methods** (Métodos de MFA) que você aceitará em sua aplicação. Você pode definir **Mensagem de e-mail**, **Mensagem SMS** ou **Aplicações autenticadoras** geradoras de TOTP como segundo fator.

1. Se usar mensagens de texto SMS como segundo fator e não tiver uma função do IAM configurada para usar com o Amazon Simple Notification Service(Amazon SNS) para mensagens de SMS, você poderá criar uma no console. No menu **Métodos de autenticação** do seu grupo de usuários, localize **SMS** e selecione **Editar**. Você também pode usar uma função existente que permita que o Amazon Cognito envie mensagens SMS aos usuários por você. Para obter mais informações, consulte [Perfis do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html).

   Se usar mensagens de e-mail como segundo fator e não tiver uma identidade de origem configurada para usar com o Amazon Simple Email Service (Amazon SES) para mensagens de e-mail, você poderá criar uma no console. Você deve escolher a opção **Enviar e-mail com SES**. No menu **Métodos de autenticação** do seu grupo de usuários, localize **E-mail** e selecione **Editar**. Selecione um **Endereço de e-mail do remetente** entre as identidades verificadas disponíveis na lista. Se você escolher um domínio verificado, por exemplo `example.com`, também deverá configurar um **Nome do remetente** no domínio verificado, por exemplo `admin-noreply@example.com`.

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

# MFA de mensagens SMS e e-mail
<a name="user-pool-settings-mfa-sms-email-message"></a>

As mensagens de MFA por SMS e e-mail confirmam que os usuários têm acesso a um destino de mensagem antes de poderem fazer login. Elas confirmam tanto o acesso a uma senha como às mensagens SMS ou à caixa de entrada de e-mail do usuário original. O Amazon Cognito solicita que os usuários informem um código curto que seu grupo de usuários envia após fornecerem com sucesso um nome de usuário e uma senha.

A MFA por SMS e e-mail não requer configuração adicional depois que o usuário adiciona um endereço de e-mail ou um número de telefone ao perfil. O Amazon Cognito pode enviar mensagens para endereços de e-mail e números de telefone não verificados. Quando um usuário conclui sua primeira MFA, o Amazon Cognito marca seu endereço de e-mail ou número de telefone como verificado.

A autenticação de MFA começa quando um usuário com MFA insere seu nome de usuário e senha na aplicação. Seu aplicativo envia esses parâmetros iniciais em um método SDK que invoca uma solicitação de API ou. [InitiateAuth[AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) Os `ChallengeParameters` na resposta da API incluem um valor `CODE_DELIVERY_DESTINATION` que indica para onde o código de autorização foi enviado. Na aplicação, exiba um formulário que solicite que o usuário verifique o telefone e inclua um elemento de entrada para o código. Quando ele inserir o código, envie-o em uma solicitação de API de desafio-resposta para concluir o processo de login.

Depois que o usuário com MFA faz login com nome de usuário e senha nas páginas do [login gerenciado](cognito-user-pools-managed-login.md), ele automaticamente precisa fornecer o código de MFA.

Os grupos de usuários enviam mensagens SMS para a MFA e outras notificações do Amazon Cognito com os recursos do Amazon Simple Notification Service (Amazon SNS) na Conta da AWS. Da mesma forma, grupos de usuários enviam mensagens de e-mail com os recursos do Amazon Simple Email Service (Amazon SES) em sua conta. Esses serviços vinculados incorrem em seus próprios custos em sua AWS fatura de entrega de mensagens. Eles também têm requisitos adicionais para enviar mensagens em volumes de produção. Para obter mais informações, consulte os seguintes links:
+ [Configurações de mensagens SMS para grupos de usuários do Amazon Cognito](user-pool-sms-settings.md)
+ [Preços de SMS no mundo](https://aws.amazon.com/sns/sms-pricing/)
+ [Configurações de e-mail para grupos de usuários do Amazon Cognito](user-pool-email.md)
+ [Definição de preços do Amazon SES](https://aws.amazon.com/ses/pricing)

## Considerações sobre MFA para SMS e mensagens de e-mail
<a name="user-pool-settings-mfa-sms-email-message-considerations"></a>
+ Para permitir que os usuários façam login com a MFA do e-mail, seu grupo de usuários deve ter as seguintes opções de configuração:

  1. Você tem o plano de recursos Plus ou Essentials em seu grupo de usuários. Para obter mais informações, consulte [Planos de recursos de grupos de usuários](cognito-sign-in-feature-plans.md).

  1. Seu grupo de usuários envia mensagens de e-mail com seus próprios recursos do Amazon SES. Para obter mais informações, consulte [Configuração de e-mail do Amazon SES](user-pool-email.md#user-pool-email-developer).
+ O código de MFA é válido para a **Duração da sessão de fluxo de autenticação** que você definiu para o cliente da aplicação.

  Defina a duração de uma sessão de fluxo de autenticação no console do Amazon Cognito na guia **Clientes da aplicação** ao **Editar** o cliente da aplicação. Você também pode definir a duração da sessão do fluxo de autenticação em uma solicitação de API `CreateUserPoolClient` ou `UpdateUserPoolClient`. Para obter mais informações, consulte [Um exemplo de sessão de autenticação](authentication.md#amazon-cognito-user-pools-authentication-flow).
+ Quando um usuário envia corretamente um código de uma mensagem SMS ou de e-mail que o Amazon Cognito enviou para um número de telefone ou endereço de e-mail não verificado, o Amazon Cognito marca o atributo correspondente como verificado.
+ Para que um usuário faça uma alteração por autoatendimento no valor de um número de telefone ou endereço de e-mail associado à MFA, ele deve entrar e autorizar a solicitação com um token de acesso. Se não conseguir acessar o número de telefone ou endereço de e-mail atual, ele não conseguirá fazer login. Sua equipe deve alterar esses valores com AWS as credenciais de administrador nas solicitações de [AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html)API.
+ Depois de [configurar o SMS](user-pool-sms-settings.md) em seu grupo de usuários, você não pode desativar as mensagens SMS como um fator de MFA disponível.

# MFA de token de software TOTP
<a name="user-pool-settings-mfa-totp"></a>

Quando você configura a MFA de token de software TOTP no grupo de usuários, o usuário faz login com um nome de usuário e senha e usa uma TOTP para concluir a autenticação. Depois que o usuário definir e verificar um nome de usuário e uma senha, ele poderá ativar um token de software TOTP para MFA. Se a sua aplicação usar o login gerenciado do Amazon Cognito para fazer login de usuários, o usuário enviará o nome de usuário e a senha e enviará a senha TOTP em uma página de login adicional.

Você pode ativar a MFA com TOTP para seu grupo de usuários no console do Amazon Cognito ou usar as operações da API do Amazon Cognito. No nível do grupo de usuários, você pode ligar [SetUserPoolMfaConfig](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserPoolMfaConfig.html)para configurar o MFA e habilitar o TOTP MFA.

**nota**  
Se a MFA de token do software TOTP não estiver habilitada para o grupo de usuários, o Amazon Cognito não poderá usar o token para associar nem verificar usuários. Nesse caso, os usuários recebem uma exceção `SoftwareTokenMFANotFoundException` com a descrição `Software Token MFA has not been enabled by the userPool`. Se você desativar a MFA do token de software mais tarde para o grupo de usuários, os usuários que já tiverem associado e verificado um token TOTP poderão continuar a usá-lo para a MFA.

A configuração da TOTP do usuário é um processo de várias etapas no qual o usuário recebe um código secreto que é validado com a digitação de uma senha de uso único. Em seguida, você pode ativar a MFA da TOTP para o usuário ou definir a TOTP como método de MFA preferencial para o seu usuário.

Quando você configura seu grupo de usuários para exigir a MFA com TOTP e os usuários se cadastram em sua aplicação no login gerenciado, o Amazon Cognito automatiza o processo do usuário. O Amazon Cognito solicita que o usuário selecione um método de MFA, exibe um código QR para configurar a aplicação autenticadora e verifica o registro de MFA. Em grupos de usuários em que você permitiu a escolha entre MFA por SMS e TOTP, o Amazon Cognito também oferece ao usuário uma opção de método.

**Importante**  
Quando você tem uma ACL AWS WAF da web associada a um grupo de usuários e uma regra na sua ACL da web apresenta um CAPTCHA, isso pode causar um erro irrecuperável no registro do TOTP de login gerenciado. Para criar uma regra que tenha uma ação de CAPTCHA e não afete a TOTP do login gerenciado, consulte [Configurando sua ACL AWS WAF da web para login gerenciado TOTP MFA](#totp-waf). Para obter mais informações sobre a AWS WAF web ACLs e o Amazon Cognito, consulte. [Associar uma ACL AWS WAF da web a um grupo de usuários](user-pool-waf.md)

Para implementar o TOTP MFA em uma interface de usuário personalizada com AWS um SDK e a API de grupos de usuários do [Amazon Cognito](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html), consulte. [Configurar a MFA com TOTP para um usuário](#totp-mfa-set-up-api)

Para adicionar MFA ao grupo de usuários, consulte [Adicionar MFA a um grupo de usuários](user-pool-settings-mfa.md).

**Considerações e limitações da MFA com TOTP**

1. O Amazon Cognito comporta MFA de token de software por meio de uma aplicação autenticadora que gera códigos TOTP. O Amazon Cognito não comporta MFA baseada em hardware.

1. Quando seu grupo de usuários requer uma TOTP para um usuário que não a configurou, o usuário recebe um token de acesso único que sua aplicação pode usar para ativar a MFA com TOTP para ele. Ocorrerá uma falha nas tentativas de login subsequentes enquanto o usuário não registrar um fator de login TOTP adicional.
   + O usuário que se inscreve em seu grupo de usuários com a operação de API `SignUp` ou pelo login gerenciado recebe tokens únicos ao concluir o cadastro.
   + Depois que você cria um usuário e o usuário define a senha inicial, o Amazon Cognito emite tokens únicos do login gerenciado para o usuário. Se você definir uma senha permanente para o usuário, o Amazon Cognito emitirá tokens únicos quando ele fizer login pela primeira vez.
   + O Amazon Cognito não emite tokens únicos para um usuário criado pelo administrador que faz login com as operações da API ou da API. [InitiateAuth[AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) Depois que seu usuário tiver êxito no desafio de definir a senha inicial ou se você definir uma senha permanente para ele, o Amazon Cognito imediatamente convidará o usuário a configurar a MFA.

1. Se um usuário em um grupo de usuários que requer MFA já tiver recebido um token de acesso único, mas não tiver configurado a MFA com TOTP, ele não poderá fazer login com o login gerenciado enquanto não configurar a MFA. Em vez do token de acesso, você pode usar o valor da `session` resposta de um `MFA_SETUP` desafio para [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)em uma [AssociateSoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AssociateSoftwareToken.html)solicitação.

1. Se os usuários tiverem configurado a TOTP, eles poderão usá-la para MFA, mesmo que, posteriormente, você a função do Lambda para o grupo de usuários.

1. O Amazon Cognito só aceita TOTPs aplicativos autenticadores que geram códigos com a função hash HMAC. SHA1 Os códigos gerados com o hash SHA-256 geram um erro `Code mismatch`.

## Configurar a MFA com TOTP para um usuário
<a name="totp-mfa-set-up-api"></a>

Quando um usuário faz login pela primeira vez, sua aplicação usa o token de acesso único para gerar a chave privada TOTP e apresentá-la ao usuário em formato de texto ou código QR. O usuário configura a aplicação autenticadora e fornece uma TOTP para tentativas de login subsequentes. Sua aplicação ou login gerenciado apresenta o TOTP para o Amazon Cognito nas respostas do desafio de MFA.

Em algumas circunstâncias, o login gerenciado solicita que novos usuários configurem um autenticador TOTP. Para obter mais informações, consulte [Detalhes da lógica de MFA no runtime do usuário](user-pool-settings-mfa.md#user-pool-settings-mfa-user-outcomes).

**Topics**
+ [Associar o token de software TOTP](#user-pool-settings-mfa-totp-associate-token)
+ [Verificar o token TOTP](#user-pool-settings-mfa-totp-verification)
+ [Faça login com MFA de TOTP](#user-pool-settings-mfa-totp-sign-in)
+ [Remover o token de TOTP](#user-pool-settings-mfa-totp-remove)

### Associar o token de software TOTP
<a name="user-pool-settings-mfa-totp-associate-token"></a>

Para associar o token TOTP, envie ao usuário um código secreto que ele deve validar com uma senha única. A associação do token requer três função do Lambdas.

1. Quando seu usuário escolher o token de software TOTP MFA, ligue [AssociateSoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AssociateSoftwareToken.html)para retornar um código-chave secreto compartilhado gerado exclusivo para a conta do usuário. Você pode autorizar AssociateSoftwareToken com um token de acesso ou uma string de sessão. 

1. Sua aplicação apresenta ao usuário a chave privada ou um código QR gerado por meio da chave privada. Seu usuário deve inserir a chave em uma aplicação geradora de TOTP, como o Google Authenticator, digitalizando o código QR que sua aplicação gera com base na chave privada ou inserindo a chave manualmente.

1. O usuário insere a chave ou digitaliza o código QR em uma aplicação autentiticadora, como o Google Authenticator, e a aplicação começa a gerar códigos.

### Verificar o token TOTP
<a name="user-pool-settings-mfa-totp-verification"></a>

Depois, verifique o token TOTP. Solicite códigos de exemplo de seu usuário e os forneça ao serviço Amazon Cognito para confirmar se o usuário está gerando códigos TOTP com êxito, da forma a seguir.

1. Sua aplicação solicita um código ao usuário para demonstrar que ele configurou a aplicação autenticadora corretamente.

1. A aplicação autenticadora do usuário exibe uma senha temporária. A aplicação autenticadora usa a chave secreta que você forneceu ao usuário como base para a senha.

1. O usuário insere a senha temporária. Sua aplicação transmite a senha temporária para o Amazon Cognito em uma solicitação de API `[VerifySoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifySoftwareToken.html)`.

1.  O Amazon Cognito mantém a chave secreta associada ao usuário e gera uma TOTP e a compara com a que o usuário forneceu. Se elas corresponderem, o `VerifySoftwareToken` retornará uma resposta `SUCCESS`.

1. O Amazon Cognito associa o fator TOTP ao usuário.

1. Se a operação `VerifySoftwareToken` retornar uma resposta `ERROR`, verifique se o relógio do usuário está correto e se ele não excedeu o número máximo de novas tentativas. O Amazon Cognito aceita tokens TOTP 30 segundos antes ou depois da tentativa, para que haja uma distorção mínima no relógio. Depois de resolver o problema, tente a VerifySoftwareToken operação novamente.

### Faça login com MFA de TOTP
<a name="user-pool-settings-mfa-totp-sign-in"></a>

Nesse ponto, o usuário faz login com a senha única baseada em tempo. O processo ocorre conforme a seguir.

1. O usuário digita o nome de usuário e a senha para fazer login em sua aplicação cliente.

1. O desafio da MFA de TOTP é invocado e o usuário é solicitado pela sua aplicação a inserir uma senha temporária.

1. O usuário obtém a senha temporária de um aplicativo gerador de TOTP associado.

1. O usuário informa o código da TOTP no seu aplicativo cliente. A aplicação notifica o serviço do Amazon Cognito para verificá-lo. Para cada login, [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)deve ser chamado para obter uma resposta ao novo desafio de autenticação TOTP.

1. Se o token for verificado pelo Amazon Cognito, o login será bem-sucedido e o usuário continuará com o fluxo de autenticação. 

### Remover o token de TOTP
<a name="user-pool-settings-mfa-totp-remove"></a>

Por fim, a aplicação deve permitir que o usuário desative a configuração do TOTP. No momento, você não poderá excluir o token de software TOTP de um usuário. Para substituir o token de software do usuário, associe e confirme um novo token de software. Para desativar o TOTP MFA para um usuário, ligue para modificar seu usuário [SetUserMFAPreference](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserMFAPreference.html)para não usar nenhum MFA ou somente MFA por SMS.

1. Crie uma interface na aplicação para usuários que desejam redefinir a MFA. Solicite que um usuário nessa interface insira a senha.

1. Se o Amazon Cognito retornar um desafio de MFA TOTP, atualize a preferência de MFA do seu usuário com. [SetUserMFAPreference](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserMFAPreference.html)

1. Na aplicação, comunique ao usuário que ele desativou a MFA e solicite que ele faça login novamente.

## Configurando sua ACL AWS WAF da web para login gerenciado TOTP MFA
<a name="totp-waf"></a>

Quando você tem uma ACL AWS WAF da web associada a um grupo de usuários e uma regra na sua ACL da web apresenta um CAPTCHA, isso pode causar um erro irrecuperável no registro do TOTP de login gerenciado. AWS WAF As regras de CAPTCHA *só* têm esse efeito no TOTP MFA no login gerenciado e na interface de usuário hospedada clássica. A MFA por SMS não é afetada.

O Amazon Cognito exibe o erro a seguir quando a regra de CAPTCHA não permite que um usuário conclua a configuração da MFA com TOTP. 

Solicitação não permitida devido ao captcha do WAF.

Esse erro ocorre quando AWS WAF solicita um CAPTCHA em resposta a [AssociateSoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AssociateSoftwareToken.html)solicitações de [VerifySoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifySoftwareToken.html)API que seu grupo de usuários faz em segundo plano. Para criar uma regra que tenha uma ação de CAPTCHA e não afete o TOTP do login gerenciado, exclua os valores `AssociateSoftwareToken` e `VerifySoftwareToken` do cabeçalho `x-amzn-cognito-operation-name` da ação de CAPTCHA em sua regra.

A captura de tela a seguir mostra um exemplo de AWS WAF regra que aplica uma ação CAPTCHA a todas as solicitações que não têm um valor de `x-amzn-cognito-operation-name` cabeçalho de ou. `AssociateSoftwareToken` `VerifySoftwareToken`

![\[Uma captura de tela de uma AWS WAF regra que aplica uma ação CAPTCHA a todas as solicitações que não têm um valor de x-amzn-cognito-operation-name cabeçalho de ou. AssociateSoftwareToken VerifySoftwareToken\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/cup-WAF-rule-TOTP.png)


Para obter mais informações sobre a AWS WAF web ACLs e o Amazon Cognito, consulte. [Associar uma ACL AWS WAF da web a um grupo de usuários](user-pool-waf.md)

# Segurança avançada com proteção contra ameaças
<a name="cognito-user-pool-settings-threat-protection"></a>

Depois de criar o grupo de usuários, você terá acesso à **Proteção contra ameaças** no menu de navegação do console do Amazon Cognito. Você pode ativar os recursos de proteção contra ameaças e personalizar as ações executadas em resposta a riscos diferentes. Outra opção é usar o modo de auditoria para coletar métricas sobre riscos detectados sem aplicar mitigação de segurança. No modo de auditoria, a proteção contra ameaças publica métricas na Amazon CloudWatch. Você verá métricas depois que o Amazon Cognito gerar o primeiro evento. Consulte [Como exibir métricas de proteção contra ameaças](metrics-for-cognito-user-pools.md#user-pool-settings-viewing-threat-protection-metrics).

A proteção contra ameaças, anteriormente chamada de *recursos avançados de segurança*, é um conjunto de ferramentas de monitoramento de atividades indesejadas em seu grupo de usuários e ferramentas de configuração para encerrar automaticamente atividades possivelmente mal-intencionadas. A proteção contra ameaças tem diferentes opções de configuração para operações de autenticação padrão e personalizadas. Por exemplo, você pode querer enviar uma notificação a um usuário com um login suspeito de autenticação personalizada, no qual você configurou fatores de segurança adicionais, mas bloqueou o usuário no mesmo nível de risco com a autenticação básica por nome de usuário e senha.

A proteção contra ameaças está disponível no plano de recursos Plus. Para obter mais informações, consulte [Planos de recursos de grupos de usuários](cognito-sign-in-feature-plans.md).

As opções de grupos de usuários a seguir são os componentes da proteção contra ameaças.

**Credenciais comprometidas**  
Os usuários reutilizam senhas para várias contas de usuário. O recurso de credenciais comprometidas do Amazon Cognito compila dados de vazamentos públicos de nomes de usuário e senhas e compara as credenciais de seus usuários com listas de credenciais vazadas. A detecção de credenciais comprometidas também verifica se há senhas que possam ser deduzidas com facilidade. Você pode verificar se há credenciais comprometidas em fluxos de autenticação username-and-password padrão em grupos de usuários. O Amazon Cognito não detecta credenciais comprometidas na senha remota segura (SRP) ou na autenticação personalizada.  
Você pode selecionar as ações do usuário que solicitam a verificação de credenciais comprometidas e a ação que você deseja que o Amazon Cognito realize em resposta. Para eventos de login, inscrição e alteração de senha, o Amazon Cognito pode **Bloquear login** ou **Permitir login**. Nos dois casos, o Amazon Cognito gera um log de atividades do usuário. Nele, você pode encontrar mais informações sobre o evento.  
**Saiba mais**  
[Trabalhar com a detecção de credenciais comprometidas](cognito-user-pool-settings-compromised-credentials.md)

**Autenticação adaptável**  
O Amazon Cognito pode revisar as informações de localização e dispositivo das solicitações de login dos usuários e aplicar uma resposta automática para proteger as contas de usuário no grupo de usuários contra atividades suspeitas. Você pode monitorar a atividade do usuário e automatizar as respostas aos níveis de risco detectados no nome de usuário, senha e SRP, além da autenticação personalizada.  
Quando você ativa a proteção contra ameaças, o Amazon Cognito atribui uma pontuação de risco à atividade do usuário. Você pode atribuir uma resposta automática a atividades suspeitas: é possível **Exigir MFA**, **Bloquear login** ou apenas registrar os detalhes da atividade e a pontuação de risco. Você também pode enviar automaticamente mensagens de e-mail que notificam o usuário sobre a atividade suspeita para que ele possa redefinir a senha ou realizar outras ações autoguiadas.  
**Saiba mais**  
[Trabalhar com autenticação adaptável](cognito-user-pool-settings-adaptive-authentication.md)

**Lista de endereços IP permitidos e negados**  
Com a proteção contra ameaças do Amazon Cognito no **Modo de função completa**, você pode criar as exceções **Sempre bloquear** e **Sempre permitir** para o endereço IP. Uma sessão de um endereço IP na lista de exceções **Always block** (Bloquear sempre) não recebe um nível de risco por autenticação adaptativa e não pode fazer login no grupo de usuários.  

**O que você deve saber sobre listas de permissões e listas de bloqueio de endereços IP**
+ Você deve expressar **Sempre bloquear** e **Sempre permitir** no formato CIDR, por exemplo `192.0.2.0/24`, uma máscara de 24 bits ou `192.0.2.252/32`, um único endereço IP.
+  Dispositivos com endereços IP em um intervalo de IP **Always block** não podem se inscrever ou fazer login com aplicativos de login gerenciados ou baseados em SDK, mas podem fazer login com terceiros. IdPs 
+ As listas **Sempre permitir** e **Sempre bloquear** não afetam a atualização do token.
+ O Amazon Cognito não aplica regras de MFA de autenticação adaptável a dispositivos de um intervalo de IP **Sempre permitir**, mas aplica regras de credenciais comprometidas.

**Exportação de log**  
A proteção contra ameaças registra detalhes granulares das solicitações de autenticação dos usuários em seu grupo de usuários. Esses registros apresentam avaliações de ameaças, informações do usuário e metadados da sessão, como localização e dispositivo. Você pode criar arquivos externos desses logs para retenção e análise. Os grupos de usuários do Amazon Cognito exportam registros de proteção contra ameaças para o Amazon S3 CloudWatch , o Logs e o Amazon Data Firehose. Para obter mais informações, consulte [Como exibir e exportar o histórico de eventos do usuário](cognito-user-pool-settings-adaptive-authentication.md#user-pool-settings-adaptive-authentication-event-user-history).  
**Saiba mais**  
[Exportar logs de atividade de usuários de proteção contra ameaças](exporting-quotas-and-usage.md#exporting-quotas-and-usage-user-activity)

**Topics**
+ [Considerações e limitações da proteção contra ameaças](#cognito-user-pool-threat-protection-considerations)
+ [Ativar a proteção contra ameaças em grupos de usuários](#cognito-user-pool-threat-protection-activating)
+ [Conceitos de aplicação da proteção contra ameaças](#cognito-user-pool-settings-threat-protection-threat-protection-enforcement)
+ [Proteção contra ameaças para autenticação padrão e autenticação personalizada](#cognito-user-pool-settings-threat-protection-threat-protection-types)
+ [Pré-requisitos de proteção contra ameaças](#cognito-user-pool-threat-protection-prerequisites)
+ [Configurar a proteção contra ameaças](#cognito-user-pool-settings-configure-threat-protection)
+ [Trabalhar com a detecção de credenciais comprometidas](cognito-user-pool-settings-compromised-credentials.md)
+ [Trabalhar com autenticação adaptável](cognito-user-pool-settings-adaptive-authentication.md)
+ [Coletar dados para proteção contra ameaças em aplicações](user-pool-settings-viewing-threat-protection-app.md)

## Considerações e limitações da proteção contra ameaças
<a name="cognito-user-pool-threat-protection-considerations"></a>

**As opções de proteção contra ameaças diferem entre os fluxos de autenticação**  
O Amazon Cognito aceita tanto a autenticação adaptativa quanto a detecção de credenciais comprometidas com os fluxos de autenticação `USER_PASSWORD_AUTH` e `ADMIN_USER_PASSWORD_AUTH`. Você só pode habilitar a autenticação adaptável para `USER_SRP_AUTH`. Não é possível usar a proteção contra ameaças com login federado.

**Sempre bloqueie a IPs contribuição para solicitar cotas**  
Solicitações bloqueadas de endereços IP em uma lista de exceções **Always block** (Bloquear sempre) em seu grupo de usuários contribuem para as [cotas de taxas de solicitação](https://docs.aws.amazon.com/cognito/latest/developerguide/limits.html#category_operations) de seus grupos de usuários.

**A proteção contra ameaças não aplica limites de taxa**  
Alguns tráfegos maliciosos têm a característica de um alto volume de solicitações, como ataques distribuídos de negação de serviço (DDoS). As classificações de risco que o Amazon Cognito aplica ao tráfego de entrada são por solicitação e não levam em conta o volume de solicitações. Solicitações individuais em um evento de alto volume podem receber uma pontuação de risco e uma resposta automática por motivos da camada de aplicação que não estão relacionados à sua função em um ataque volumétrico. Para implementar defesas contra ataques volumétricos em seus grupos de usuários, adicione web. AWS WAF ACLs Para obter mais informações, consulte [Associar uma ACL AWS WAF da web a um grupo de usuários](user-pool-waf.md).

**A proteção contra ameaças não afeta as solicitações M2M**  
As concessões de credenciais do cliente são destinadas à autorização machine-to-machine (M2M) sem conexão com contas de usuário. A proteção contra ameaças monitora somente contas e senhas de usuários em seu grupo de usuários. Para implementar recursos de segurança com sua atividade M2M, considere os recursos de AWS WAF monitorar as taxas e o conteúdo das solicitações. Para obter mais informações, consulte [Associar uma ACL AWS WAF da web a um grupo de usuários](user-pool-waf.md).

## Ativar a proteção contra ameaças em grupos de usuários
<a name="cognito-user-pool-threat-protection-activating"></a>

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

**Como ativar a proteção contra ameaças para um 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. 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. Se ainda não o fez, ative o plano de recursos Plus no menu **Configurações**.

1. Clique no menu **Proteção contra ameaças** e selecione **Ativar**.

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

------
#### [ API ]

Defina seu plano de recursos como Plus em 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. O exemplo parcial de corpo de solicitação a seguir define a proteção contra ameaças para o modo de função completa. Para ver um exemplo completo de solicitação, consulte [Exemplos](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#API_CreateUserPool_Examples).

```
"UserPoolAddOns": { 
      "AdvancedSecurityMode": "ENFORCED"
   }
```

------

Proteção contra ameaças é o termo coletivo para os recursos que monitoram as operações do usuário em busca de sinais de invasão da conta e respondem automaticamente para proteger as contas de usuários afetadas. Você pode aplicar configurações de proteção contra ameaças aos usuários quando eles fazem login com fluxos de autenticação padrão e personalizados.

A proteção contra ameaças [gera](cognito-user-pool-settings-adaptive-authentication.md#user-pool-settings-adaptive-authentication-event-user-history) registros que detalham o login, a saída e outras atividades dos usuários. Você poderá exportar esses logs para um sistema de terceiros. Para obter mais informações, consulte [Como exibir e exportar o histórico de eventos do usuário](cognito-user-pool-settings-adaptive-authentication.md#user-pool-settings-adaptive-authentication-event-user-history).

## Conceitos de aplicação da proteção contra ameaças
<a name="cognito-user-pool-settings-threat-protection-threat-protection-enforcement"></a>

A proteção contra ameaças começa em um modo *somente de auditoria*, em que seu grupo de usuários monitora a atividade do usuário, atribui níveis de risco e gera logs. Como prática recomendada, execute no modo somente de auditoria por duas semanas ou mais antes de ativar o modo de função *completa*. O modo de função completa inclui um conjunto de reações automáticas às atividades de risco detectadas e senhas comprometidas. Com o modo somente de auditoria, você pode monitorar as avaliações de ameaças que o Amazon Cognito está realizando. Você também pode [fornecer feedback](cognito-user-pool-settings-adaptive-authentication.md#user-pool-settings-adaptive-authentication-feedback) para treinar o recurso sobre falsos positivos e negativos.

Você pode configurar a aplicação da proteção contra ameaças no nível do grupo de usuários para cobrir todos os clientes da aplicação no grupo de usuários e no nível de clientes de aplicações individuais. As configurações de proteção contra ameaças do cliente de aplicação substituem a configuração do grupo de usuários. Para configurar a proteção contra ameaças para um cliente de aplicação, navegue até as configurações do cliente de aplicação no menu **Clientes da aplicação** do seu grupo de usuários no console do Amazon Cognito. Lá, você pode **Usar s configurações no nível do cliente** e configurar a aplicação exclusiva para o cliente de aplicação.

Além disso, você pode configurar a proteção contra ameaças separadamente para os tipos de autenticação padrão e personalizada.

## Proteção contra ameaças para autenticação padrão e autenticação personalizada
<a name="cognito-user-pool-settings-threat-protection-threat-protection-types"></a>

As formas de configurar a proteção contra ameaças dependem do tipo de autenticação que você está fazendo em seu grupo de usuários e clientes de aplicação. Cada um dos seguintes tipos de autenticação pode ter seu próprio modo de aplicação e respostas automatizadas:

**Autenticação padrão**  
A *autenticação padrão* é o gerenciamento de login, saída e senhas do usuário com fluxos de nome de usuário e senha e no login gerenciado. A proteção contra ameaças do Amazon Cognito monitora as operações em busca de indicadores de risco quando elas fazem login com o login gerenciado ou usam os seguintes parâmetros da API `AuthFlow`:    
**[InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-AuthFlow)**  
`USER_PASSWORD_AUTH`, `USER_SRP_AUTH`. O recurso de credenciais comprometidas não tem acesso às senhas no login `USER_SRP_AUTH` e não monitora nem gerencia eventos com esse fluxo.  
**[AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#CognitoUserPools-AdminInitiateAuth-request-AuthFlow)**  
`ADMIN_USER_PASSWORD_AUTH`, `USER_SRP_AUTH`. O recurso de credenciais comprometidas não tem acesso às senhas no login `USER_SRP_AUTH` e não monitora nem gerencia eventos com esse fluxo.
Você pode definir o **Modo de imposição** para autenticação padrão como **Somente auditoria** ou **Função completa**. Para desabilitar o monitoramento de ameaças para autenticação padrão, defina proteção contra ameaças como **Sem imposição**.

**Autenticação personalizada**  
A *Autenticação personalizada* é o login do usuário com [acionadores personalizados do Lambda de desafio](user-pool-lambda-challenge.md). Não é possível fazer autenticação personalizada no login gerenciado. A proteção contra ameaças do Amazon Cognito monitora as operações em busca de indicadores de risco quando elas fazem login com o parâmetro `AuthFlow` da API de `InitiateAuth` e `AdminInitiateAuth`.  
Você pode definir o **Modo de imposição** para autenticação personalizada como **Somente auditoria**, **Função completa** ou **Sem imposição**. A opção **Sem imposição** desabilita o monitoramento de ameaças para autenticação personalizada sem afetar outros recursos da proteção contra ameaças.

## Pré-requisitos de proteção contra ameaças
<a name="cognito-user-pool-threat-protection-prerequisites"></a>

Antes de começar, você precisará fazer o seguinte:
+ Um grupo de usuários com um cliente de aplicativo. Para obter mais informações, consulte [Conceitos básicos dos grupos de usuários](getting-started-user-pools.md).
+ Defina a autenticação multifator (MFA) como **Optional** (Opcional) no console do Amazon Cognito para usar o recurso de autenticação adaptável com base em risco. Para obter mais informações, consulte [Adicionar MFA a um grupo de usuários](user-pool-settings-mfa.md).
+ Se você estiver usando notificações por e-mail, acesse o [console do Amazon SES](https://console.aws.amazon.com/ses/home) para configurar e verificar um endereço de e-mail ou um domínio a ser usado com suas notificações. Para obter mais informações sobre o Amazon SES, consulte [Verificar identidades no Amazon SES](https://docs.aws.amazon.com/ses/latest/dg/verify-addresses-and-domains.html).

## Configurar a proteção contra ameaças
<a name="cognito-user-pool-settings-configure-threat-protection"></a>

Siga estas instruções para configurar a proteção contra ameaças do grupo de usuários.

**nota**  
Para definir uma configuração diferente de proteção contra ameaças para um cliente de aplicação no console de grupos de usuários do Amazon Cognito, selecione o cliente de aplicação no menu **Clientes da aplicação** e escolha **Usar configurações no nível do cliente**.

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

**Como configurar a proteção contra ameaças para um 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. 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 **Proteção contra ameaças** e selecione **Ativar**.

1. Escolha o método de proteção contra ameaças que você deseja configurar: **Autenticação padrão e personalizada**. Você pode definir diferentes modos de aplicação para autenticações personalizada e padrão, mas eles compartilham a configuração de respostas automatizadas no modo de **Função completa**.

1. Selecione **Editar**.

1. Escolha um **Modo de aplicação**. Para começar a responder imediatamente aos riscos detectados, selecione **Função completa** e configure as respostas automatizadas para credenciais comprometidas e autenticação adaptável. Para coletar informações em registros e entradas em nível de usuário CloudWatch, selecione **Somente auditoria**.

   Recomendamos manter a proteção contra ameaças no modo de auditoria por duas semanas antes de ativar as ações. Durante esse tempo, o Amazon Cognito pode aprender os padrões de uso dos usuários da aplicação, e você pode fornecer feedback de eventos para ajustar as respostas.

1. Se tiver selecionado **Audit only** (Somente auditoria), escolha **Save changes** (Salvar alterações). Se tiver selecionado **Full function** (Função completa):

   1. Selecione se vai executar uma ação **Custom** (Personalizada) ou usar **Cognito defaults** (Padrões do Cognito) para responder a **Compromised credentials** (Credenciais comprometidas) suspeitas. Os **padrões do Cognito** são:

      1. Detectar credenciais comprometidas ao **Acessar**, **Cadastrar-se**, e **Alterar senha**.

      1. Responder a credenciais comprometidas com a ação **Block sign-in** (Bloquear acesso).

   1. Se tiver selecionado ações **Personalizadas** para **Credenciais comprometidas**, escolha as ações do grupo de usuários que o Amazon Cognito usará para **Detecção de eventos** e as **Respostas a credenciais comprometidas** que deseja que o Amazon Cognito adote. É possível **Block sign-in** (Bloquear acesso) ou **Allow sign-in** (Permitir acesso) com credenciais comprometidas suspeitas.

   1. Escolha como responder a tentativas maliciosas de acesso em **Adaptive authentication** (Autenticação adaptável). Selecione se vai executar uma ação **Custom** (Personalizada) ou usar **Cognito defaults** (Padrões do Cognito) para responder a atividades maliciosas suspeitas. Quando você seleciona **Cognito defaults** (Padrões do Cognito), o Amazon Cognito bloqueia o acesso em todos os níveis de risco e não notifica o usuário.

   1. Se tiver selecionado ações **Custom** (Personalizadas) para **Adaptive authentication** (Autenticação adaptável), escolha as ações de **Automatic risk response** (Resposta automática a riscos) que o Amazon Cognito adotará em resposta aos riscos detectados com base no nível de gravidade. Quando você atribui uma resposta a um nível de risco, não é possível atribuir uma resposta menos restritiva a um nível de risco mais alto. Você pode atribuir as seguintes respostas aos níveis de risco:

      1. **Allow sign-in** (Permitir acesso): não tomar nenhuma ação preventiva.

      1. **Optional MFA** (MFA opcional): se o usuário tiver a MFA configurada, o Amazon Cognito sempre vai exigir que o usuário forneça um fator adicional de SMS ou senha de uso único com marcação temporal (TOTP) quando fizer o acesso. Se o usuário não tiver a MFA configurada, ele poderá continuar fazendo o acesso normalmente.

      1. **Require MFA** (Exigir MFA): se o usuário tiver a MFA configurada, o Amazon Cognito sempre vai exigir que o usuário forneça um fator adicional de SMS ou TOTP quando fizer o acesso. Se o usuário não tiver a MFA configurada, o Amazon Cognito solicitará que ele configure a MFA. Antes de exigir automaticamente a MFA de seus usuários, configure um mecanismo em sua aplicação para capturar números de telefone para MFA via SMS ou para registrar aplicações autenticadoras para MFA com TOTP.

      1. **Block sign-in** (Bloquear acesso): impedir que o usuário faça o acesso.

      1. **Notify user** (Notificar o usuário): enviar uma mensagem de e-mail para o usuário com informações sobre o risco que o Amazon Cognito detectou e a resposta adotada. Você pode personalizar modelos de mensagem de e-mail para as mensagens enviadas.

1. Se tiver escolhido **Notify user** (Notificar o usuário) na etapa anterior, você pode personalizar suas configurações de entrega de e-mail e modelos de mensagem de e-mail para autenticação adaptativa.

   1. Em **Configuração de e-mail**, escolha os valores para **Região SES**, **Endereço de e-mail do remetente**, **Nome do remetente** e **Endereço de e-mail do destinatário** que você deseja usar com a autenticação adaptativa. Para obter mais informações sobre como integrar as mensagens de e-mail do grupo de usuários ao Amazon Simple Email Service, consulte [Configurações de e-mail dos grupos de usuários do Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-email.html).  
![\[Histórico de eventos do usuário\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/cup-advanced-security-ses-notification.png)

   1. Expanda **Email templates** (Modelos de e-mail) para personalizar as notificações de autenticação adaptativa com as versões de mensagens de e-mail HTML e de texto simples. Para saber mais sobre modelos de mensagem de e-mail, consulte [Modelos de mensagens](cognito-user-pool-settings-message-customizations.md#cognito-user-pool-settings-message-templates).

1. Expanda **as exceções de endereço IP** para criar uma lista **sempre permitida** ou **sempre bloqueada** ou intervalos de IPv6 endereços que sempre serão permitidos IPv4 ou bloqueados, independentemente da avaliação de risco de proteção contra ameaças. Especifique os intervalos de endereços IP em [CIDR notation](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation) (Notação CIDR) (por exemplo, 192.168.100.0/24).

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

------
#### [ API (user pool) ]

Para definir a configuração de proteção contra ameaças para um grupo de usuários, envie uma solicitação de [SetRiskConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetRiskConfiguration.html)API que inclua um `UserPoolId` parâmetro, mas não um `ClientId` parâmetro. Veja a seguir um exemplo de corpo da solicitação para um grupo de usuários. Essa configuração de risco executa uma série crescente de ações com base na gravidade do risco e notifica os usuários em todos os níveis de risco. Ela aplica um bloco de credenciais comprometidas às operações de cadastro.

Para aplicar essa configuração, você deve `AdvancedSecurityMode` defini-la `ENFORCED` em uma solicitação separada [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)ou de [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)API. Para obter mais informações sobre os modelos de espaço reservado, como `{username}` neste exemplo, consulte [Configurar mensagens de MFA, autenticação, verificação e convite](cognito-user-pool-settings-message-customizations.md).

```
{
   "AccountTakeoverRiskConfiguration": { 
      "Actions": { 
         "HighAction": { 
            "EventAction": "MFA_REQUIRED",
            "Notify": true
         },
         "LowAction": { 
            "EventAction": "NO_ACTION",
            "Notify": true
         },
         "MediumAction": { 
            "EventAction": "MFA_IF_CONFIGURED",
            "Notify": true
         }
      },
      "NotifyConfiguration": { 
         "BlockEmail": { 
            "Subject": "You have been blocked for suspicious activity",
            "TextBody": "We blocked {username} at {login-time} from {ip-address}."
         },
         "From": "admin@example.com",
         "MfaEmail": { 
            "Subject": "Suspicious activity detected, MFA required",
            "TextBody": "Unexpected sign-in from {username} on device {device-name}. You must use MFA."
         },
         "NoActionEmail": { 
            "Subject": "Suspicious activity detected, secure your user account",
            "TextBody": "We noticed suspicious sign-in activity by {username} from {city}, {country} at {login-time}. If this was not you, reset your password."
         },
         "ReplyTo": "admin@example.com",
         "SourceArn": "arn:aws:ses:us-west-2:123456789012:identity/admin@example.com"
      }
   },
   "CompromisedCredentialsRiskConfiguration": { 
      "Actions": { 
         "EventAction": "BLOCK"
      },
      "EventFilter": [ "SIGN_UP" ]
   },
   "RiskExceptionConfiguration": { 
      "BlockedIPRangeList": [ "192.0.2.0/24","198.51.100.0/24" ],
      "SkippedIPRangeList": [ "203.0.113.0/24" ]
   },
   "UserPoolId": "us-west-2_EXAMPLE"
}
```

------
#### [ API (app client) ]

Para definir a configuração de proteção contra ameaças para um cliente de aplicativo, envie uma solicitação de [SetRiskConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetRiskConfiguration.html)API que inclua um `UserPoolId` parâmetro e um `ClientId` parâmetro. Veja a seguir um exemplo de corpo da solicitação de um cliente de aplicação. Essa configuração de risco é mais severa do que a configuração do grupo de usuários, pois bloqueia entradas de alto risco. Também aplica blocos de credenciais comprometidas às operações de cadastro, login e redefinição de senha.

Para aplicar essa configuração, você deve `AdvancedSecurityMode` defini-la `ENFORCED` em uma solicitação separada [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)ou de [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)API. Para obter mais informações sobre os modelos de espaço reservado, como `{username}` neste exemplo, consulte [Configurar mensagens de MFA, autenticação, verificação e convite](cognito-user-pool-settings-message-customizations.md).

```
{
   "AccountTakeoverRiskConfiguration": { 
      "Actions": { 
         "HighAction": { 
            "EventAction": "BLOCK",
            "Notify": true
         },
         "LowAction": { 
            "EventAction": "NO_ACTION",
            "Notify": true
         },
         "MediumAction": { 
            "EventAction": "MFA_REQUIRED",
            "Notify": true
         }
      },
      "NotifyConfiguration": { 
         "BlockEmail": { 
            "Subject": "You have been blocked for suspicious activity",
            "TextBody": "We blocked {username} at {login-time} from {ip-address}."
         },
         "From": "admin@example.com",
         "MfaEmail": { 
            "Subject": "Suspicious activity detected, MFA required",
            "TextBody": "Unexpected sign-in from {username} on device {device-name}. You must use MFA."
         },
         "NoActionEmail": { 
            "Subject": "Suspicious activity detected, secure your user account",
            "TextBody": "We noticed suspicious sign-in activity by {username} from {city}, {country} at {login-time}. If this was not you, reset your password."
         },
         "ReplyTo": "admin@example.com",
         "SourceArn": "arn:aws:ses:us-west-2:123456789012:identity/admin@example.com"
      }
   },
   "ClientId": "1example23456789",
   "CompromisedCredentialsRiskConfiguration": { 
      "Actions": { 
         "EventAction": "BLOCK"
      },
      "EventFilter": [ "SIGN_UP", "SIGN_IN", "PASSWORD_CHANGE" ]
   },
   "RiskExceptionConfiguration": { 
      "BlockedIPRangeList": [ "192.0.2.1/32","192.0.2.2/32" ],
      "SkippedIPRangeList": [ "192.0.2.3/32","192.0.2.4/32" ]
   },
   "UserPoolId": "us-west-2_EXAMPLE"
}
```

------

# Trabalhar com a detecção de credenciais comprometidas
<a name="cognito-user-pool-settings-compromised-credentials"></a>

O Amazon Cognito pode detectar se o nome de usuário e a senha de um usuário foram comprometidos em outro local. Isso pode ocorrer quando os usuários reutilizam credenciais em mais de um local ou quando usam senhas inseguras. O Amazon Cognito confere [usuários locais](cognito-terms.md#terms-localuser) que fazem login com nome de usuário e senha, no login gerenciado e com a API do Amazon Cognito.

No menu **Proteção contra ameaças** do console do Amazon Cognito, você pode configurar **Credenciais comprometidas**. Configure **Event detection** (Detecção de eventos) para escolher os eventos do usuário que você deseja monitorar em relação a credenciais comprometidas. Configure **Compromised credentials responses** (Respostas de credenciais comprometidas) para escolher se deseja permitir ou bloquear o usuário se forem detectadas credenciais comprometidas. O Amazon Cognito pode conferir a existência de credenciais comprometidas durante o login, o cadastro e as alterações de senha.

Ao escolher **Permitir login**, você pode revisar os Amazon CloudWatch Logs para monitorar as avaliações que o Amazon Cognito faz em eventos de usuários. Para obter mais informações, consulte [Como exibir métricas de proteção contra ameaças](metrics-for-cognito-user-pools.md#user-pool-settings-viewing-threat-protection-metrics). Ao escolher **Block sign-in** (Bloquear login), o Amazon Cognito impede o login dos usuários que usam credenciais comprometidas. Quando o Amazon Cognito bloqueia o login de um usuário, ele define o [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UserType.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UserType.html) do usuário como `RESET_REQUIRED`. Um usuário com o status `RESET_REQUIRED` precisa alterar a senha para poder fazer login novamente.

As credenciais comprometidas podem verificar as senhas da atividade do usuário a seguir.

**Cadastrar-se**  
Seu grupo de usuários verifica as senhas que os usuários transmitem na [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)operação e na página de inscrição do login gerenciado em busca de indicadores de comprometimento.

**Fazer login**  
Seu grupo de usuários verifica as senhas que os usuários enviam no login baseado em senha em busca de indicadores de comprometimento. O Amazon Cognito pode analisar o `ADMIN_USER_PASSWORD_AUTH` fluxo de [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)entrada, o `USER_PASSWORD_AUTH` fluxo de [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)entrada e a `PASSWORD` opção do `USER_AUTH` fluxo em ambos.  
No momento, o Amazon Cognito não confere credenciais comprometidas para operações de login com o fluxo de Secure Remote Password (SRP). O SRP envia uma prova de senha com hash durante o login. Com o Amazon Cognito não tem acesso às senhas internamente, ele só pode avaliar uma senha que seu cliente transmite para ele em texto simples.

**Redefinição de senhas**  
Seu grupo de usuários verifica os indicadores de comprometimento nas operações que definem novas senhas de usuário com a operação de redefinição [ConfirmForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmForgotPassword.html)de senha de autoatendimento. O código necessário para essa operação é gerado por [ForgotPassword[AdminResetUserPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminResetUserPassword.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html)e.  
As credenciais comprometidas não verificam as senhas temporárias ou permanentes definidas pelo administrador definidas com. [AdminSetUserPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserPassword.html) No entanto, com senhas temporárias, seu grupo de usuários verifica as senhas a partir das respostas ao `NEW_PASSWORD_REQUIRED` desafio em [RespondToAuthChallenge[AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)e.

Para adicionar proteções contra credenciais comprometidas ao grupo de usuários, consulte [Segurança avançada com proteção contra ameaças](cognito-user-pool-settings-threat-protection.md).

# Trabalhar com autenticação adaptável
<a name="cognito-user-pool-settings-adaptive-authentication"></a>

Com a autenticação adaptável, você pode configurar o grupo de usuários para bloquear logins suspeitos ou exigir a autenticação de segundo fator em resposta a um aumento no nível de risco. Para cada tentativa de login, o Amazon Cognito gera uma pontuação de risco para a probabilidade da solicitação de login ser de uma fonte comprometida. Essa pontuação de risco é baseada em fatores de dispositivo e usuário que sua aplicação fornece e outros que o Amazon Cognito extrai da solicitação. Alguns fatores que contribuem para a avaliação de risco pelo Amazon Cognito são o endereço IP, o agente do usuário e a distância geográfica de outras tentativas de login. A autenticação adaptativa pode ativar ou exigir a autenticação multifator (MFA) para um usuário em seu grupo de usuários quando o Amazon Cognito detecta riscos na sessão de um usuário e o usuário ainda não selecionou um método de MFA. Quando você ativa a MFA para um usuário, ele sempre recebe o desafio de fornecer ou configurar um segundo fator durante a autenticação, independentemente de como você configurou a autenticação adaptativa. Do ponto de vista do usuário, a aplicação oferece ajuda para configurar a MFA e, opcionalmente, o Amazon Cognito impede que ele faça login novamente até que tenha configurado um fator adicional.

O Amazon Cognito publica métricas sobre tentativas de login, seus níveis de risco e desafios fracassados para a Amazon. CloudWatch Para obter mais informações, consulte [Como exibir métricas de proteção contra ameaças](metrics-for-cognito-user-pools.md#user-pool-settings-viewing-threat-protection-metrics).

Para adicionar autenticação adaptável ao grupo de usuários, consulte [Segurança avançada com proteção contra ameaças](cognito-user-pool-settings-threat-protection.md).

**Topics**
+ [Visão geral da autenticação adaptável](#security-cognito-user-pool-settings-adaptive-authentication-overview)
+ [Adicionar dados de sessão e dispositivo do usuário a solicitações de API](#user-pool-settings-adaptive-authentication-device-fingerprint)
+ [Como exibir e exportar o histórico de eventos do usuário](#user-pool-settings-adaptive-authentication-event-user-history)
+ [Como fornecer feedback sobre eventos](#user-pool-settings-adaptive-authentication-feedback)
+ [Como enviar mensagens de notificação](#user-pool-settings-adaptive-authentication-messages)

## Visão geral da autenticação adaptável
<a name="security-cognito-user-pool-settings-adaptive-authentication-overview"></a>

No menu **Proteção contra ameaças** do console do Amazon Cognito, você pode escolher as configurações de autenticação adaptável, incluindo as ações que serão executadas em diferentes níveis de risco e a personalização de mensagens de notificação que serão enviadas aos usuários. É possível atribuir uma configuração de proteção contra ameaças a todos os seus clientes de aplicações, mas aplicar uma configuração no nível de cliente a clientes de aplicações individuais.

A autenticação adaptativa do Amazon Cognito atribui um dos seguintes níveis de risco a cada sessão do usuário: **Alto**, **Médio**, **Baixo** ou **Sem risco**.

Considere suas opções com cuidado ao alterar seu **Enforcement method** (método de aplicação) de **Audit-only** (Somente auditoria) para **Full-function** (Função completa). As respostas automáticas que você aplica aos níveis de risco influenciam o nível de risco que o Amazon Cognito atribui às sessões de usuário subsequentes com as mesmas características. Por exemplo, depois de optar por não realizar nenhuma ação ou permitir (**Allow**) sessões de usuário que o Amazon Cognito inicialmente avalia como de alto risco, o Amazon Cognito considera que sessões semelhantes têm um risco menor.


**Para cada nível de risco, você pode escolher as seguintes opções:**  

|  Opção  |  Ação  | 
| --- | --- | 
| Permitir | Os usuários podem fazer login sem um fator adicional. | 
| MFA opcional | Os usuários que tiverem um segundo fator configurado deverão concluir um segundo desafio de fator para fazer login. Um número de telefone para SMS e um token de software TOTP são o segundo fator disponível. Usuários sem um segundo fator configurado podem fazer login apenas com um conjunto de credenciais. | 
| Solicitar MFA | Os usuários que tiverem um segundo fator configurado deverão concluir um segundo desafio de fator para fazer login. O Amazon Cognito bloqueia o login para usuários que não têm um segundo fator configurado. | 
| Bloquear | O Amazon Cognito bloqueia todas as tentativas de login no nível de risco designado. | 

**nota**  
Não é necessário confirmar os números de telefone para usá-los para SMS como segundo fator de autenticação.

## Adicionar dados de sessão e dispositivo do usuário a solicitações de API
<a name="user-pool-settings-adaptive-authentication-device-fingerprint"></a>

Você pode coletar e transmitir informações sobre a sessão do usuário à proteção contra ameaças do Amazon Cognito ao usar a API para inscrevê-lo, fazer seu login e redefinir sua senha. Essas informações incluem o endereço IP do usuário e um identificador de dispositivo exclusivo.

É possível ter um dispositivo de rede intermediário entre seus usuários e o Amazon Cognito, como um serviço proxy ou um servidor de aplicações. Você pode coletar dados de contexto dos usuários e transmiti-los ao Amazon Cognito para que a autenticação adaptativa calcule seu risco com base nas características do endpoint do usuário, em vez de seu servidor ou proxy. Se a aplicação do lado do cliente chamar as operações da API do Amazon Cognito diretamente, a autenticação adaptativa registrará automaticamente o endereço IP de origem. No entanto, outras informações sobre o dispositivo não serão registradas, como o `user-agent`, a menos que você também colha uma impressão digital do dispositivo.

Gere esses dados com a biblioteca de coleta de dados de contexto do Amazon Cognito e envie-os para a proteção contra ameaças do Amazon Cognito com [ContextData](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ContextDataType.html)os parâmetros e. [UserContextData](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UserContextDataType.html) A biblioteca de coleta de dados de contexto está incluída no AWS SDKs. Para obter mais informações, consulte [Integração da autenticação e autorização do Amazon Cognito com aplicações móveis e da web](cognito-integrate-apps.md). Você pode enviar `ContextData` se tiver o plano de recursos Plus. Para obter mais informações, consulte [Configurar a proteção contra ameaças](cognito-user-pool-settings-threat-protection.md#cognito-user-pool-settings-configure-threat-protection).

Ao chamar essas operações de API autenticadas do Amazon Cognito do seu servidor de aplicações, transmita o IP do dispositivo do usuário no parâmetro `ContextData`. Além disso, transmita o nome e o caminho do servidor, bem como os dados de impressão digital do dispositivo codificado.
+ [AdminInitiateAuth ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)
+ [AdminRespondToAuthChallenge ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)

Ao chamar as operações de API não autenticadas do Amazon Cognito, você pode enviar `UserContextData` à proteção contra ameaças do Amazon Cognito. Esses dados incluem uma impressão digital do dispositivo no parâmetro `EncodedData`. Você também pode enviar um parâmetro `IpAddress` em `UserContextData` se atender às seguintes condições:
+ Seu grupo de usuários está no plano de recursos Plus. Para obter mais informações, consulte [Planos de recursos de grupos de usuários](cognito-sign-in-feature-plans.md).
+ O cliente da aplicação tem um segredo do cliente. Para obter mais informações, consulte [Configurações específicas da aplicação com clientes de aplicação](user-pool-settings-client-apps.md).
+ Você ativou a opção **Accept additional user context data** (Aceitar dados de contexto do usuário adicionais) no cliente da aplicação. Para obter mais informações, consulte [Aceitar dados de contexto do usuário adicionais (Console de gerenciamento da AWS)](#user-pool-settings-adaptive-authentication-accept-user-context-data).

Sua aplicação pode preencher o parâmetro `UserContextData` com dados codificados de impressão digital e o endereço IP do dispositivo do usuário nestas operações de API não autenticadas do Amazon Cognito.
+ [InitiateAuth ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)
+ [RespondToAuthChallenge ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)
+ [SignUp ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)
+ [ConfirmSignUp ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html)
+ [ForgotPassword ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html)
+ [ConfirmForgotPassword ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmForgotPassword.html)
+ [ResendConfirmationCode ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ResendConfirmationCode.html)

### Aceitar dados de contexto do usuário adicionais (Console de gerenciamento da AWS)
<a name="user-pool-settings-adaptive-authentication-accept-user-context-data"></a>

Seu grupo de usuários aceita um endereço IP em um parâmetro `UserContextData` depois que você ativa o recurso **Accept additional user context data** (Aceitar dados de contexto do usuário adicionais). Não será necessário ativar esse recurso se:
+ Seus usuários só fazem login com operações de API autenticadas [AdminInitiateAuth ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html), como, e você usa o `ContextData` parâmetro.
+ Você quiser que suas operações de API não autenticadas só enviem uma impressão digital do dispositivo, mas não um endereço IP, à proteção contra ameaças do Amazon Cognito.

Atualize o cliente da aplicação da maneira a seguir no console do Amazon Cognito para adicionar suporte para dados de contexto do usuário adicionais.

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

1. No painel de navegação, selecione **Manage your User Pools** e escolha o grupo de usuários que você deseja editar.

1. Clique no menu **Clientes da aplicação**.

1. Escolha ou crie um cliente da aplicação. Para obter mais informações, consulte [Configurar um cliente da aplicação do grupo de usuários](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-app-idp-settings.html).

1. Escolha **Edit** (Editar) no contêiner **App client information** (Informações do cliente da aplicação).

1. Em **Advanced authentication settings** (Configurações de autenticação avançada) do cliente da aplicação, escolha **Accept additional user context data** (Aceitar dados de contexto do usuário adicionais).

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

Para configurar seu cliente de aplicativo para aceitar dados de contexto do usuário na API do Amazon Cognito, `EnablePropagateAdditionalUserContextData` defina como `true` em uma solicitação [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html)ou [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html). Para obter informações sobre como trabalhar com a proteção contra ameaças na aplicação web ou móvel, consulte [Coletar dados para proteção contra ameaças em aplicações](user-pool-settings-viewing-threat-protection-app.md). Quando a aplicação chamar o Amazon Cognito do servidor, colete dados de contexto do usuário no lado do cliente. Veja a seguir um exemplo que usa o método JavaScript `getData` SDK.

```
var EncodedData = AmazonCognitoAdvancedSecurityData.getData(username, userPoolId, clientId);
```

Quando você estiver criando sua aplicação para usar a autenticação adaptativa, é recomendável incorporar nela o SDK mais recente do Amazon Cognito. A versão mais recente do SDK coleta informações de impressão digital do dispositivo, como ID, modelo e fuso horário. Para obter mais informações sobre o Amazon Cognito SDKs, consulte [Instalar um SDK de grupo de usuários](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-sdk-links.html). A proteção contra ameaças do Amazon Cognito só salva e atribui uma pontuação de risco aos eventos enviados pela aplicação no formato correto. Se o Amazon Cognito retornar uma resposta de erro, verifique se sua solicitação inclui um hash secreto válido e se o `IPaddress` parâmetro é um endereço ou válido IPv4 . IPv6 

**Recursos de `ContextData` e `UserContextData`**
+ AWS Amplify SDK para Android: [GetUserContextData](https://github.com/aws-amplify/aws-sdk-android/blob/main/aws-android-sdk-cognitoidentityprovider/src/main/java/com/amazonaws/mobileconnectors/cognitoidentityprovider/CognitoUserPool.java#L626)
+ AWS Amplify SDK para iOS: [userContextData](https://github.com/aws-amplify/aws-sdk-ios/blob/d3cd4fa0086b526f2f5c9c6c58880c9da7004c66/AWSCognitoIdentityProviderASF/AWSCognitoIdentityProviderASF.m#L21)
+ JavaScript: [amazon-cognito-advanced-security-data.min.js](https://amazon-cognito-assets.us-east-1.amazoncognito.com/amazon-cognito-advanced-security-data.min.js)

## Como exibir e exportar o histórico de eventos do usuário
<a name="user-pool-settings-adaptive-authentication-event-user-history"></a>

O Amazon Cognito gera um log para cada evento de autenticação de um usuário quando você habilita a proteção contra ameaças. Por padrão, você pode visualizar os registros do usuário no menu **Usuários** no console do Amazon Cognito ou com a operação da [AdminListUserAuthEvents](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminListUserAuthEvents.html)API. Você também pode exportar esses eventos para um sistema externo, como CloudWatch Logs, Amazon S3 ou Amazon Data Firehose. O recurso de exportação pode tornar as informações de segurança sobre a atividade do usuário em sua aplicação mais acessíveis aos seus próprios sistemas de análise de segurança.

**Topics**
+ [Como exibir o histórico de eventos do usuário (Console de gerenciamento da AWS)](#user-pool-settings-adaptive-authentication-event-user-history-console)
+ [Como exibir o histórico de eventos do usuário (API/CLI)](#user-pool-settings-adaptive-authentication-event-user-history-api-cli)
+ [Como exportar eventos de autenticação de usuários](#user-pool-settings-adaptive-authentication-event-user-history-exporting)

### Como exibir o histórico de eventos do usuário (Console de gerenciamento da AWS)
<a name="user-pool-settings-adaptive-authentication-event-user-history-console"></a>

Para ver o histórico de logins de um usuário, é possível selecionar o usuário no menu **Usuários** no console do Amazon Cognito. O Amazon Cognito mantém o histórico de eventos do usuário por dois anos.

![\[Histórico de eventos do usuário\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/cup-advanced-security-event-history.png)


Cada evento de login tem um ID de evento. O evento também tem dados de contexto correspondentes, como localização, detalhes do dispositivo e resultados da detecção de risco.

Você também pode correlacionar o ID do evento com o token que o Amazon Cognito emitiu no momento em que gravou o evento. O ID e os tokens de acesso incluem esse ID de evento em sua carga útil. O Amazon Cognito também correlaciona o uso de token de atualização ao ID do evento original. É possível rastrear o ID do evento original de volta para o ID do evento de login que resultou na emissão de tokens do Amazon Cognito. Você pode rastrear o uso de um token em seu sistema para determinado evento de autenticação. Para obter mais informações, consulte [Compreendendo os tokens web JSON do grupo de usuários () JWTs](amazon-cognito-user-pools-using-tokens-with-identity-providers.md).

### Como exibir o histórico de eventos do usuário (API/CLI)
<a name="user-pool-settings-adaptive-authentication-event-user-history-api-cli"></a>

[Você pode consultar o histórico de eventos do usuário com a operação da API do Amazon Cognito [AdminListUserAuthEvents](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminListUserAuthEvents.html)ou com o AWS Command Line Interface (AWS CLI) com admin-list-user-auth -events.](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/admin-list-user-auth-events.html)

------
#### [ AdminListUserAuthEvents request ]

O corpo da solicitação a seguir `AdminListUserAuthEvents` retorna o log de atividades mais recente de um usuário.

```
{
  "UserPoolId": "us-west-2_EXAMPLE", 
  "Username": "myexampleuser", 
  "MaxResults": 1
}
```

------
#### [ admin-list-user-auth-events request ]

A solicitação a seguir `admin-list-user-auth-events` retorna o log de atividades mais recente de um usuário.

```
aws cognito-idp admin-list-user-auth-events --max-results 1 --username myexampleuser --user-pool-id us-west-2_EXAMPLE
```

------
#### [ Response ]

O Amazon Cognito retorna o mesmo corpo de resposta JSON para as duas solicitações. Veja um exemplo de resposta para um evento de login de login gerenciado que não continha fatores de risco:

```
{
    "AuthEvents": [
        {
            "EventId": "[event ID]",
            "EventType": "SignIn",
            "CreationDate": "[Timestamp]",
            "EventResponse": "Pass",
            "EventRisk": {
                "RiskDecision": "NoRisk",
                "CompromisedCredentialsDetected": false
            },
            "ChallengeResponses": [
                {
                    "ChallengeName": "Password",
                    "ChallengeResponse": "Success"
                }
            ],
            "EventContextData": {
                "IpAddress": "192.168.2.1",
                "DeviceName": "Chrome 125, Windows 10",
                "Timezone": "-07:00",
                "City": "Bellevue",
                "Country": "United States"
            }
        }
    ],
    "NextToken": "[event ID]#[Timestamp]"
}
```

------

### Como exportar eventos de autenticação de usuários
<a name="user-pool-settings-adaptive-authentication-event-user-history-exporting"></a>

Configure seu grupo de usuários para exportar eventos de usuário da proteção contra ameaças para um sistema externo. Os sistemas externos compatíveis — Amazon S3, CloudWatch Logs e Amazon Data Firehose — podem adicionar custos à sua AWS fatura pelos dados que você envia ou recupera. Para obter mais informações, consulte [Exportar logs de atividade de usuários de proteção contra ameaças](exporting-quotas-and-usage.md#exporting-quotas-and-usage-user-activity).

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

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 **Fluxo de logs**. Selecione **Editar**.

1. Em **Status de registro em log**, marque a caixa de seleção ao lado de **Ativar exportação do log de atividades do usuário**.

1. Em **Logging destination**, escolha o AWS service (Serviço da AWS) que você deseja manipular com seus registros: **grupo de CloudWatch registros**, **stream do Amazon Data Firehose** ou bucket do **S3**.

1. Sua seleção preencherá o seletor de recursos com o tipo de recurso correspondente. Selecione um grupo de logs, stream ou bucket na lista. Você também pode selecionar o botão **Criar** para ir ao Console de gerenciamento da AWS do serviço selecionado e criar um novo recurso.

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

------
#### [ API ]

Escolha um tipo de destino para seus logs de atividades do usuário.

Veja a seguir um exemplo de corpo de solicitação `SetLogDeliveryConfiguration` que define um stream do Firehose como o destino do log.

```
{
   "LogConfigurations": [
      {
         "EventSource": "userAuthEvents",
         "FirehoseConfiguration": {
            "StreamArn": "arn:aws:firehose:us-west-2:123456789012:deliverystream/example-user-pool-activity-exported"
         },
         "LogLevel": "INFO"
      }
   ],
   "UserPoolId": "us-west-2_EXAMPLE"
}
```

Veja a seguir um exemplo de corpo de solicitação `SetLogDeliveryConfiguration` que define um bucket do Amazon S3 como o destino do log.

```
{
   "LogConfigurations": [
      {
         "EventSource": "userAuthEvents",
         "S3Configuration": { 
            "BucketArn": "arn:aws:s3:::amzn-s3-demo-logging-bucket"
         },
         "LogLevel": "INFO"
      }
   ],
   "UserPoolId": "us-west-2_EXAMPLE"
}
```

Veja a seguir um exemplo de corpo de `SetLogDeliveryConfiguration` solicitação que define um grupo de CloudWatch registros como o destino do registro.

```
{
   "LogConfigurations": [
      {
         "EventSource": "userAuthEvents",
         "CloudWatchLogsConfiguration": { 
            "LogGroupArn": "arn:aws:logs:us-west-2:123456789012:log-group:DOC-EXAMPLE-LOG-GROUP"
         },
         "LogLevel": "INFO"
      }
   ],
   "UserPoolId": "us-west-2_EXAMPLE"
}
```

------

## Como fornecer feedback sobre eventos
<a name="user-pool-settings-adaptive-authentication-feedback"></a>

Os feedbacks sobre eventos não só afetam a avaliação de risco em tempo real, mas também aprimoram o algoritmo de avaliação de risco ao longo do tempo. Você pode fornecer feedback sobre a validade das tentativas de login por meio do console do Amazon Cognito e das operações de API. 

**nota**  
O feedback de seu evento influencia o nível de risco que o Amazon Cognito atribui às sessões de usuário subsequentes com as mesmas características.

No console do Amazon Cognito, selecione um usuário na guia **Usuários** e selecione **Fornecer feedback de evento**. É possível revisar os detalhes do evento e definir como válido (**Set as valid** ou definir como inválido (**Set as invalid**).

O console lista o histórico de login em detalhes do usuário no menu **Usuários**. Se você selecionar uma entrada, poderá marcar o evento como válido ou não válido. Você também pode fornecer feedback por meio da operação da API do grupo [AdminUpdateAuthEventFeedback](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateAuthEventFeedback.html)de usuários e do AWS CLI comando [admin-update-auth-event-feedback](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/admin-update-auth-event-feedback.html). 

Ao selecionar **Set as valid** (Definir como válido) no console do Amazon Cognito ou fornecer um valor `FeedbackValue` de `valid` na API, você diz ao Amazon Cognito que confia em uma sessão de usuário em que o Amazon Cognito avaliou algum nível de risco. Ao selecionar **Set as invalid** (Definir como inválido) no console do Amazon Cognito ou fornecer um valor `FeedbackValue` de `invalid` na API, você diz ao Amazon Cognito que não confia em uma sessão de usuário ou não acredita que o Amazon Cognito avaliou um nível de risco alto o suficiente.

## Como enviar mensagens de notificação
<a name="user-pool-settings-adaptive-authentication-messages"></a>

Com a proteção contra ameaças, o Amazon Cognito pode notificar seus usuários sobre tentativas de login arriscadas. O Amazon Cognito também pode solicitar que os usuários selecionem links para indicar se o login foi ou não válido. O Amazon Cognito usa esse feedback para melhorar a precisão da detecção de riscos para seu grupo de usuários. 

**nota**  
O Amazon Cognito só envia mensagens de notificação aos usuários quando a ação deles gera uma resposta automática ao risco: bloquear o login, permitir o login, definir a MFA como opcional ou exigir a MFA. Algumas solicitações podem ter um nível de risco atribuído, mas não geram respostas de risco automatizadas de autenticação adaptável. Para elas, seu grupo de usuários não envia notificações. Por exemplo, senhas incorretas podem ser registradas com uma classificação de risco, mas a resposta do Amazon Cognito é falha do login, não aplicar uma regra de autenticação adaptável.

Na seção **Automatic risk response** (Resposta automática a riscos), selecione **Notify Users** (Notificar usuários) para os casos de baixo, médio e alto risco.

![\[Notificar usuários\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/cup-adaptive-auth.png)


O Amazon Cognito envia notificações por e-mail aos seus usuários, independentemente de eles terem verificado o endereço de e-mail.

Você pode personalizar mensagens de e-mail de notificação e disponibilizá-las em versões de texto simples e HTML. Para personalizar suas notificações por e-mail, abra **Modelos de e-mail** em **Mensagens de autenticação adaptável** em sua configuração de proteção contra ameaças. Para saber mais sobre modelos de e-mail, consulte [Modelos de mensagens](cognito-user-pool-settings-message-customizations.md#cognito-user-pool-settings-message-templates).

# Coletar dados para proteção contra ameaças em aplicações
<a name="user-pool-settings-viewing-threat-protection-app"></a>

A [autenticação adaptável](cognito-user-pool-settings-adaptive-authentication.md) do Amazon Cognito avalia os níveis de risco de tentativa de invasão da conta a partir de detalhes contextuais das tentativas de login dos usuários. A aplicação deve adicionar *dados de contexto* às solicitações de API para que a proteção contra ameaças do Amazon Cognito possa avaliar os riscos com mais precisão. Dados de contexto são informações como endereço IP, agente do navegador, informações do dispositivo e cabeçalhos de solicitação que fornecem informações contextuais sobre como o usuário se conectou ao grupo de usuários.

A responsabilidade central de uma aplicação que envia esse contexto ao Amazon Cognito é um parâmetro `EncodedData` nas solicitações de autenticação para grupos de usuários. Para adicionar esses dados às suas solicitações, você pode implementar o Amazon Cognito com um SDK que gera automaticamente essas informações para você, ou você pode implementar um módulo para JavaScript iOS ou Android que coleta esses dados. Aplicativos *somente para clientes* que fazem solicitações diretas ao Amazon Cognito devem ser implementados. AWS Amplify SDKs As aplicações *cliente-servidor* que têm um servidor intermediário ou componente de API devem implementar um módulo SDK separado.

Nos cenários a seguir, seu frontend de autenticação gerencia a coleta de dados de contexto do usuário sem qualquer configuração adicional:
+ O login gerenciado coleta e envia automaticamente dados de contexto para a proteção contra ameaças.
+ Todas as AWS Amplify bibliotecas têm coleta de dados contextuais incorporada em seus métodos de autenticação.

## Envio de dados de contexto do usuário em aplicações somente para clientes com Amplify
<a name="user-pool-settings-viewing-threat-protection-app-amplify"></a>

![\[Uma visão geral da coleta de dados para proteção contra ameaças em uma aplicação Amplify.\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/user-pools-asf-amplify-data-collection.png)


O Amplify SDKs oferece suporte a clientes móveis que se autenticam diretamente no Amazon Cognito. Clientes desse tipo fazem solicitações diretas de API às operações públicas de API do Amazon Cognito. Por padrão, os clientes do Amplify coletam automaticamente dados de contexto para a proteção contra ameaças.

Os aplicativos Amplify com JavaScript são uma exceção. Eles exigem a adição de um [JavaScript módulo](#user-pool-settings-viewing-threat-protection-app-additional-resources-js) que coleta dados de contexto do usuário.

Normalmente, um aplicativo nessa configuração usa operações de API não autenticadas, como e. [InitiateAuth[RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) O [UserContextData](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UserContextDataType.html)objeto ajuda a avaliar os riscos com mais precisão nessas operações. O Amplify SDKs adiciona informações do dispositivo e da sessão a um `EncodedData` parâmetro de. `UserContextData`

## Coletar dados de contexto em aplicações cliente-servidor
<a name="user-pool-settings-viewing-threat-protection-app-server-side"></a>

Algumas aplicações têm um nível de frontend que coleta dados de autenticação do usuário e um nível de backend de aplicações que envia solicitações de autenticação para o Amazon Cognito. Essa é uma arquitetura comum em servidores web e aplicações auxiliadas por microsserviços. Nessas aplicações, você deve importar uma biblioteca pública de coleta de dados contextuais.

![\[Uma visão geral da autenticação do lado do servidor com dados de contexto de proteção contra ameaças em. JavaScript\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/user-pools-asf-non-amplify-data-collection.png)


Normalmente, um servidor de aplicativos nessa configuração usa operações de API autenticadas, como [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)e. [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html) O [ContextData](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#CognitoUserPools-AdminInitiateAuth-request-ContextData)objeto ajuda o Amazon Cognito a avaliar os riscos dessas operações com mais precisão. O conteúdo de `ContextData` são os dados codificados que o frontend passou para o servidor e detalhes adicionais da solicitação HTTP do usuário para o servidor. Esses detalhes adicionais de contexto, como os cabeçalhos HTTP e o endereço IP, fornecem ao servidor de aplicações as características do ambiente do usuário.

Seu servidor de aplicativos também pode fazer login com operações de API não autenticadas, como e. [InitiateAuth[RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) O [UserContextData](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-UserContextData)objeto informa a análise de risco de proteção contra ameaças nessas operações. As operações nas bibliotecas de coleta de dados de contexto público disponíveis adicionam informações de segurança ao parâmetro `EncodedData` nas solicitações de autenticação. Além disso, configure seu grupo de usuários para aceitar dados de contexto adicionais e adicionar o IP de origem do usuário ao parâmetro `IpAddress` de `UserContextData`.

**Para adicionar dados de contexto a aplicações cliente-servidor**

1. Em seu aplicativo front-end, colete dados de contexto codificados do cliente com um [iOS, Android](#user-pool-settings-viewing-threat-protection-app-additional-resources) ou módulo. JavaScript 

1. Passe os dados codificados e os detalhes da solicitação de autenticação para seu servidor de aplicações.

1. No seu servidor de aplicações, extraia o endereço IP do usuário, os cabeçalhos HTTP relevantes, o nome do servidor solicitado e o caminho da solicitação HTTP. Preencha esses valores com o [ContextData](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#CognitoUserPools-AdminInitiateAuth-request-ContextData)parâmetro da sua solicitação de API para o Amazon Cognito.

1. Preencha o parâmetro `EncodedData` de `ContextData` na solicitação de API com os dados codificados do dispositivo que seu módulo SDK coletou. Adicione esses dados de contexto à solicitação de autenticação.

## Bibliotecas de dados de contexto para aplicações cliente-servidor
<a name="user-pool-settings-viewing-threat-protection-app-additional-resources"></a>

### JavaScript
<a name="user-pool-settings-viewing-threat-protection-app-additional-resources-js"></a>

O módulo `amazon-cognito-advanced-security-data.min.js` coleta `EncodedData` que você pode passar para o servidor de aplicações.

Adicione o `amazon-cognito-advanced-security-data.min.js` módulo à sua JavaScript configuração. `<region>`Substitua por um Região da AWS da lista a seguir: `us-east-1``us-east-2`,`us-west-2`,`eu-west-1`,`eu-west-2`, ou`eu-central-1`.

```
<script src="https://amazon-cognito-assets.<region>.amazoncognito.com/amazon-cognito-advanced-security-data.min.js"></script>
```

Para gerar um `encodedContextData` objeto que você possa usar no `EncodedData` parâmetro, adicione o seguinte à fonte do JavaScript aplicativo:

```
var encodedContextData = AmazonCognitoAdvancedSecurityData.getData(_username, _userpoolId, _userPoolClientId);
```

### iOS/Swift
<a name="user-pool-settings-viewing-threat-protection-app-additional-resources-ios"></a>

Para gerar dados de contexto, os aplicativos iOS podem integrar o [AWSCognitoIdentityProvidermódulo](https://github.com/aws-amplify/aws-sdk-ios/tree/main/AWSCognitoIdentityProviderASF) ASF do [Mobile SDK para](https://github.com/aws-amplify/aws-sdk-ios/tree/main) iOS.

Para coletar dados de contexto codificados para proteção contra ameaças, adicione o seguinte trecho à aplicação:

```
import AWSCognitoIdentityProviderASF

let deviceId = getDeviceId()
let encodedContextData = AWSCognitoIdentityProviderASF.userContextData(
                            userPoolId, 
                            username: username, 
                            deviceId: deviceId, 
                            userPoolClientId: userPoolClientId)
                                
/**
 * Reuse DeviceId from keychain or generate one for the first time.
 */
func getDeviceId() -> String {
    let deviceIdKey = getKeyChainKey(namespace: userPoolId, key: "AWSCognitoAuthAsfDeviceId")
    
   if let existingDeviceId = self.keychain.string(forKey: deviceIdKey) {
        return existingDeviceId
    }

    let newDeviceId = UUID().uuidString
    self.keychain.setString(newDeviceId, forKey: deviceIdKey)
    return newDeviceId
}

/**
 * Get a namespaced keychain key given a namespace and key
 */    
func getKeyChainKey(namespace: String, key: String) -> String {
    return "\(namespace).\(key)"
}
```

### Android
<a name="user-pool-settings-viewing-threat-protection-app-additional-resources-android"></a>

Para gerar dados de contexto, os aplicativos Android podem integrar o [aws-android-sdk-cognitoidentityprovidermódulo](https://github.com/aws-amplify/aws-sdk-android/tree/main/aws-android-sdk-cognitoidentityprovider-asf) -asf do [Mobile SDK for](https://github.com/aws-amplify/aws-sdk-android/tree/main) Android.

Para coletar dados de contexto codificados para proteção contra ameaças, adicione o seguinte trecho à aplicação:

```
UserContextDataProvider provider = UserContextDataProvider.getInstance();
// context here is android application context.
String encodedContextData = provider.getEncodedContextData(context, username, userPoolId, userPoolClientId);
```

# Associar uma ACL AWS WAF da web a um grupo de usuários
<a name="user-pool-waf"></a>

AWS WAF é um firewall de aplicativos da web. Com uma lista de controle de acesso à AWS WAF web (web ACL), você pode proteger seu grupo de usuários contra solicitações indesejadas para sua interface de usuário hospedada clássica, login gerenciado e endpoints de serviço da API Amazon Cognito. A ACL da web oferece controle detalhado sobre todas as solicitações web HTTPS às quais o grupo de usuários responde. Para obter mais informações sobre a AWS WAF web ACLs, consulte [Gerenciando e usando uma lista de controle de acesso à web (Web ACL)](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl.html) no *Guia do AWS WAF desenvolvedor*.

Quando você tem uma ACL AWS WAF da web associada a um grupo de usuários, o Amazon Cognito encaminha cabeçalhos e conteúdos não confidenciais selecionados das solicitações de seus usuários para. AWS WAF AWS WAF inspeciona o conteúdo da solicitação, compara com as regras que você especificou na sua ACL da web e retorna uma resposta ao Amazon Cognito.

## Coisas que você deve saber sobre a AWS WAF web ACLs e o Amazon Cognito
<a name="user-pool-waf-things-to-know"></a>
+ Você não pode configurar as regras de Web ACL para corresponder às informações de identificação pessoal (PII) nas solicitações do grupo de usuários, por exemplo, nomes de usuário, senhas, números de telefone ou endereços de e-mail. Esses dados não estarão disponíveis para AWS WAF. Em vez disso, configure suas regras de Web ACL para corresponder aos dados da sessão nos cabeçalhos, no caminho e no corpo, como endereços IP, agentes do navegador e operações de API solicitadas.
+ As condições das regras da Web ACL só podem retornar respostas de bloco personalizadas à **primeira** solicitação dos usuários em uma página de login gerenciada interativa com o usuário. Quando as conexões subsequentes correspondem a uma condição de resposta de bloco personalizada, elas retornam seu código de status, cabeçalho e respostas de redirecionamento personalizados, mas uma mensagem de bloqueio padrão.
+ Solicitações bloqueadas por AWS WAF não contam para a cota de taxa de solicitação de nenhum tipo de solicitação. O AWS WAF manipulador é chamado antes dos manipuladores de limitação no nível da API.
+ Quando você cria uma ACL da web, há um pequeno tempo de espera até que a ACL da web seja totalmente propagada e esteja disponível para o Amazon Cognito. O tempo de propagação pode ser de alguns segundos a alguns minutos. AWS WAF retorna a [https://docs.aws.amazon.com/waf/latest/APIReference/API_AssociateWebACL.html#API_AssociateWebACL_Errors](https://docs.aws.amazon.com/waf/latest/APIReference/API_AssociateWebACL.html#API_AssociateWebACL_Errors)quando você tenta associar uma ACL da web antes que ela seja totalmente propagada.
+ É possível associar uma Web ACL a cada grupo de usuários.
+ Sua solicitação pode ocasionar uma carga útil acima dos limites inspecionados pelo AWS WAF . Consulte [Tratamento de componentes de solicitações de tamanho grande](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statement-oversize-handling.html) no *Guia do AWS WAF desenvolvedor* para saber como configurar como lidar AWS WAF com solicitações de grandes dimensões do Amazon Cognito.
+ Você não pode associar uma ACL da web que usa a [prevenção de aquisição de contas (ATP) do AWS WAF Fraud Control](https://docs.aws.amazon.com/waf/latest/developerguide/waf-atp.html) a um grupo de usuários do Amazon Cognito. O recurso ATP está no grupo de regras gerenciadas `AWS-AWSManagedRulesATPRuleSet`. Antes de associar uma Web ACL a um grupo de usuários, certifique-se de que ela não usa esse grupo de regras gerenciadas.
+ Quando você tem uma ACL AWS WAF da web associada a um grupo de usuários e uma regra na sua ACL da web apresenta um CAPTCHA, isso pode causar um erro irrecuperável no registro do TOTP de login gerenciado. Para criar uma regra que tenha uma ação de CAPTCHA e não afete a TOTP do login gerenciado, consulte [Configurando sua ACL AWS WAF da web para login gerenciado TOTP MFA](user-pool-settings-mfa-totp.md#totp-waf).

AWS WAF inspeciona solicitações para os seguintes endpoints.

**Login gerenciado e a IU hospedada clássica**  
Solicitações a todos os endpoints no [Referência de login gerenciado e endpoints do grupo de usuários](cognito-userpools-server-contract-reference.md).

**Operações públicas de API**  
Solicitações do seu aplicativo para a API do Amazon Cognito que não usam AWS credenciais para autorizar. Isso inclui operações de API como [InitiateAuth[RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html), [GetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html)e. As operações de API que estão no escopo de AWS WAF não exigem autenticação com AWS credenciais. Elas não são autenticadas nem autorizadas com uma string de sessão nem um token de acesso. Para obter mais informações, consulte [Lista de operações de API agrupadas por modelo de autorização](authentication-flows-public-server-side.md#user-pool-apis-auth-unauth).

É possível configurar as regras na Web ACL com ações como **Contar**, **Permitir**, **Bloquear** ou apresentar um **CAPTCHA** em resposta a uma solicitação correspondente a uma regra. Para ter mais informações, consulte [Regras do AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rules.html) no *Guia do desenvolvedor do AWS WAF *. Dependendo da ação da regra, você pode personalizar a resposta que o Amazon Cognito retorna aos usuários.

**Importante**  
Suas opções para personalizar a resposta de erro dependem da forma como você faz uma solicitação de API.  
Você pode personalizar o código de erro e o corpo da resposta das solicitações do login gerenciado. Você só pode apresentar um CAPTCHA para o usuário resolver no login gerenciado.
Para solicitações feitas com a [API de grupos de usuários](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html) do Amazon Cognito, você pode personalizar o corpo da resposta de uma solicitação que recebe uma resposta **Bloquear**. Você também pode especificar um código de erro personalizado no intervalo de 400 a 499.
O AWS Command Line Interface (AWS CLI) e o AWS SDKs retornam um `ForbiddenException` erro às solicitações que produzem uma resposta de **bloco** ou **CAPTCHA**.

## Associar uma ACL da web ao grupo de usuários
<a name="user-pool-waf-setting-up"></a>

Para trabalhar com uma ACL da web em seu grupo de usuários, seu diretor AWS Identity and Access Management (IAM) deve ter o Amazon Cognito AWS WAF e as seguintes permissões. Para obter informações sobre AWS WAF permissões, consulte [Permissões de AWS WAF API](https://docs.aws.amazon.com/waf/latest/developerguide/waf-api-permissions-ref.html) no *Guia do AWS WAF desenvolvedor*.

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

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Sid": "AllowWebACLUserPool",
			"Effect": "Allow",
			"Action": [
				"cognito-idp:ListResourcesForWebACL",
				"cognito-idp:GetWebACLForResource",
				"cognito-idp:AssociateWebACL"
			],
			"Resource": [
				"arn:aws:cognito-idp:*:123456789012:userpool/*"
			]
		},
		{
			"Sid": "AllowWebACLUserPoolWAFv2",
			"Effect": "Allow",
			"Action": [
				"wafv2:ListResourcesForWebACL",
				"wafv2:AssociateWebACL",
				"wafv2:DisassociateWebACL",
				"wafv2:GetWebACLForResource"
			],
			"Resource": "arn:aws:wafv2:*:123456789012:*/webacl/*/*"
		},
		{
			"Sid": "DisassociateWebACL1",
			"Effect": "Allow",
			"Action": "wafv2:DisassociateWebACL",
			"Resource": "*"
		},
		{
			"Sid": "DisassociateWebACL2",
			"Effect": "Allow",
			"Action": [
				"cognito-idp:DisassociateWebACL"
			],
			"Resource": [
				"arn:aws:cognito-idp:*:123456789012:userpool/*"
			]
		}
	]
}
```

------

Embora você deva conceder permissões do IAM, as ações listadas são somente com permissão e não correspondem a nenhuma [operação de API](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html).

**AWS WAF Para ativar seu grupo de usuários e associar uma ACL da web**

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

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

1. Clique na guia **AWS WAF** na seção **Segurança**.

1. Escolha **Editar**.

1. Selecione **Usar AWS WAF com seu grupo de usuários**.  
![\[Captura de tela da caixa de AWS WAF diálogo com a opção Usar AWS WAF com seu grupo de usuários selecionada.\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/cup-WAF-console.png)

1. Escolha uma **AWS WAF Web ACL** que você já criou ou escolha **Criar ACL da Web em AWS WAF** para criar uma em uma nova AWS WAF sessão no. Console de gerenciamento da AWS

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

Para associar programaticamente uma ACL da web ao seu grupo de usuários no AWS Command Line Interface ou a um SDK, use a [AssociateWebACL](https://docs.aws.amazon.com/waf/latest/APIReference/API_AssociateWebACL.html) da API. AWS WAF O Amazon Cognito não tem uma operação de API separada que associe uma ACL da web.

## Testando e registrando AWS WAF na web ACLs
<a name="user-pool-waf-evaluating-and-logging"></a>

Quando você define uma ação de regra como **Count** em sua ACL da web, AWS WAF adiciona a solicitação a uma contagem de solicitações que correspondem à regra. Para testar uma ACL da web com o grupo de usuários, defina as ações da regra como **Count** (Contar) e considere o volume de solicitações correspondentes a cada regra. Por exemplo, se uma regra que você deseja definir como uma ação **Block** (Bloquear) corresponder a um grande número de solicitações que você considera tráfego normal de usuários, talvez seja necessário reconfigurar sua regra. Para ter mais informações, consulte [Testar e ajustar suas proteções do AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-testing.html) no *Guia do desenvolvedor do AWS WAF *.

Você também pode configurar AWS WAF para registrar cabeçalhos de solicitação em um grupo de CloudWatch logs do Amazon Logs, em um bucket do Amazon Simple Storage Service (Amazon S3) ou em um Amazon Data Firehose. Você pode identificar as solicitações do Amazon Cognito realizadas com a API de grupos de usuários pelo `x-amzn-cognito-client-id` e pelo `x-amzn-cognito-operation-name`. As solicitações de login gerenciado incluem somente o cabeçalho `x-amzn-cognito-client-id`. Para obter mais informações, consulte [Logging web ACL traffic](https://docs.aws.amazon.com/waf/latest/developerguide/logging.html) (Registrar em log o tráfego da ACL da web) no *Guia do desenvolvedor do AWS WAF *.

AWS WAF A web ACLs está disponível em todos os [planos de recursos](cognito-sign-in-feature-plans.md) do grupo de usuários. Os recursos de segurança do AWS WAF complementam a proteção contra ameaças do Amazon Cognito. É possível ativar os dois recursos em um grupo de usuários. O AWS WAF cobra separadamente pela inspeção das solicitações do grupo de usuários. Para obter mais informações, consulte [AWS WAF Preço](https://aws.amazon.com/waf/pricing).

Os dados da AWS WAF solicitação de registro estão sujeitos à cobrança adicional do serviço ao qual você segmenta seus registros. Para obter mais informações, consulte [Definição de preço para registrar informações de tráfego da ACL da Web](https://docs.aws.amazon.com/waf/latest/developerguide/logging.html#logging-pricing) no *Guia do desenvolvedor do AWS WAF *.

# Sensibilidade entre maiúsculas e minúsculas do grupo de usuários
<a name="user-pool-case-sensitivity"></a>

Os grupos de usuários do Amazon Cognito que você cria no não Console de gerenciamento da AWS diferenciam maiúsculas de minúsculas por padrão. Quando um grupo de usuários não faz distinção entre maiúsculas e minúsculas, *User@example.com* e *user@example.com* referem-se ao mesmo usuário. Quando nomes de usuário em um grupo de usuários não fazem distinção entre maiúsculas e minúsculas, os atributos `preferred_username` e `email` também não fazem essa distinção.

A não diferenciação de maiúsculas e minúsculas não se aplica somente às entradas de atributos, mas também às saídas. Valores de atributos com letras maiúsculas e minúsculas em grupos de usuários que não as diferenciam são reduzidos a minúsculas na saída de texto do grupo de usuários. [Exemplos de saída de texto do grupo de [usuários são respostas do UserInfo](userinfo-endpoint.md), respostas à consulta do usuário, como a saída de [GetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html), e eventos de entrada para os gatilhos do Lambda.](cognito-user-pools-working-with-lambda-triggers.md)

Para explicar as configurações de distinção entre maiúsculas e minúsculas de grupo de usuários, identifique usuários no código da aplicação com base em um atributo de usuário alternativo. Como o uso de maiúsculas e minúsculas no nome de usuário, do nome de usuário preferido ou no atributo de endereço de e-mail pode variar em diferentes perfis de usuário, consulte o atributo `sub`. Você também pode criar um atributo personalizado imutável no seu grupo de usuários e designar ao atributo seu próprio valor de identificador exclusivo em cada novo perfil de usuário. Ao criar um usuário pela primeira vez, é possível gravar um valor em um atributo personalizado imutável que você criou.

**nota**  
Independentemente das configurações de diferenciação entre maiúsculas e minúsculas do grupo de usuários, o Amazon Cognito exige que um usuário federado de um provedor de identidade (IdP) SAML ou OIDC passe uma declaração `NameId` ou `sub` exclusiva e que diferencie maiúsculas e minúsculas. Para obter mais informações sobre a distinção entre maiúsculas e minúsculas do identificador exclusivo e SAML IdPs, consulte[Implementar o login SAML iniciado pelo SP](cognito-user-pools-SAML-session-initiation.md#cognito-user-pools-saml-idp-authentication).

Criar um grupo de usuários com distinção entre maiúsculas e minúsculas  
Se você criar recursos com as operações AWS Command Line Interface (AWS CLI) e de API [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html), como, deverá definir o `CaseSensitive` parâmetro booleano como. `false` Essa configuração cria um grupo de usuários sem distinção entre maiúsculas e minúsculas. Se você não especificar um valor, a `CaseSensitive` definirá como padrão `true`. Os grupos de usuários que você cria no console do Amazon Cognito não diferenciam maiúsculas de minúsculas. Para produzir um grupo de usuários com distinção entre letras maiúsculas e minúsculas, você deve usar a operação `CreateUserPool`. Antes de 12 de fevereiro de 2020, grupos de usuários tinham distinção entre maiúsculas e minúsculas por padrão, independentemente da plataforma.   
No menu de **login do Console de gerenciamento da AWS e na** `UsernameConfiguration` propriedade de [DescribeUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UserPoolType.html#CognitoUserPools-Type-UserPoolType-UsernameConfiguration), você pode revisar as configurações de distinção entre maiúsculas e minúsculas de cada grupo de usuários em sua conta.

Migração para um novo grupo de usuários  
Devido a possíveis conflitos entre perfis de usuário, você não pode alterar um grupo de usuários do Amazon Cognito que faz distinção entre maiúsculas e minúsculas para um que não faça essa distinção. Em vez disso, faça a migração dos seus usuários para um novo grupo de usuários. Você deve criar um código de migração para resolver conflitos relacionados a maiúsculas e minúsculas. Esse código deve retornar um novo usuário exclusivo ou rejeitar a tentativa de login quando detectar um conflito. Em um novo grupo de usuários sem distinção entre maiúsculas e minúsculas, atribua um [Migrar o acionador do Lambda do usuário](user-pool-lambda-migrate-user.md). A AWS Lambda função pode criar usuários no novo grupo de usuários que não diferencia maiúsculas de minúsculas. Quando o usuário não conseguir fazer login com o grupo de usuários sem distinção entre maiúsculas e minúsculas, a função do Lambda localizará e duplicará o usuário desse grupo com distinção entre maiúsculas e minúsculas. Você também pode ativar um gatilho [ForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html)Lambda de usuário de migração em eventos. O Amazon Cognito transmite informações do usuário e metadados de eventos da ação de login ou recuperação de senha para a sua função do Lambda. Você pode usar dados de evento para gerenciar conflitos entre nomes de usuário e endereços de e-mail quando sua função cria o usuário em seu grupo de usuários sem distinção entre maiúsculas e minúsculas. Esses conflitos ocorrem entre nomes de usuário e endereços de e-mail que seriam exclusivos em um grupo de usuários sem distinção entre letras maiúsculas e minúsculas.   
Para obter mais informações sobre como usar um gatilho Lambda de migração de usuários entre grupos de usuários do Amazon Cognito, [consulte Migração de usuários para grupos de usuários do Amazon Cognito](https://aws.amazon.com/blogs/mobile/migrating-users-to-amazon-cognito-user-pools/) no blog. AWS 

# Proteção contra exclusão do grupo de usuários
<a name="user-pool-settings-deletion-protection"></a>

Para que os administradores não excluam acidentalmente seu grupo de usuários, ative a proteção contra exclusão. Com a proteção contra exclusão ativa, você deve confirmar que deseja excluir o grupo de usuários antes de excluí-lo. Ao excluir um grupo de usuários no Console de gerenciamento da AWS, você pode desativar a proteção contra exclusão ao mesmo tempo. Quando você aceita a solicitação para desativar a proteção contra exclusão e confirma sua intenção de excluir, o Amazon Cognito exclui o grupo de usuários, conforme mostrado na imagem a seguir.

![\[Uma captura de tela Console de gerenciamento da AWS mostrando uma solicitação para excluir um grupo de usuários com uma solicitação incluída para também desativar a proteção contra exclusão.\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/amazon-cognito-delete-user-pool-deactivate-deletion-protection.png)


Quando quiser excluir um grupo de usuários com uma solicitação da API do Amazon Cognito, você deve primeiro `DeletionProtection` fazer a alteração `Inactive` em uma [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)solicitação. Se você não desativar a proteção contra exclusão, o Amazon Cognito retornará um erro `InvalidParameterException`. Depois de desativar a proteção contra exclusão, você pode excluir o grupo de usuários em uma [DeleteUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUserPool.html)solicitação.

O Amazon Cognito ativa a **Deletion protection** (Proteção contra exclusão) por padrão quando você cria um grupo de usuários no Console de gerenciamento da AWS. Quando você cria um grupo de usuários com a API `CreateUserPool`, a proteção contra exclusão fica inativa por padrão. Para usar esse recurso nos grupos de usuários que você cria com o AWS CLI ou com um AWS SDK, defina o `DeletionProtection` parâmetro como. `True`

É possível ativar ou desativar o status da proteção contra exclusão no contêiner **Proteção contra exclusão** no menu **Configurações** no console do Amazon Cognito.

# Como configurar a proteção contra exclusão


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 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. Selecione o menu **Configurações** e navegue até a guia **Proteção contra exclusão**. Selecione **Ativar** ou **Desativar**.

1. Confirme sua escolha na próxima caixa de diálogo.

# Gerenciar respostas de erro de existência do usuário
<a name="cognito-user-pool-managing-errors"></a>

O Amazon Cognito permite personalizar respostas de erro retornadas por grupos de usuários. As respostas de erro personalizadas estão disponíveis para operações de criação e autenticação de usuários, recuperação de senha e confirmação.

Use o `PreventUserExistenceErrors` de um cliente da aplicação de grupo de usuários para habilitar ou desabilitar erros relacionados à existência do usuário. Ao criar um cliente de aplicação utilizando a API de grupo de usuários do Amazon Cognito `LEGACY` será `PreventUserExistenceErrors` ou então desativada, por padrão. No console do Amazon Cognito, a opção **Habilitar a prevenção de erros de existência do usuário** — uma configuração de `ENABLED` para `PreventUserExistenceErrors` — é selecionada por padrão. Para atualizar a configuração `PreventUserExistenceErrors`, siga um destes procedimentos:
+ Altere o valor de `PreventUserExistenceErrors` entre `ENABLED` e `LEGACY` em uma solicitação da API [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html).
+ Edite seu cliente de aplicação no console do Amazon Cognito e altere o estado de **Habilitar a prevenção de erros de existência do usuário** entre selecionado (`ENABLED`) e desmarcado (`LEGACY`).

Quando essa propriedade tem um valor `LEGACY`, o cliente da aplicação retorna uma resposta de erro `UserNotFoundException` quando um usuário tenta fazer login com um nome de usuário que não existe no seu grupo de usuários.

Quando essa propriedade tem um valor `ENABLED`, o cliente da aplicação não divulga a inexistência de uma conta de usuário em seu grupo de usuários e exibe o erro `UserNotFoundException`. Uma configuração `PreventUserExistenceErrors` de `ENABLED` tem os seguintes efeitos quando você envia uma solicitação de um nome de usuário que não existe:
+ O Amazon Cognito responde com informações não específicas às solicitações de API, em que sua resposta poderia revelar a existência de um usuário válido.
+ O Amazon Cognito retorna uma resposta genérica de falha de autenticação para solicitações de esquecimento de senha e solicitações de autenticação com fluxos de autenticação, *exceto* para autenticação [baseada em opções](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) (`USER_AUTH`). Por exemplo, `USER_SRP_AUTH` ou `CUSTOM_AUTH`. A resposta de erro informa que o nome de usuário ou a senha está incorreta.
+ O Amazon Cognito responde às solicitações de autenticação baseada em opções com uma seleção aleatória dos tipos de desafio permitidos para o grupo de usuários. Seu grupo de usuários pode retornar uma chave de acesso, senha de uso único ou desafio de senha.
+ O comportamento da confirmação da conta do Amazon Cognito e da recuperação de senha APIs alterna entre retornar uma resposta indicando que um código foi enviado para uma mídia de entrega simulada e retornar um erro. `InvalidParameterException`

As informações a seguir detalham os comportamentos das operações do grupo de usuários quando `PreventUserExistenceErrors` está definido como `ENABLED`.

## Operações de criação e autenticação de usuários
<a name="cognito-user-pool-managing-errors-user-auth"></a>

Você pode configurar respostas de erro na autenticação de nome de usuário-senha e Senha remota segura (SRP). Também é possível personalizar os erros retornados com a autenticação personalizada. A autenticação baseada em opções não é afetada pela sua configuração `PreventUserExistenceErrors`.Detalhes da divulgação da existência do usuário nos fluxos de autenticação

**Autenticação baseada em opções**  
No fluxo de autenticação baseado em opções `USER_AUTH`, o Amazon Cognito retorna um desafio dos principais fatores de autenticação que estão disponíveis, dependendo da configuração do seu grupo de usuários e dos atributos dos usuários. Esse fluxo de autenticação pode retornar desafios de senha, senha remota segura (SRP), WebAuthn (chave de acesso), senha de uso único por SMS (OTP) ou OTP por e-mail. Com a opção `PreventUserExistenceErrors` ativa, o Amazon Cognito desafia usuários inexistentes a realizarem uma ou mais das formas de autenticação disponíveis. Com `PreventUserExistenceErrors` inativo, o Amazon Cognito retorna uma exceção `UserNotFound`.

**Autenticação com nome de usuário e senha**  
Os fluxos de autenticação `ADMIN_USER_PASSWORD_AUTH` e `USER_PASSWORD_AUTH`, além do fluxo `PASSWORD` de `USER_AUTH` retornam `NotAuthorizedException` com a mensagem `Incorrect username or password` quando `PreventUserExistenceErrors` está ativo. Quando `PreventUserExistenceErrors` está inativo, esses fluxos retornam `UserNotFoundException`.

**Autenticação baseada em senha remota segura (SRP)**  
Como prática recomendada, implemente somente `PreventUserExistenceErrors` com `USER_SRP_AUTH` ou o fluxo `PASSWORD_SRP` de `USER_AUTH` grupos de usuários sem endereço de e-mail, número de telefone ou [atributos preferenciais de alias](user-pool-settings-attributes.md#user-pool-settings-aliases) de nome de usuário. Usuários com atributos de alias podem não estar sujeitos à supressão da existência do usuário no fluxo de autenticação SRP. Os fluxos de autenticação de nome de usuário e senha, `ADMIN_USER_PASSWORD_AUTH`, `USER_PASSWORD_AUTH` e o desafio `USER_AUTH` `PASSWORD`, suprimem totalmente a existência de usuários com base em atributos de alias.  
Quando alguém tenta fazer login no SRP com um nome de usuário não conhecido pelo cliente de aplicação, o Amazon Cognito retorna uma resposta simulada na primeira etapa conforme descrito em [RFC 5054](https://tools.ietf.org/html/rfc5054#section-2.5.1.3). O Amazon Cognito retorna o mesmo salt e um ID de usuário interno no formato de [UUID](cognito-terms.md#terms-uuid) para a mesma combinação de nome de usuário e grupo de usuários. Quando você envia uma solicitação de API `RespondToAuthChallenge` com prova de senha, o Amazon Cognito retorna um erro genérico `NotAuthorizedException` quando o nome de usuário ou a senha está incorreta. Para obter mais informações sobre como implementar uma autenticação SRP, consulte [Fazer login com senhas persistentes e carga útil segura](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-srp).  
Você pode simular uma resposta genérica com a autenticação de nome de usuário e senha se estiver usando atributos de alias baseados em verificação e se o nome de usuário imutável não estiver formatado como um [UUID](cognito-terms.md#terms-uuid).

**Acionador do Lambda do desafio de autenticação personalizada**  
O Amazon Cognito invoca os [acionadores do Lambda do desafio de autenticação personalizada](user-pool-lambda-challenge.md) quando os usuários tentam fazer login com o fluxo de autenticação `CUSTOM_AUTH`, mas o nome de usuário não é encontrado. O evento de entrada inclui um parâmetro booleano nomeado `UserNotFound` com um valor de `true` para qualquer usuário inexistente. Esse parâmetro aparece nos eventos de solicitação que seu grupo de usuários envia às funções do Lambda do desafio de criação, definição e verificação de autenticação que compõem a arquitetura de autenticação personalizada. Ao examinar esse indicador na lógica da função do Lambda, você pode simular desafios de autenticação personalizados para usuários não existentes.

**Acionador do Lambda de pré-autenticação**  
O Amazon Cognito invoca o [acionador de pré-autenticação](user-pool-lambda-pre-authentication.md) quando os usuários tentam fazer login, mas o nome de usuário não é encontrado. O evento de entrada inclui um parâmetro `UserNotFound` com um valor de `true` para qualquer usuário inexistente.

A lista a seguir descreve o efeito `PreventUserExistenceErrors` na criação de contas de usuário.Detalhes da divulgação da existência do usuário nos fluxos de criação do usuário

**SignUp**  
A operação `SignUp` sempre retorna `UsernameExistsException` quando um nome de usuário já está sendo usado. Se você não quiser que o Amazon Cognito retorne um erro `UsernameExistsException` para endereços de e-mail e números de telefone ao inscrever usuários na aplicação, use atributos de alias baseados em verificação. Para obter mais informações sobre aliases, consulte [Personalização dos atributos de login](user-pool-settings-attributes.md#user-pool-settings-aliases).  
Para ver um exemplo de como o Amazon Cognito pode impedir o uso de solicitações da API `SignUp` para descobrir usuários no grupo de usuários, consulte [Evitar erros `UsernameExistsException` de endereços de e-mail e números de telefone na inscrição](#cognito-user-pool-managing-errors-prevent-userexistence-errors).

**Usuários importados**  
Se `PreventUserExistenceErrors` estiver habilitado durante a autenticação de usuários importados, será retornado um erro genérico `NotAuthorizedException`, que indica que o nome de usuário ou a senha estava incorreta, em vez de `PasswordResetRequiredException`. 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) para obter mais informações.

**Migrar o acionador do Lambda do usuário**  
O Amazon Cognito retornará uma resposta simulada para usuários não existentes quando uma resposta vazia tiver sido definida no contexto do evento original pelo acionador do Lambda. Para obter mais informações, consulte [Como importar usuários com um acionador do Lambda de migração de usuários](cognito-user-pools-import-using-lambda.md). 

### Evitar erros `UsernameExistsException` de endereços de e-mail e números de telefone na inscrição
<a name="cognito-user-pool-managing-errors-prevent-userexistence-errors"></a>

O exemplo a seguir demonstra como, ao configurar atributos de alias no grupo de usuários, você pode impedir que endereços de e-mail e números de telefone duplicados gerem erros `UsernameExistsException` em resposta às solicitações da API `SignUp`. Você deve ter criado o grupo de usuários com o endereço de e-mail ou o número de telefone como atributos de alias. Para obter mais informações, consulte a seção *Personalizar atributos de login* de [Atributos de grupos de usuários](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-attributes.html#user-pool-settings-aliases).

1. Jie se inscreve com um novo nome de usuário e também fornece o endereço de e-mail `jie@example.com`. O Amazon Cognito envia um código para o endereço de e-mail dele.

   **Exemplo de AWS CLI comando**

   ```
   aws cognito-idp sign-up --client-id 1234567890abcdef0 --username jie --password PASSWORD --user-attributes Name="email",Value="jie@example.com"
   ```

   **Exemplo de resposta**

   ```
   {
       "UserConfirmed": false, 
       "UserSub": "<subId>", 
       "CodeDeliveryDetails": {
           "AttributeName": "email", 
           "Destination": "j****@e****", 
           "DeliveryMedium": "EMAIL"
       }
   }
   ```

1. Jie fornece o código enviado a ele para confirmar a propriedade do endereço de e-mail. Isso conclui seu registro como usuário.

   **Exemplo de AWS CLI comando**

   ```
   aws cognito-idp confirm-sign-up --client-id 1234567890abcdef0 --username=jie --confirmation-code xxxxxx
   ```

1. Shirley registra uma nova conta de usuário e fornece o endereço de e-mail `jie@example.com`. O Amazon Cognito não retorna um erro `UsernameExistsException` e envia um código de confirmação para o endereço de e-mail de Jie.

   **Exemplo de AWS CLI comando**

   ```
   aws cognito-idp sign-up --client-id 1234567890abcdef0 --username shirley --password PASSWORD --user-attributes Name="email",Value="jie@example.com"
   ```

   **Exemplo de resposta**

   ```
   {
       "UserConfirmed": false, 
       "UserSub": "<new subId>", 
       "CodeDeliveryDetails": {
           "AttributeName": "email", 
           "Destination": "j****@e****", 
           "DeliveryMedium": "EMAIL"
       }
   }
   ```

1. Em um cenário diferente, Shirley é proprietária de `jie@example.com`. Shirley recupera o código que o Amazon Cognito enviou para o endereço de e-mail de Jie e tenta confirmar a conta.

   **Exemplo de AWS CLI comando**

   ```
   aws cognito-idp confirm-sign-up --client-id 1234567890abcdef0 --username=shirley --confirmation-code xxxxxx
   ```

   **Exemplo de resposta**

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

O Amazon Cognito não retorna um erro à solicitação `aws cognito-idp sign-up` de Shirley, apesar de `jie@example.com` ter sido atribuído a um usuário existente. Shirley deve demonstrar a propriedade do endereço de e-mail antes que o Amazon Cognito retorne uma resposta de erro. Em um grupo de usuários com atributos de alias, esse comportamento impede o uso da API `SignUp` pública para verificar se existe um usuário com um determinado endereço de e-mail ou número de telefone.

Esse comportamento é diferente da resposta que o Amazon Cognito retorna à solicitação `SignUp` com um nome de usuário existente, conforme mostrado no exemplo a seguir. Embora Shirley saiba, com base nessa resposta, que já existe um usuário com o nome `jie`, não é possível saber sobre nenhum endereço de e-mail ou número de telefone associado ao usuário.

**Exemplo de comando da CLI**

```
aws cognito-idp sign-up --client-id 1example23456789 --username jie --password PASSWORD
      --user-attributes Name="email",Value="shirley@example.com"
```

**Exemplo de resposta**

```
An error occurred (UsernameExistsException) when calling the SignUp operation: User already exists
```

## Operações de redefinição de senha
<a name="cognito-user-pool-managing-errors-password-reset"></a>

O Amazon Cognito retorna as respostas a seguir às operações de redefinição de senha do usuário quando você evita erros de existência do usuário.

**ForgotPassword**  
Quando um usuário não é encontrado, está desativado ou não tem um mecanismo de entrega verificado para recuperar a senha, o Amazon Cognito retorna `CodeDeliveryDetails` com um meio de entrega simulado para um usuário. O meio de entrega simulado é determinado pelo formato de entrada do nome de usuário e as configurações de verificação do grupo de usuários.

**ConfirmForgotPassword**  
O Amazon Cognito retorna o erro `CodeMismatchException` para usuários que não existem ou estão desabilitados. Se um código não for solicitado ao ser usado o `ForgotPassword`, o Amazon Cognito retornará o erro `ExpiredCodeException`.

## Operações de confirmação
<a name="cognito-user-pool-managing-errors-confirmation"></a>

O Amazon Cognito retorna as respostas a seguir às operações de confirmação e verificação do usuário quando você evita erros de existência do usuário.

**ResendConfirmationCode**  
O Amazon Cognito retorna `CodeDeliveryDetails` para um usuário desabilitado ou um usuário que não existe. O Amazon Cognito envia um código de confirmação para o e-mail ou telefone do usuário existente.

**ConfirmSignUp**  
 Retorna `ExpiredCodeException` se um código tiver expirado. O Amazon Cognito retorna `NotAuthorizedException` quando um usuário não está autorizado. Se o código não corresponder ao que o servidor espera que o Amazon Cognito retorne `CodeMismatchException`. 