

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

# Autenticação com grupos de usuários do Amazon Cognito
<a name="authentication"></a>

O Amazon Cognito inclui vários métodos para autenticar os usuários. Os usuários podem fazer login com WebAuthn senhas e chaves de acesso. O Amazon Cognito pode enviar a eles uma senha de uso único por e-mail ou SMS. Você pode implementar funções do Lambda que orquestram sua própria sequência de desafios e respostas. Esses são *fluxos de autenticação*. Nos fluxos de autenticação, os usuários fornecem um segredo e o Amazon Cognito verifica o segredo e, em seguida, emite tokens web JSON (JWTs) para os aplicativos processarem com bibliotecas do OIDC. Neste capítulo, falaremos sobre como configurar grupos de usuários e clientes da aplicação para vários fluxos de autenticação em vários ambientes de aplicações. Você aprenderá sobre as opções para o uso das páginas de login hospedadas do login gerenciado e para criar sua própria lógica e front-end em um AWS SDK.

Todos os grupos de usuários, independentemente de você ter um domínio ou não, podem autenticar usuários na API de grupos de usuários. Se adicionar um domínio ao grupo de usuários, você poderá usar os [endpoints do grupo de usuários](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-userpools-server-contract-reference.html). A API de grupos de usuários é compatível com uma variedade de modelos de autorização e fluxos de solicitações de API.

Para verificar a identidade dos usuários, o Amazon Cognito é compatível com fluxos de autenticação que incorporam tipos de desafio, além de senhas, como senhas de uso único e chaves de acesso enviadas por e-mail e SMS.

**Topics**
+ [Implementar fluxos de autenticação](#authentication-implement)
+ [Coisas a saber sobre a autenticação com grupos de usuários](#authentication-flow-things-to-know)
+ [Um exemplo de sessão de autenticação](#amazon-cognito-user-pools-authentication-flow)
+ [Configurar métodos de autenticação para login gerenciado](authentication-flows-selection-managedlogin.md)
+ [Gerencie métodos de autenticação em AWS SDKs](authentication-flows-selection-sdk.md)
+ [Fluxos de autenticação](amazon-cognito-user-pools-authentication-flow-methods.md)
+ [Modelos de autorização para autenticação de API e SDK](authentication-flows-public-server-side.md)

## Implementar fluxos de autenticação
<a name="authentication-implement"></a>

Se você está implementando o [login gerenciado](authentication-flows-selection-managedlogin.md) ou um [front-end de aplicativo personalizado](authentication-flows-selection-sdk.md) com um AWS SDK para autenticação, você deve configurar seu cliente de aplicativo para os tipos de autenticação que deseja implementar. As informações a seguir descrevem a configuração dos fluxos de autenticação em seus [clientes da aplicação](user-pool-settings-client-apps.md) e em sua aplicação.

------
#### [ App client supported flows ]

Você pode configurar fluxos compatíveis para seus clientes de aplicativos no console do Amazon Cognito ou com a API em um AWS SDK. Após configurar o cliente da aplicação para oferecer suporte a esses fluxos, você poderá implantá-los em sua aplicação.

O procedimento a seguir configura os fluxos de autenticação disponíveis para um cliente da aplicação com o console do Amazon Cognito.

**Como configurar um cliente da aplicação para fluxos de autenticação (console)**

1. Faça login AWS e navegue até o console de [grupos de usuários do Amazon Cognito](https://console.aws.amazon.com/cognito/v2/idp). Selecione um grupo de usuários ou crie um.

1. Na configuração do grupo de usuários, clique no menu **Clientes da aplicação**. Selecione um cliente da aplicação ou crie um.

1. Em **Informações do cliente de aplicação**, clique em **Editar**.

1. Em **Fluxos do cliente da aplicação**, escolha os fluxos de autenticação que você deseja oferecer suporte.

**Como configurar um cliente da aplicação para fluxos de autenticação (API/SDK)**  
Para configurar os fluxos de autenticação disponíveis para um cliente de aplicativo com a API do Amazon Cognito, defina o valor de `ExplicitAuthFlows` em uma solicitação [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html#CognitoUserPools-CreateUserPoolClient-request-ExplicitAuthFlows)or [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html#CognitoUserPools-UpdateUserPoolClient-request-ExplicitAuthFlows). Veja a seguir um exemplo que fornece senha remota segura (SRP) e autenticação baseada em opções para um cliente.

```
"ExplicitAuthFlows": [ 
   "ALLOW_USER_AUTH",
   "ALLOW_USER_SRP_AUTH
]
```

Ao configurar fluxos compatíveis com o cliente da aplicação, você poderá especificar os valores da API e as opções abaixo.


**Suporte ao fluxo do cliente da aplicação**  

| Fluxo de autenticação | Compatibilidade | Console | solicitações de  | 
| --- | --- | --- | --- | 
| [Autenticação baseada em opções](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) | Lado do servidor, lado do cliente | Selecionar um tipo de autenticação no login | ALLOW\$1USER\$1AUTH | 
| [Fazer login com senhas persistentes](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-password) | Lado do cliente | Fazer login com nome de usuário e senha | ALLOW\$1USER\$1PASSWORD\$1AUTH | 
| [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) | Lado do servidor, lado do cliente | Fazer login com senha remota segura (SRP) | ALLOW\$1USER\$1SRP\$1AUTH | 
| [Atualizar tokens](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-refresh) | Lado do servidor, lado do cliente | Receber novos tokens de usuário de sessões autenticadas existentes | ALLOW\$1REFRESH\$1TOKEN\$1AUTH | 
| [Autenticação no lado do servidor](authentication-flows-public-server-side.md#amazon-cognito-user-pools-server-side-authentication-flow) | Lado do servidor | Fazer login com credenciais administrativas do lado do servidor | ALLOW\$1ADMIN\$1USER\$1PASSWORD\$1AUTH | 
| [Autenticação personalizada](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-custom) | Aplicações personalizadas dos lados do servidor e do cliente. Não é compatível com o login gerenciado. | Fazer login com fluxos de autenticação personalizados dos acionadores do Lambda | ALLOW\$1CUSTOM\$1AUTH | 

------
#### [ Implement flows in your application ]

O login gerenciado disponibiliza automaticamente as opções de autenticação configuradas em suas páginas de login. Em aplicações personalizadas, inicie a autenticação com uma declaração do fluxo inicial.
+ Para escolher entre uma lista de opções de fluxo para um usuário, declare a [autenticação baseada em opções](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) com o fluxo `USER_AUTH`. Esse fluxo tem métodos de autenticação disponíveis que não estão disponíveis nos fluxos de autenticação baseada em clientes, por exemplo, autenticação por [chave de acesso](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passkey) e autenticação [sem senha](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless).
+ Para escolher seu fluxo de autenticação com antecedência, declare a [autenticação baseada em clientes](authentication-flows-selection-sdk.md#authentication-flows-selection-client) juntamente com qualquer outro fluxo disponível no cliente da aplicação.

Quando você faz login com usuários, o corpo da sua [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#CognitoUserPools-AdminInitiateAuth-request-AuthFlow)solicitação [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-AuthFlow)ou solicitação deve incluir um `AuthFlow` parâmetro.

Autenticação baseada em opções:

```
"AuthFlow": "USER_AUTH"
```

Autenticação baseada em clientes com SRP:

```
"AuthFlow": "USER_SRP_AUTH"
```

------

## Coisas a saber sobre a autenticação com grupos de usuários
<a name="authentication-flow-things-to-know"></a>

Considere as informações a seguir no design do modelo de autenticação com grupos de usuários do Amazon Cognito.

**Fluxos de autenticação no login gerenciado e na IU hospedada**  
O [login gerenciado](cognito-user-pools-managed-login.md) tem mais opções de autenticação do que a IU hospedada clássica. Por exemplo, os usuários podem fazer autenticação sem senha e com chave de acesso somente no login gerenciado.

**Fluxos de autenticação personalizados disponíveis somente na autenticação AWS do SDK**  
Não é possível criar *fluxos de autenticação personalizados*, nem [autenticação personalizada com acionadores do Lambda](user-pool-lambda-challenge.md), usando o login gerenciado ou a IU hospedada clássica. A autenticação personalizada está disponível na [autenticação com AWS SDKs](authentication-flows-selection-sdk.md).

**Login gerenciado para login do provedor de identidades (IdP) externo**  
Você não pode fazer login de usuários por meio [de terceiros IdPs](cognito-user-pools-identity-federation.md) na [autenticação com AWS SDKs](authentication-flows-selection-sdk.md). Você deve implementar o login gerenciado ou a interface de usuário hospedada clássica, redirecionar IdPs e processar o objeto de autenticação resultante com as bibliotecas do OIDC em seu aplicativo. Para obter mais informações sobre o login gerenciado, consulte [Login gerenciado do grupo de usuários](cognito-user-pools-managed-login.md).

**Efeito da autenticação sem senha em outros recursos do usuário**  
A ativação do login sem senha com [senhas de uso único](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless) ou [chaves de acesso](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passkey) no grupo de usuários e no cliente da aplicação afeta a criação e a migração de usuários. Quando o login sem senha está ativo:  

1. Os administradores podem criar usuários sem senhas. O modelo de mensagem de convite padrão é alterado para não incluir mais o espaço reservado para senha `{###}`. Para obter mais informações, consulte [Como criar contas de usuário como administrador](how-to-create-user-accounts.md).

1. Para [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)operações baseadas em SDK, os usuários não precisam fornecer uma senha ao se inscreverem. O login gerenciado e a IU hospedada exigem uma senha na página de cadastro, mesmo que a autenticação sem senha seja permitida. Para obter mais informações, consulte [Como cadastrar e confirmar contas de usuários](signing-up-users-in-your-app.md).

1. Os usuários importados de um arquivo CSV podem fazer login imediatamente com opções sem senha, sem a necessidade de redefinição de senha, se seus atributos incluírem um endereço de e-mail ou número de telefone para uma opção de login sem senha disponível. Para obter mais informações, consulte [Como importar usuários para grupos de usuários com base em um arquivo CSV](cognito-user-pools-using-import-tool.md).

1. A autenticação sem senha não invoca o [acionador do Lambda de migração de usuários](user-pool-lambda-migrate-user.md).

1. Os usuários que fazem login com um primeiro fator de senha de uso único (OTP) não podem adicionar um fator de autenticação [multifator (MFA)](user-pool-settings-mfa.md) à sessão. As chaves de acesso com verificação do usuário podem atender aos requisitos de MFA quando configuradas com. `MULTI_FACTOR_WITH_USER_VERIFICATION`

**A parte confiável da chave de acesso não URLs pode estar na lista pública de sufixos**  
Você pode usar nomes de domínio que você possui, como `www.example.com`, como o ID de parte confiável (RP) na configuração da chave de acesso. Essa configuração se destina a oferecer suporte a aplicações personalizadas executadas em domínios que você possui. A [lista de sufixos públicos](https://publicsuffix.org/), ou PSL, contém domínios de alto nível protegidos. O Amazon Cognito retorna um erro quando você tenta definir o URL de RP como um domínio na PSL.

**Topics**
+ [Duração do fluxo da sessão de autenticação](#authentication-flow-session-duration)
+ [Comportamento de bloqueio em tentativas fracassadas de login](#authentication-flow-lockout-behavior)

### Duração do fluxo da sessão de autenticação
<a name="authentication-flow-session-duration"></a>

Dependendo dos recursos do grupo de usuários, você pode acabar respondendo a vários desafios para `InitiateAuth` e `RespondToAuthChallenge` antes da aplicação recuperar tokens do Amazon Cognito. O Amazon Cognito inclui uma string de sessão na resposta a cada solicitação. Para combinar suas solicitações de API em um fluxo de autenticação, inclua a string da sessão da resposta à solicitação anterior em cada solicitação subsequente. Por padrão, os usuários têm três minutos para concluir cada desafio antes que a string da sessão expire. Para ajustar esse período, altere o cliente da aplicação **Authentication flow session duration** (Duração da sessão do fluxo de autenticação). O procedimento a seguir descreve como alterar essa definição na configuração do cliente da aplicação.

**nota**  
As configurações de **duração da sessão do fluxo de autenticação** se aplicam à autenticação com a API de grupos de usuários do Amazon Cognito. O login gerenciado define a duração da sessão como 3 minutos para autenticação multifator e 8 minutos para códigos de redefinição de senha.

------
#### [ Amazon Cognito console ]

**Como configurar a duração da sessão do fluxo de autenticação do cliente da aplicação (Console de gerenciamento da AWS)**

1. Na guia **App integration** (Integração de aplicações) no grupo de usuários, selecione o nome do cliente da aplicação no contêiner **App clients and analytics** (Clientes e análise de aplicações).

1. Selecione **Editar** no contêiner **Informações do cliente da aplicação**.

1. Altere o valor de **Duração da sessão de fluxo de autenticação** para a duração de validade desejada, em minutos, para códigos de MFA por e-mail ou SMS. Isso também altera a quantidade de tempo que qualquer usuário tem para concluir qualquer desafio de autenticação no cliente da aplicação.

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

------
#### [ User pools API ]

**Como configurar a duração da sessão do fluxo de autenticação do cliente da aplicação (API do Amazon Cognito)**

1. Prepare uma solicitação `UpdateUserPoolClient` com as configurações existentes de seu grupo de usuários usando uma solicitação `DescribeUserPoolClient`. A solicitação `UpdateUserPoolClient` deve incluir todas as propriedades existentes do cliente da aplicação.

1. Altere o valor de `AuthSessionValidity` para a duração de validade desejada, em minutos, para códigos de MFA por SMS. Isso também altera a quantidade de tempo que qualquer usuário tem para concluir qualquer desafio de autenticação no cliente da aplicação.

------

Para obter mais informações sobre clientes de aplicação, consulte [Configurações específicas da aplicação com clientes de aplicação](user-pool-settings-client-apps.md).

### Comportamento de bloqueio em tentativas fracassadas de login
<a name="authentication-flow-lockout-behavior"></a>

Após cinco tentativas de login com falha com a senha do usuário, independentemente de serem solicitadas com operações de API não autenticadas ou autorizadas pelo IAM, o Amazon Cognito bloqueia o usuário por 1 segundo. A duração do bloqueio dobra após cada tentativa adicional fracassada, até um máximo de aproximadamente 15 minutos.

As tentativas feitas durante um período de bloqueio geram uma exceção `Password attempts exceeded` e não afetam a duração dos períodos de bloqueio subsequentes. Para um número cumulativo de tentativas fracassadas de login *n*, sem incluir exceções `Password attempts exceeded`, o Amazon Cognito bloqueia o usuário por *2^(n-5)* segundos. Para redefinir o bloqueio como o estado inicial *n=0*, o usuário deve fazer login com êxito após o término do período de bloqueio ou não iniciar nenhuma tentativa de login por 15 minutos consecutivos a qualquer momento após um bloqueio. Esse comportamento está sujeito a alterações. Esse comportamento não se aplica aos desafios personalizados, a menos que eles também realizem a autenticação baseada em senha.

## Um exemplo de sessão de autenticação
<a name="amazon-cognito-user-pools-authentication-flow"></a>

O diagrama e o step-by-step guia a seguir ilustram um cenário típico em que um usuário faz login em um aplicativo. A aplicação de exemplo apresenta ao usuário várias opções de login. Ele seleciona uma inserindo suas credenciais, fornece um fator de autenticação adicional e faz login.

![\[Um fluxograma que mostra um aplicativo que solicita a entrada do usuário e faz login com um AWS SDK.\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/authentication-api-userauth.png)


Imagine uma aplicação com uma página de login na qual os usuários podem fazer login com nome de usuário e senha, solicitar um código de uso único enviado por e-mail ou escolher uma opção de impressão digital.

1. **Solicitação de login:** a aplicação mostra uma tela inicial com um botão *Fazer login*.

1. **Solicitar login**: o usuário seleciona *Fazer login*. Com base em um cookie ou cache, a aplicação recupera o nome de usuário ou solicita que ele o insira.

1. **Opções de solicitação**: a aplicação solicita as opções de login do usuário por meio de uma solicitação de API `InitiateAuth` com o fluxo `USER_AUTH`, solicitando os métodos de login disponíveis para o usuário.

1. **Enviar opções de login**: o Amazon Cognito responde com `PASSWORD`, `EMAIL_OTP` e `WEB_AUTHN`. A resposta inclui um identificador de sessão para você reproduzir na próxima resposta.

1. **Opções de exibição**: a aplicação mostra elementos de IU para que o usuário insira seu nome de usuário e senha, obtenha um código de uso único ou escaneie sua impressão digital.

1. **Escolha option/Enter as credenciais**: o usuário insere seu nome de usuário e senha.

1. **Iniciar autenticação**: a aplicação fornece as informações de login do usuário por meio de uma solicitação de API `RespondToAuthChallenge` que confirma o login com nome de usuário e senha e fornece o nome de usuário e a senha.

1. **Validar credenciais**: o Amazon Cognito confirma as credenciais do usuário.

1. **Desafio adicional**: o usuário tem a autenticação multifator configurada com uma aplicação autenticadora. O Amazon Cognito retorna um desafio `SOFTWARE_TOKEN_MFA`.

1. **Solicitação de desafio**: a aplicação exibe um formulário solicitando uma senha de uso único com marcação temporal (TOTP) da aplicação autenticadora do usuário.

1. **Responder ao desafio**: o usuário envia a TOTP.

1. **Responder ao desafio**: em outra solicitação `RespondToAuthChallenge`, a aplicação fornece a TOTP do usuário.

1. **Validar a resposta ao desafio**: o Amazon Cognito confirma o código do usuário e determina que o grupo de usuários está configurado para não emitir desafios adicionais para o usuário atual.

1. **Emitir tokens**: o Amazon Cognito retorna tokens web JSON de ID, acesso e atualização (). JWTs A autenticação inicial do usuário está concluída.

1. **Armazenar tokens**: a aplicação armazena em cache os tokens do usuário para poder referenciar os dados do usuário, autorizar o acesso a recursos e atualizar os tokens quando eles expirarem.

1. **Renderizar conteúdo autorizado**: a aplicação determina o acesso do usuário aos recursos com base em sua identidade e funções e fornece o conteúdo da aplicação.

1. **Acessar conteúdo**: o usuário está conectado e começa a usar a aplicação.

1. **Solicitar conteúdo com token expirado**: posteriormente, o usuário solicita um recurso que requer autorização. O token em cache do usuário expirou.

1. **Tokens de atualização**: a aplicação faz uma solicitação `InitiateAuth` com o token de atualização salvo do usuário.

1. **Emitir tokens**: o Amazon Cognito retorna novo ID e acesso. JWTs A sessão do usuário é atualizada com segurança sem solicitações adicionais de credenciais.

Você pode usar [acionadores do AWS Lambda](cognito-user-pools-working-with-lambda-triggers.md) para personalizar a maneira como os usuários se autenticam. Esses triggers emitem e verificam seus próprios desafios como parte do fluxo de autenticação.

Também é possível usar o fluxo de autenticação de administrador para servidores de backend seguros. É possível usar o [fluxo de autenticação de migração do usuário](cognito-user-pools-using-import-tool.md) para permitir essa migração sem exigir que os usuários redefinam suas senhas.

# Configurar métodos de autenticação para login gerenciado
<a name="authentication-flows-selection-managedlogin"></a>

Você pode invocar [páginas de login gerenciado](cognito-user-pools-managed-login.md), um frontend da web para autenticação de grupos de usuários, quando quiser que os usuários façam login, logout ou redefinam suas senhas. Nesse modelo, a aplicação importa bibliotecas do OIDC para processar tentativas de autenticação baseadas em navegador com páginas de login gerenciado de grupos de usuários. As formas de autenticação disponíveis para os usuários dependem da configuração do grupo de usuários e do cliente da aplicação. Implemente o fluxo `ALLOW_USER_AUTH` no cliente da aplicação e o Amazon Cognito solicitará que os usuários selecionem um método de login entre as opções disponíveis. Implemente `ALLOW_USER_PASSWORD_AUTH` e atribua um provedor SAML e as páginas de login solicitarão aos usuários a opção de inserir seu nome de usuário e senha ou de se conectar ao IdP.

O console de grupos de usuários do Amazon Cognito pode auxiliar na configuração da autenticação de login gerenciado para sua aplicação. Ao criar um novo grupo de usuários, especifique a plataforma para a qual você está desenvolvendo e o console fornece exemplos de implementação de OIDC e OAuth bibliotecas com código inicial para implementar fluxos de entrada e saída. Você pode criar login gerenciado com diversas implementações de partes confiáveis do OIDC. Recomendamos que você trabalhe com [bibliotecas de partes confiáveis do OIDC certificadas](https://openid.net/developers/certified-openid-connect-implementations/) sempre que possível. Para obter mais informações, consulte [Conceitos básicos dos grupos de usuários](getting-started-user-pools.md).

Normalmente, as bibliotecas confiáveis do OIDC verificam periodicamente o `.well-known/openid-configuration` endpoint do seu grupo de usuários para determinar o emissor, URLs como o endpoint do token e o endpoint da autorização. Como prática recomendada, implemente esse comportamento de descoberta automática sempre que possível. A configuração manual dos endpoints do emissor apresenta potencial de erro. Por exemplo, você pode alterar o domínio do grupo de usuários. O caminho para `openid-configuration` não está vinculado ao domínio do grupo de usuários, portanto, as aplicações que descobrem automaticamente os endpoints de serviço detectarão automaticamente a alteração do domínio.

## Configurações do grupo de usuários para login gerenciado
<a name="authentication-flows-selection-managedlogin-settings"></a>

Recomenda-se permitir o login com vários provedores para sua aplicação ou usar o Amazon Cognito como um diretório de usuários independente. É recomendável também coletar atributos do usuário, configurar e solicitar a MFA ou exigir endereços de e-mail como nomes de usuário. Não é possível editar diretamente os campos no login gerenciado e na IU hospedada. Em vez disso, a configuração do grupo de usuários define automaticamente o tratamento dos fluxos de autenticação de login gerenciado.

Os itens de configuração do grupo de usuários a seguir determinam os métodos de autenticação que o Amazon Cognito apresenta aos usuários no login gerenciado e na IU hospedada.

------
#### [ User pool options (Sign-in menu) ]

As opções a seguir estão no menu **Fazer login** de um grupo de usuários no console do Amazon Cognito.

**Opções de login do grupo de usuários do Cognito**  
Tem opções para nomes de usuário. Suas páginas de login gerenciado e IU hospedada aceitam somente os nomes de usuário nos formatos que você selecionar. Por exemplo, ao configurar um grupo de usuários com **e-mail** como a única opção de login, as páginas de login gerenciado só aceitarão nomes de usuário em formato de e-mail.

**Atributos obrigatórios**  
Ao definir um atributo como obrigatório no grupo de usuários, o login gerenciado solicita aos usuários um valor para esse atributo no momento do cadastro.

**Opções para login baseado em opções**  
Tem configurações para métodos de autenticação em [Autenticação baseada em opções](authentication-flows-selection-sdk.md#authentication-flows-selection-choice). Aqui, você pode ativar ou desativar métodos de autenticação, como [chave de acesso](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passkey) e [sem senha](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless). Esses métodos estão disponíveis somente para grupos de usuários com [domínios de login gerenciado](managed-login-branding.md) e [planos de recursos](cognito-sign-in-feature-plans.md) acima do nível **Lite**.

**Autenticação multifator**  
O login gerenciado e a IU hospedada lidam com as operações de registro e autenticação para [MFA](user-pool-settings-mfa.md). Quando a MFA é obrigatória no grupo de usuários, as páginas de login solicitam automaticamente que os usuários configurem seu fator adicional. Elas também solicitam que os usuários com MFA configurada concluam a autenticação com um código de MFA. Quando a MFA está desativada ou opcional no grupo de usuários, as páginas de login não solicitam a configuração da MFA.

**Recuperação de contas de usuários**  
A configuração de [recuperação de contas]() por autoatendimento do grupo de usuários determina se as páginas de login exibem um link no qual os usuários podem redefinir suas senhas.

------
#### [ User pool options (Domain menu) ]

As opções a seguir estão no menu **Domínio** de um grupo de usuários no console do Amazon Cognito.

**Domínio**  
Sua escolha de domínio do grupo de usuários define o caminho para o link que os usuários abrem quando você invoca seus navegadores para autenticação.

**Versão de marca**  
Sua escolha de uma versão de marca define se o domínio do grupo de usuários exibe o login gerenciado ou a IU hospedada.

------
#### [ User pool options (Social and external providers menu) ]

A opção a seguir está no menu **Provedores sociais e externos** de um grupo de usuários no console do Amazon Cognito.

**Provedores**  
Os provedores de identidade (IdPs) que você adiciona ao seu grupo de usuários podem ficar ativos ou inativos para cada cliente de aplicativo no grupo de usuários.

------
#### [ App client options ]

As opções a seguir estão no menu **Clientes da aplicação** de um grupo de usuários no console do Amazon Cognito. Para analisar essas opções, selecione um cliente da aplicação na lista.

**Guia de configuração rápida**  
O guia de configuração rápida tem exemplos de código para diversos ambientes de desenvolvimento. Ele inclui as bibliotecas necessárias para integrar a autenticação de login gerenciado à sua aplicação.

**Informações do cliente da aplicação**  
Edite essa configuração para definir atribuída IdPs ao aplicativo que é representado pelo cliente do aplicativo atual. Nas páginas de login gerenciado, o Amazon Cognito exibe opções para os usuários. Essas opções são determinadas pelos métodos e IdP atribuídos. Por exemplo, se você atribuir um IdP SAML 2.0 denominado `MySAML` e um login de grupo de usuários local, as páginas de login gerenciado exibirão solicitações de método de autenticação e um botão para `MySAML`.

**Configurações de Autenticação**  
Edite esta configuração para definir métodos de autenticação para a aplicação. Nas páginas de login gerenciado, o Amazon Cognito exibe opções para os usuários. Essas opções são determinadas pela disponibilidade do grupo de usuários como um IdP e pelos métodos que você atribui. Por exemplo, se você atribuir a autenticação `ALLOW_USER_AUTH` baseada em opções, as páginas de login gerenciado exibirão as opções disponíveis, como inserir um endereço de e-mail e fazer login com uma chave de acesso. As páginas de login gerenciadas também renderizam botões para os atribuídos IdPs.

**Páginas de login**  
Defina o efeito visual das páginas interativas de login gerenciado ou da IU hospedada com as opções disponíveis nesta guia. Para obter mais informações, consulte [Aplicar a identidade visual às páginas de login gerenciado](managed-login-branding.md).

------

# Gerencie métodos de autenticação em AWS SDKs
<a name="authentication-flows-selection-sdk"></a>

Os usuários nos grupos de usuários do Amazon Cognito podem fazer login com uma variedade de opções de login inicial, ou *fatores*. Para alguns fatores, os usuários podem complementar com a autenticação multifator (MFA). Esses primeiros fatores incluem nome de usuário e senha, senha de uso único, chave de acesso e autenticação personalizada. Para obter mais informações, consulte [Fluxos de autenticação](amazon-cognito-user-pools-authentication-flow-methods.md). Quando seu aplicativo tem componentes de interface de usuário integrados e importa um módulo AWS SDK, você deve criar a lógica do aplicativo para autenticação. Você deve escolher um dos dois métodos principais e, a partir desse método, os mecanismos de autenticação que deseja implementar.

Você pode implementar a *autenticação baseada em clientes*, onde sua aplicação, ou cliente, declara o tipo de autenticação com antecedência. A outra opção é a *autenticação baseada em opções*, em que a aplicação coleta um nome de usuário e solicita os tipos de autenticação disponíveis para os usuários. Você pode implementar esses modelos juntos no mesma aplicação ou dividi-los entre clientes da aplicação, de acordo com seus requisitos. Cada método tem recursos exclusivos, como autenticação personalizada na autenticação baseada em clientes e autenticação sem senha na autenticação baseada em opções.

Em aplicativos personalizados que realizam autenticação com a implementação do AWS SDK da API de grupos de usuários, você deve estruturar suas solicitações de API de acordo com a configuração do grupo de usuários, a configuração do cliente do aplicativo e as preferências do lado do cliente. Uma sessão `InitiateAuth` que começa com um `AuthFlow` de `USER_AUTH` inicia a autenticação baseada em opções. O Amazon Cognito responde à API com um desafio que consiste em um método de autenticação preferencial ou uma lista de opções. Uma sessão que começa com `AuthFlow` de `CUSTOM_AUTH` inicia diretamente a autenticação personalizada com acionadores do Lambda.

Alguns métodos de autenticação são fixos em um dos dois tipos de fluxo, e alguns métodos estão disponíveis em ambos.

**Topics**
+ [Autenticação baseada em opções](#authentication-flows-selection-choice)
+ [Autenticação baseada em clientes](#authentication-flows-selection-client)

## Autenticação baseada em opções
<a name="authentication-flows-selection-choice"></a>

Sua aplicação pode solicitar os métodos de autenticação a seguir na autenticação baseada em opções. Declare essas opções no `PREFERRED_CHALLENGE` parâmetro de [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-AuthParameters)ou [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#CognitoUserPools-AdminInitiateAuth-request-AuthParameters), ou no `ChallengeName` parâmetro de [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html#CognitoUserPools-RespondToAuthChallenge-request-ChallengeName)ou [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html#CognitoUserPools-AdminRespondToAuthChallenge-request-ChallengeName).

1. `EMAIL_OTP` e `SMS_OTP`

   [Fazer login sem senha com senhas de uso único](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless)

1. `WEB_AUTHN`

   [Login sem senha com chaves de acesso WebAuthn](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passkey)

1. `PASSWORD`

   [Fazer login com senhas persistentes](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-password)

   [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)

   [MFA após o login](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-mfa)

Para revisar essas opções em seu contexto de API, consulte `ChallengeName` em [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html#CognitoUserPools-RespondToAuthChallenge-request-ChallengeName).

O login baseado em opções gera um desafio em resposta à solicitação inicial. Esse desafio verifica se a opção solicitada está disponível ou fornece uma lista das opções disponíveis. Sua aplicação pode exibir essas opções para os usuários, que então inserem as credenciais do método de login preferencial e prosseguem com a autenticação nas respostas do desafio.

Você tem as seguintes opções de autenticação baseada em opções em seu fluxo de autenticação. Todas as solicitações desse tipo exigem que sua aplicação primeiro colete um nome de usuário ou o recupere de um cache.

1. Solicite opções somente com `AuthParameters` de `USERNAME`. O Amazon Cognito retorna um desafio `SELECT_CHALLENGE`. A partir daí, sua aplicação pode solicitar que o usuário selecione um desafio e então retornar essa resposta ao grupo de usuários.

1. Solicite um desafio preferencial com `AuthParameters` de `PREFERRED_CHALLENGE` e os parâmetros de seu desafio preferencial, se houver. Por exemplo, se você solicitar um `PREFERRED_CHALLENGE` de `PASSWORD_SRP`, também deverá incluir `SRP_A`. Se seu usuário, grupo de usuários e cliente do aplicativo estiverem todos configurados para o desafio preferido, o Amazon Cognito responderá com a próxima etapa desse desafio, por exemplo, `PASSWORD_VERIFIER` no `PASSWORD_SRP` fluxo ou [CodeDeliveryDetails](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CodeDeliveryDetailsType.html)nos `EMAIL_OTP` fluxos e. `SMS_OTP` Se o desafio preferencial não estiver disponível, o Amazon Cognito responderá com `SELECT_CHALLENGE` e uma lista dos desafios disponíveis.

1. Primeiro, faça o login dos usuários e, em seguida, solicite suas opções de autenticação baseada em opções. Uma [GetUserAuthFactors](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserAuthFactors.html)solicitação com o token de acesso de um usuário conectado retorna seus fatores de autenticação baseados em opções disponíveis e suas configurações de MFA. Com essa opção, um usuário pode primeiro fazer login com nome de usuário e senha e depois ativar uma forma diferente de autenticação. Também é possível usar essa operação para verificar opções adicionais para um usuário que tenha feito login com um desafio preferencial.

Para [configurar o cliente da aplicação](authentication.md#authentication-implement) para autenticação baseada em opções, adicione `ALLOW_USER_AUTH` aos fluxos de autenticação permitidos. Você também deve escolher os fatores baseados em opções que deseja permitir na configuração do grupo de usuários. O processo a seguir ilustra como escolher os fatores da autenticação baseada em opções.

------
#### [ Amazon Cognito console ]

**Como configurar opções de autenticação baseada em opções em um grupo de usuários**

1. Faça login AWS e navegue até o console de [grupos de usuários do Amazon Cognito](https://console.aws.amazon.com/cognito/v2/idp). Selecione um grupo de usuários ou crie um.

1. Na configuração do grupo de usuários, clique no menu **Fazer login**. Localize **Opções para login baseado em opções** e clique em **Editar**.

1. A opção **Senha** está sempre disponível. Isso inclui os fluxos `PASSWORD` e `PASSWORD_SRP`. Selecione as **Opções adicionais** que deseja adicionar às opções dos usuários. Você pode adicionar **Chave de acesso** para `WEB_AUTHN`, **Senha única para mensagem de e-mail** para `EMAIL_OTP` e **Senha única para mensagem SMS** para `SMS_OTP`.

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

------
#### [ API/SDK ]

O corpo parcial [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)solicitação a seguir configura todas as opções disponíveis para autenticação baseada em opções.

```
"Policies": {
    "SignInPolicy": {
        "AllowedFirstAuthFactors": [
            "PASSWORD",
            "WEB_AUTHN",
            "EMAIL_OTP",
            "SMS_OTP"
        ]
    }
},
```

------

## Autenticação baseada em clientes
<a name="authentication-flows-selection-client"></a>

A autenticação baseada em clientes é compatível com os fluxos de autenticação a seguir. Declare essas opções no `AuthFlow` parâmetro de [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-AuthFlow)ou [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#CognitoUserPools-AdminInitiateAuth-request-AuthFlow).

1. `USER_PASSWORD_AUTH` e `ADMIN_USER_PASSWORD_AUTH`

   [Fazer login com senhas persistentes](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-password)

   [MFA após o login](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-mfa)

   Este fluxo de autenticação é equivalente a `PASSWORD` na autenticação baseada em opções.

1. `USER_SRP_AUTH`

   [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)

   [MFA após o login](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-mfa)

   Este fluxo de autenticação é equivalente a `PASSWORD_SRP` na autenticação baseada em opções.

1. `REFRESH_TOKEN_AUTH`

   [Tokens de atualização](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-refresh)

   Este fluxo de autenticação só está disponível na autenticação baseada em clientes.

1. `CUSTOM_AUTH`

   [Autenticação personalizada](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-custom)

   Este fluxo de autenticação só está disponível na autenticação baseada em clientes.

Com a autenticação baseada em clientes, o Amazon Cognito presume que você determinou como o usuário deseja se autenticar antes de iniciar os fluxos de autenticação. A lógica para determinar o fator de login que um usuário deseja fornecer deve ser determinada com configurações padrão ou solicitações personalizadas e, em seguida, declarada na primeira solicitação ao grupo de usuários. A solicitação `InitiateAuth` declara um `AuthFlow` de login que corresponde diretamente a uma das opções listadas, por exemplo, `USER_SRP_AUTH`. Com essa declaração, a solicitação também inclui os parâmetros para iniciar a autenticação, por exemplo, `USERNAME`, `SECRET_HASH` e `SRP_A`. O Amazon Cognito pode acompanhar essa solicitação com desafios adicionais, como `PASSWORD_VERIFIER` para SRP ou `SOFTWARE_TOKEN_MFA` para login por senha com MFA com TOTP.

Para [configurar o cliente da aplicação](authentication.md#authentication-implement) para autenticação baseada em clientes, adicione quaisquer fluxos de autenticação diferentes de `ALLOW_USER_AUTH` aos fluxos de autenticação permitidos. Os exemplos são`ALLOW_USER_PASSWORD_AUTH`,`ALLOW_CUSTOM_AUTH`,`ALLOW_REFRESH_TOKEN_AUTH`. Para permitir fluxos de autenticação baseada em clientes, nenhuma configuração adicional do grupo de usuários é obrigatória.

# Fluxos de autenticação
<a name="amazon-cognito-user-pools-authentication-flow-methods"></a>

O processo de autenticação com grupos de usuários do Amazon Cognito pode ser melhor descrito como um *fluxo* no qual que os usuários fazem uma escolha inicial, enviam credenciais e respondem a desafios adicionais. Quando você implementa a autenticação de login gerenciado na sua aplicação, o Amazon Cognito gerencia o fluxo dessas solicitações e desafios. Ao implementar fluxos com um AWS SDK no back-end do seu aplicativo, você deve criar a lógica das solicitações, solicitar que os usuários forneçam informações e responder aos desafios.

Como administrador da aplicação, as características do usuário, os requisitos de segurança e o modelo de autorização ajudam a determinar como você deseja permitir que os usuários façam login. Pergunte-se as questões a seguir.
+ Quero permitir que os usuários façam login com credenciais de [outros provedores de identidade (IdPs)](#amazon-cognito-user-pools-authentication-flow-methods-federated)?
+ Um [nome de usuário e senha](#amazon-cognito-user-pools-authentication-flow-methods-password) são provas suficientes de identidade?
+ Minhas solicitações de autenticação por nome de usuário e senha poderiam ser interceptadas? Quero que minha aplicação transmita senhas ou [negocie a autenticação usando hashes e salts](#amazon-cognito-user-pools-authentication-flow-methods-srp)?
+ Quero permitir que os usuários ignorem a inserção de senha e [recebam uma senha de uso único](#amazon-cognito-user-pools-authentication-flow-methods-passwordless) para fazer login?
+ Quero permitir que os usuários façam login com [impressão digital, detecção facial ou chave de segurança de hardware](#amazon-cognito-user-pools-authentication-flow-methods-passkey)?
+ Quando devo exigir a [autenticação multifator (MFA)](#amazon-cognito-user-pools-authentication-flow-methods-mfa), se é que devo?
+ Quero [manter as sessões dos usuários sem solicitar novamente as credenciais](#amazon-cognito-user-pools-authentication-flow-methods-refresh)?
+ Quero [estender meu modelo de autorização](#amazon-cognito-user-pools-authentication-flow-methods-custom) além dos recursos integrados do Amazon Cognito?

Quando tiver as respostas para essas perguntas, poderá aprender como ativar os recursos relevantes e implementá-los nas solicitações de autenticação que sua aplicação realiza.

Depois de configurar os fluxos de login para um usuário, você pode verificar o status atual do MFA e dos fatores de autenticação [com base em escolhas](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) com solicitações para a operação da API. [GetUserAuthFactors](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserAuthFactors.html) Essa operação requer autorização com o token de acesso de um usuário conectado. Ela retorna os fatores de autenticação do usuário e as configurações de MFA.

**Topics**
+ [Faça login com terceiros IdPs](#amazon-cognito-user-pools-authentication-flow-methods-federated)
+ [Fazer login com senhas persistentes](#amazon-cognito-user-pools-authentication-flow-methods-password)
+ [Fazer login com senhas persistentes e carga útil segura](#amazon-cognito-user-pools-authentication-flow-methods-srp)
+ [Fazer login sem senha com senhas de uso único](#amazon-cognito-user-pools-authentication-flow-methods-passwordless)
+ [Login sem senha com chaves de acesso WebAuthn](#amazon-cognito-user-pools-authentication-flow-methods-passkey)
+ [MFA após o login](#amazon-cognito-user-pools-authentication-flow-methods-mfa)
+ [Tokens de atualização](#amazon-cognito-user-pools-authentication-flow-methods-refresh)
+ [Autenticação personalizada](#amazon-cognito-user-pools-authentication-flow-methods-custom)
+ [Fluxo de autenticação de migração de usuários](#amazon-cognito-user-pools-user-migration-authentication-flow)

## Faça login com terceiros IdPs
<a name="amazon-cognito-user-pools-authentication-flow-methods-federated"></a>

Os grupos de usuários do Amazon Cognito servem como intermediários de sessões de autenticação entre serviços IdPs como Sign in with Apple, Login with Amazon e OpenID Connect (OIDC). Esse processo também é chamado de *login federado* ou *autenticação federada*. A autenticação federada não usa nenhum dos fluxos de autenticação que você pode implementar no cliente da aplicação. Em vez disso, você atribui um grupo de usuários configurado IdPs ao seu cliente de aplicativo. O login federado ocorre quando os usuários selecionam seu IdP no login gerenciado ou sua aplicação invoca uma sessão com um redirecionamento para a página de login do IdP.

Com o login federado, você delega fatores de autenticação principal e de MFA ao IdP do usuário. O Amazon Cognito não adiciona os outros fluxos avançados desta seção a um usuário federado, a menos que você [os vincule a um usuário local](cognito-user-pools-identity-federation-consolidate-users.md). Usuários federados não vinculados possuem nomes de usuário, mas eles são um repositório de dados de atributos mapeados que normalmente não são usados para login, independentemente do fluxo baseado em navegador.

**Recursos de implementação**
+ [Login do grupo de usuários com provedores de identidades de terceiros](cognito-user-pools-identity-federation.md)

## Fazer login com senhas persistentes
<a name="amazon-cognito-user-pools-authentication-flow-methods-password"></a>

Nos grupos de usuários do Amazon Cognito, cada usuário tem um nome de usuário. Pode ser um número de telefone, endereço de e-mail ou um identificador escolhido ou fornecido pelo administrador. Usuários desse tipo podem fazer login com seu nome de usuário e senha e, opcionalmente, fornecer MFA. Grupos de usuários podem realizar login com nome de usuário e senha com operações de API públicas ou autorizadas pelo IAM e métodos de SDK. A aplicação pode enviar diretamente a senha ao grupo de usuários para autenticação. Seu grupo de usuários responde com desafios adicionais ou com os tokens web JSON (JWTs) que são o resultado de uma autenticação bem-sucedida.

------
#### [ Activate password sign-in ]

Para ativar a [autenticação baseada em clientes](authentication-flows-selection-sdk.md#authentication-flows-selection-client) com nome de usuário e senha, configure o cliente da aplicação para permitir isso. No console do Amazon Cognito, navegue até o menu **Clientes da aplicação** em **Aplicações** na configuração do grupo de usuários. Para permitir o login com senha simples em uma aplicação nativa ou um aplicativo móvel do lado do cliente, edite um cliente da aplicação e selecione **Fazer login com nome de usuário e senha: ALLOW\$1USER\$1PASSWORD\$1AUTH** em **Fluxos de autenticação**. Para permitir o login com senha simples em uma aplicação do lado do servidor, edite um cliente da aplicação e clique em **Fazer login com credenciais administrativas do lado do servidor: ALLOW\$1ADMIN\$1USER\$1PASSWORD\$1AUTH**.

Para ativar a [autenticação baseada em opções](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) com nome de usuário e senha, configure o cliente da aplicação para permitir isso. Edite o cliente da aplicação e selecione **Login baseado em opções: ALLOW\$1USER\$1AUTH**.

![\[Uma captura de tela do console do Amazon Cognito que ilustra a escolha de fluxos de autenticação por senha simples para um cliente da aplicação. As opções ALLOW_USER_PASSWORD_AUTH, ALLOW_ADMIN_USER_PASSWORD_AUTH e ALLOW_USER_AUTH foram selecionadas.\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/screenshot-choose-password-admin-password-and-user-auth.png)


Para verificar se a autenticação por senha está disponível em fluxos de autenticação baseada em opções, navegue até o menu **Fazer login** e revise a seção em **Opções para login baseado em opções**. Você pode fazer login com autenticação por senha simples se a **senha** estiver visível em **Opções disponíveis**. A opção **Senha** inclui as variantes simples e SRP da autenticação por nome de usuário e senha.

![\[Uma captura de tela do console do Amazon Cognito que ilustra a opção de autenticação por senha na configuração de login baseado em opções do USER_AUTH para um grupo de usuários. A opção Senha é exibida como ativa.\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/screenshot-password-flow-in-user-auth.png)


Configure `ExplicitAuthFlows` com suas opções username-and-password de autenticação preferidas em uma [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html)solicitação [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html)or.

```
"ExplicitAuthFlows": [ 
   "ALLOW_USER_PASSWORD_AUTH",
   "ALLOW_ADMIN_USER_PASSWORD_AUTH",
   "ALLOW_USER_AUTH"
]
```

Em uma [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)solicitação [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)or, configure `Policies` com os fluxos de autenticação com base em opções que você deseja oferecer suporte. O valor `PASSWORD` em `AllowedFirstAuthFactors` inclui as opções de fluxo de autenticação por senha simples e SRP.

```
"Policies": {
   "SignInPolicy": {
      "AllowedFirstAuthFactors": [
         "PASSWORD",
         "EMAIL_OTP",
         "WEB_AUTHN"
      ]
   }
}
```

------
#### [ Choice-based sign-in with a password ]

Para fazer login de um usuário em um aplicativo com autenticação por nome de usuário e senha, configure o corpo da sua [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)solicitação [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)ou da seguinte forma. Essa solicitação de login será bem-sucedida ou continuará até o próximo desafio se o usuário atual for elegível para a autenticação por nome de usuário e senha. Caso contrário, ela responderá com uma lista de desafios de autenticação de fator primário disponíveis. Esse conjunto de parâmetros é o mínimo necessário para fazer login. Parâmetros adicionais estão disponíveis.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser",
      "PREFERRED_CHALLENGE" : "PASSWORD",
      "PASSWORD" : "[User's password]"
   },
   "ClientId": "1example23456789"
}
```

Você também pode omitir o valor `PREFERRED_CHALLENGE` e receber uma resposta contendo uma lista de fatores de login elegíveis para o usuário.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser"
   },
   "ClientId": "1example23456789"
}
```

Se você não enviou um desafio preferencial ou o usuário enviado não for elegível para o desafio preferencial, o Amazon Cognito retornará uma lista de opções em `AvailableChallenges`. Quando `AvailableChallenges` inclui um `ChallengeName` de`PASSWORD`, você pode continuar a autenticação com uma resposta [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)ou [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)desafiar no formato a seguir. Você deve transmitir um parâmetro `Session` que associe a resposta do desafio à resposta da API à solicitação inicial de login. Esse conjunto de parâmetros é o mínimo necessário para fazer login. Parâmetros adicionais estão disponíveis.

```
{
   "ChallengeName": "PASSWORD",
   "ChallengeResponses": { 
      "USERNAME" : "testuser",
      "PASSWORD" : "[User's Password]"
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response"
}
```

O Amazon Cognito responde a solicitações de desafio preferencial elegíveis e bem-sucedidas e respostas do desafio `PASSWORD` com tokens ou um desafio adicional obrigatório, como autenticação multifator (MFA).

------
#### [ Client-based sign-in with a password ]

Para fazer login de um usuário em um aplicativo do lado do cliente com autenticação de nome de usuário e senha, configure o corpo da sua solicitação da seguinte forma. [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) Esse conjunto de parâmetros é o mínimo necessário para fazer login. Parâmetros adicionais estão disponíveis.

```
{
   "AuthFlow": "USER_PASSWORD_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser",
      "PASSWORD" : "[User's password]"
   },
   "ClientId": "1example23456789"
}
```

Para fazer login de um usuário em um aplicativo do lado do servidor com autenticação por nome de usuário e senha, configure o corpo da solicitação da seguinte maneira. [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html) Sua inscrição deve assinar essa solicitação com AWS as credenciais. Esse conjunto de parâmetros é o mínimo necessário para fazer login. Parâmetros adicionais estão disponíveis.

```
{
   "AuthFlow": "ADMIN_USER_PASSWORD_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser",
      "PASSWORD" : "[User's password]"
   },
   "ClientId": "1example23456789"
}
```

O Amazon Cognito responde a solicitações bem-sucedidas com tokens ou um desafio adicional obrigatório, como autenticação multifator (MFA).

------

## Fazer login com senhas persistentes e carga útil segura
<a name="amazon-cognito-user-pools-authentication-flow-methods-srp"></a>

Outra forma dos métodos de login com nome de usuário e senha em grupos de usuários é com o protocolo de senha remota segura (SRP). Essa opção envia uma prova de conhecimento de uma senha (um hash de senha e um salt) que o grupo de usuários pode verificar. Sem nenhuma informação secreta legível na solicitação ao Amazon Cognito, a aplicação é a única entidade que processa as senhas inseridas pelos usuários. A autenticação SRP envolve cálculos matemáticos melhor executados por um componente existente que você pode importar no SDK. A SRP é geralmente implementada em aplicações do lado do cliente, como aplicativos móveis. Para obter mais informações sobre o protocolo, consulte [The Stanford SRP Homepage](http://srp.stanford.edu/). A [Wikipedia](https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol) também tem recursos e exemplos. [Uma variedade de bibliotecas públicas](https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol#Implementations) estão disponíveis para realizar os cálculos de SRP para fluxos de autenticação.

A initiate-challenge-respond sequência da autenticação do Amazon Cognito valida os usuários e suas senhas com o SRP. É necessário configurar o grupo de usuários e o cliente da aplicação para oferecer suporte à autenticação SRP e, em seguida, implementar a lógica das solicitações de login e das respostas do desafio na aplicação. Suas bibliotecas de SRP podem gerar números aleatórios e valores calculados que demonstram ao grupo de usuários que você possui a senha de um usuário. Sua aplicação preenche esses valores calculados nos campos `AuthParameters` e `ChallengeParameters` formatados em JSON e nas operações de API e métodos de SDK para autenticação de grupos de usuários do Amazon Cognito.

------
#### [ Activate SRP sign-in ]

Para ativar a [autenticação baseada em clientes](authentication-flows-selection-sdk.md#authentication-flows-selection-client) com nome de usuário e SRP, configure o cliente da aplicação para permitir isso. No console do Amazon Cognito, navegue até o menu **Clientes da aplicação** em **Aplicações** na configuração do grupo de usuários. Para permitir o login com SRP em uma aplicação nativa ou um aplicativo móvel do lado do cliente, edite um cliente da aplicação e selecione **Fazer login com senha remota segura (SRP): ALLOW\$1USER\$1SRP\$1AUTH** em **Fluxos de autenticação**.

Para ativar a [autenticação baseada em opções](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) com nome de usuário e SRP, edite o cliente da aplicação e selecione **Login baseado em opções: ALLOW\$1USER\$1AUTH**.

![\[Uma captura de tela do console do Amazon Cognito que ilustra a escolha de fluxos de autenticação por senha remota segura para um cliente da aplicação. As opções ALLOW_USER_SRP_AUTH e ALLOW_USER_AUTH foram selecionadas.\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/screenshot-choose-SRP-and-user-auth.png)


Para verificar se a autenticação por SRP está disponível em fluxos de autenticação baseada em opções, navegue até o menu **Fazer login** e revise a seção em **Opções para login baseado em opções**. Você pode fazer login com autenticação por SRP se a **senha** estiver visível em **Opções disponíveis**. A opção **Senha** inclui as variantes de autenticação por nome de usuário e senha em texto simples e por SRP.

![\[Uma captura de tela do console do Amazon Cognito que ilustra a opção de autenticação por senha na configuração de login baseado em opções do USER_AUTH para um grupo de usuários. A opção Senha é exibida como ativa.\]](http://docs.aws.amazon.com/pt_br/cognito/latest/developerguide/images/screenshot-password-flow-in-user-auth.png)


Configure `ExplicitAuthFlows` com suas opções username-and-password de autenticação preferidas em uma [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html)solicitação [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html)or.

```
"ExplicitAuthFlows": [ 
   "ALLOW_USER_SRP_AUTH",
   "ALLOW_USER_AUTH"
]
```

Em uma [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)solicitação [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)or, configure `Policies` com os fluxos de autenticação com base em opções que você deseja oferecer suporte. O valor `PASSWORD` em `AllowedFirstAuthFactors` inclui as opções de fluxo de autenticação por senha de texto simples e SRP.

```
"Policies": {
   "SignInPolicy": {
      "AllowedFirstAuthFactors": [
         "PASSWORD",
         "EMAIL_OTP",
         "WEB_AUTHN"
      ]
   }
}
```

------
#### [ Choice-based sign-in with SRP ]

Para inscrever um usuário em um aplicativo com autenticação de nome de usuário e senha com SRP, configure o corpo da sua solicitação [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)ou [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)da seguinte forma. Essa solicitação de login será bem-sucedida ou continuará até o próximo desafio se o usuário atual for elegível para a autenticação por nome de usuário e senha. Caso contrário, ela responderá com uma lista de desafios de autenticação de fator primário disponíveis. Esse conjunto de parâmetros é o mínimo necessário para fazer login. Parâmetros adicionais estão disponíveis.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser",
      "PREFERRED_CHALLENGE" : "PASSWORD_SRP",
      "SRP_A" : "[g^a % N]"
   },
   "ClientId": "1example23456789"
}
```

Você também pode omitir o valor `PREFERRED_CHALLENGE` e receber uma resposta contendo uma lista de fatores de login elegíveis para o usuário.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser"
   },
   "ClientId": "1example23456789"
}
```

Se você não enviou um desafio preferencial ou o usuário enviado não for elegível para o desafio preferencial, o Amazon Cognito retornará uma lista de opções em `AvailableChallenges`. Quando `AvailableChallenges` inclui um `ChallengeName` de`PASSWORD_SRP`, você pode continuar a autenticação com uma resposta [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)ou [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)desafiar no formato a seguir. Você deve transmitir um parâmetro `Session` que associe a resposta do desafio à resposta da API à solicitação inicial de login. Esse conjunto de parâmetros é o mínimo necessário para fazer login. Parâmetros adicionais estão disponíveis.

```
{
   "ChallengeName": "PASSWORD_SRP",
   "ChallengeResponses": { 
      "USERNAME" : "testuser",
      "SRP_A" : "[g^a % N]"
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response"
}
```

O Amazon Cognito responde a solicitações de desafio preferencial elegíveis e respostas do desafio `PASSWORD_SRP` com um desafio `PASSWORD_VERIFIER`. Seu cliente deve concluir os cálculos do SRP e responder ao desafio em uma [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)solicitação.

```
{
   "ChallengeName": "PASSWORD_VERIFIER",
   "ChallengeResponses": { 
      "PASSWORD_CLAIM_SIGNATURE" : "string",
      "PASSWORD_CLAIM_SECRET_BLOCK" : "string",
      "TIMESTAMP" : "string"
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response]"
}
```

Em uma resposta bem-sucedida do desafio `PASSWORD_VERIFIER`, o Amazon Cognito emite tokens ou outro desafio obrigatório, como a autenticação multifator (MFA).

------
#### [ Client-based sign-in with SRP ]

A autenticação SRP é mais comum na autenticação do lado do cliente do que na autenticação do lado do servidor. No entanto, você pode usar a autenticação SRP com [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)e. [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html) Para conectar um usuário a uma aplicação, configure o corpo da solicitação `InitiateAuth` ou `AdminInitiateAuth` da forma a seguir. Esse conjunto de parâmetros é o mínimo necessário para fazer login. Parâmetros adicionais estão disponíveis.

O cliente gera `SRP_A` por meio de um gerador módulo N *g* elevado à potência de um inteiro aleatório secreto *a*.

```
{
   "AuthFlow": "USER_SRP_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser",
      "SRP_A" : "[g^a % N]"
   },
   "ClientId": "1example23456789"
}
```

O Amazon Cognito responde com um desafio `PASSWORD_VERIFIER`. Seu cliente deve concluir os cálculos do SRP e responder ao desafio em uma [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)solicitação.

```
{
   "ChallengeName": "PASSWORD_VERIFIER",
   "ChallengeResponses": { 
      "PASSWORD_CLAIM_SIGNATURE" : "string",
      "PASSWORD_CLAIM_SECRET_BLOCK" : "string",
      "TIMESTAMP" : "string"
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response]"
}
```

Em uma resposta bem-sucedida do desafio `PASSWORD_VERIFIER`, o Amazon Cognito emite tokens ou outro desafio obrigatório, como a autenticação multifator (MFA).

------

## Fazer login sem senha com senhas de uso único
<a name="amazon-cognito-user-pools-authentication-flow-methods-passwordless"></a>

As senhas podem ser perdidas ou roubadas. Talvez você queira verificar somente se seus usuários têm acesso a um endereço de e-mail, número de telefone ou aplicação autenticadora verificado. A solução para isso é o login *sem senha*. A aplicação pode solicitar que os usuários insiram o nome de usuário, o endereço de e-mail ou o número de telefone. O Amazon Cognito então gera uma senha de uso único (OTP), um código que eles devem confirmar. Um código bem-sucedido conclui a autenticação.

Os fluxos de autenticação de senha única (OTP) não são compatíveis com a autenticação multifator (MFA) necessária em seu grupo de usuários. A autenticação por chave de acesso com verificação do usuário pode atender aos requisitos de MFA quando você configura o. `FactorConfiguration` `MULTI_FACTOR_WITH_USER_VERIFICATION` Se o MFA for opcional em seu grupo de usuários, os usuários que ativaram o MFA não poderão fazer login com um primeiro fator OTP. Usuários que não têm uma preferência de MFA em um grupo de usuários com MFA opcional podem fazer login sem senha. Para obter mais informações, consulte [Informações importantes sobre a MFA de grupo de usuários](user-pool-settings-mfa.md#user-pool-settings-mfa-prerequisites).

Quando um usuário insere corretamente um código recebido por SMS ou e-mail como parte da autenticação sem senha, além de autenticar o usuário, o grupo de usuários marca o atributo de endereço de e-mail ou número de telefone não verificado do usuário como verificado. O status do usuário também muda de `UNCONFIRMED` para `CONFIRMED`, independentemente de você ter configurado o grupo de usuários para [verificar automaticamente](signing-up-users-in-your-app.md) endereços de e-mail ou números de telefone.

**Novas opções com login sem senha**  
Quando você ativa a autenticação sem senha no grupo de usuários, o funcionamento de alguns fluxos de usuários é alterado.

1. Os usuários podem se cadastrar sem uma senha e escolher um fator sem senha ao fazer login. Também é possível criar usuários sem senhas como administrador.

1. Os usuários que você [importa por meio de um arquivo CSV](cognito-user-pools-using-import-tool.md) podem fazer login imediatamente com um fator sem senha. Eles não precisam definir uma senha antes de fazer login.

1. Os usuários que não têm uma senha podem enviar solicitações de [ChangePassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ChangePassword.html)API sem o `PreviousPassword` parâmetro.

**Login automático com OTPs**  
Os usuários que se inscreverem e confirmarem suas contas de usuário por e-mail ou mensagem SMS OTPs podem fazer login automaticamente com o fator sem senha que corresponde à mensagem de confirmação. Na IU do login gerenciado, os usuários que confirmam suas contas e estão elegíveis para o login por OTP com o método de entrega do código de confirmação passam automaticamente para o primeiro login após fornecerem o código. Em seu aplicativo personalizado com um AWS SDK, transmita os seguintes parâmetros para uma [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)operação or. [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)
+ O `Session` parâmetro da resposta da [ConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html)API como parâmetro de `Session` solicitação.
+ Um [AuthFlow](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-AuthFlow)de`USER_AUTH`.

Você pode transmitir um [PREFERRED\$1CHALLENGE](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-AuthParameters) de `EMAIL_OTP` ou `SMS_OTP`, mas não é obrigatório. O parâmetro `Session` fornece prova de autenticação e o Amazon Cognito o ignora `AuthParameters` quando você transmite um código de sessão válido.

A operação de login retorna a resposta que indica a autenticação bem-sucedida [AuthenticationResult](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AuthenticationResultType.html), sem desafios adicionais se as seguintes condições forem verdadeiras.
+ O código `Session` é válido e não expirou.
+ O usuário é elegível para o método de autenticação por OTP.

------
#### [ Activate passwordless sign-in ]

**Console**  
Para ativar o login sem senha, configure o grupo de usuários para permitir o login primário com um ou mais tipos sem senha e, em seguida, configure o cliente da aplicação para permitir o fluxo `USER_AUTH`. No console do Amazon Cognito, navegue até o menu **Fazer login** em **Autenticação** na configuração do grupo de usuários. Edite **Opções para login baseado em opções** e selecione **Senha única para mensagem de e-mail** ou **Senha única para mensagem SMS**. É possível ativar as duas opções. Salve as alterações.

Navegue até o menu **Clientes da aplicação** e escolha um cliente ou crie um. Clique em **Editar** e selecione **Selecionar um tipo de autenticação no login: ALLOW\$1USER\$1AUTH**.

**API/SDK**  
Na API de grupos de usuários, configure `SignInPolicy` com as opções sem senha apropriadas em uma solicitação [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)or [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html).

```
"SignInPolicy": { 
    "AllowedFirstAuthFactors": [ 
        "EMAIL_OTP",
        "SMS_OTP"
    ]
}
```

Configure seu cliente de aplicativo `ExplicitAuthFlows` com a opção necessária em uma [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html)solicitação [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html)ou.

```
"ExplicitAuthFlows": [ 
   "ALLOW_USER_AUTH"
]
```

------
#### [ Sign in with passwordless ]

O login sem senha não tem uma [base de cliente](authentication-flows-selection-sdk.md#authentication-flows-selection-client) `AuthFlow` que você possa especificar e. [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) A autenticação OTP só está disponível na [opção baseada](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) em`USER_AUTH`, onde você pode solicitar uma opção `AuthFlow` de login preferencial ou escolher a opção sem senha na de um usuário. [AvailableChallenges](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-response-AvailableChallenges) Para conectar um usuário a uma aplicação, configure o corpo da solicitação `InitiateAuth` ou `AdminInitiateAuth` da forma a seguir. Esse conjunto de parâmetros é o mínimo necessário para fazer login. Parâmetros adicionais estão disponíveis.

Neste exemplo, não sabemos como o usuário deseja fazer login. Se adicionarmos um parâmetro `PREFERRED_CHALLENGE` e o desafio preferencial estiver disponível para o usuário, o Amazon Cognito responderá com esse desafio.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser"
   },
   "ClientId": "1example23456789"
}
```

Em vez disso, você pode adicionar `"PREFERRED_CHALLENGE": "EMAIL_OTP"` ou `"PREFERRED_CHALLENGE": "SMS_OTP"` a `AuthParameters` nesse exemplo. Se o usuário for elegível para esse método preferencial, o grupo de usuários enviará imediatamente um código para o endereço de e-mail ou número de telefone do usuário e retornará `"ChallengeName": "EMAIL_OTP"` ou `"ChallengeName": "SMS_OTP"`.

Se você não especificar um desafio preferencial, o Amazon Cognito responderá com um parâmetro `AvailableChallenges`.

```
{
   "AvailableChallenges": [ 
      "EMAIL_OTP", 
      "SMS_OTP",
      "PASSWORD"
    ],
   "Session": "[Session ID]"
}
```

Esse usuário é elegível para login sem senha com OTP por e-mail, OTP por SMS e nome de usuário e senha. A aplicação pode solicitar que o usuário faça a seleção ou pode fazer uma seleção com base na lógica interna. Em seguida, ele prossegue com uma [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)solicitação [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)or que seleciona o desafio. Suponha que o usuário queira concluir a autenticação sem senha com uma OTP enviada por e-mail.

```
{
   "ChallengeName": "SELECT_CHALLENGE",
   "ChallengeResponses": { 
      "USERNAME" : "testuser",
      "ANSWER" : "EMAIL_OTP" 
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response]"
}
```

O Amazon Cognito responde com um desafio `EMAIL_OTP` e envia um código para o endereço de e-mail verificado do usuário. Sua aplicação deve então responder novamente a esse desafio.

Essa também seria a próxima resposta do desafio se você solicitasse `EMAIL_OTP` como `PREFERRED_CHALLENGE`.

```
{
   "ChallengeName": "EMAIL_OTP",
   "ChallengeResponses": {
      "USERNAME" : "testuser", 
      "EMAIL_OTP_CODE" : "123456" 
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response]"
}
```

------

## Login sem senha com chaves de acesso WebAuthn
<a name="amazon-cognito-user-pools-authentication-flow-methods-passkey"></a>

As chaves de acesso são seguras e impõem um nível de esforço relativamente baixo aos usuários. O login com chave de acesso usa *autenticadores*, dispositivos externos que permitem a autenticação dos usuários. Senhas comuns expõem os usuários a vulnerabilidades como phishing, adivinhação de senhas e roubo de credenciais. Com as chaves de acesso, a aplicação pode se beneficiar de medidas de segurança avançadas em telefones celulares e outros dispositivos conectados ou integrados a sistemas de informação. Um fluxo de trabalho comum de login com chave de acesso começa com uma chamada para o dispositivo que invoca o gerenciador de senhas ou *credenciais*, por exemplo, o Keychain do iOS ou o gerenciador de senhas do Google Chrome. O gerenciador de credenciais do dispositivo solicita que o usuário selecione uma chave de acesso e a autorize com uma credencial existente ou um mecanismo de desbloqueio do dispositivo. Os telefones modernos têm leitores faciais, leitores de impressão digital, padrões de desbloqueio e outros mecanismos, alguns dos quais satisfazem simultaneamente os princípios de *algo que você sabe* e *algo que você tem* da autenticação forte. No caso da autenticação por chave de acesso com biometria, as chaves de acesso representam *algo que você é*.

Você pode querer substituir as senhas pela autenticação por impressão digital, reconhecimento facial ou chave de segurança. Isso é *chave* de acesso ou *WebAuthn*autenticação. É comum que os desenvolvedores de aplicações permitam que os usuários cadastrem um dispositivo biométrico após o primeiro login com senha. Com os grupos de usuários do Amazon Cognito, sua aplicação pode configurar essa opção de login para os usuários. A autenticação por chave de acesso pode atender aos requisitos de autenticação multifator (MFA) quando seu grupo de usuários estiver configurado como. `FactorConfiguration` `MULTI_FACTOR_WITH_USER_VERIFICATION` Nessa configuração, a autenticação por chave de acesso com verificação do usuário conta como autenticação multifatorial.

Os fluxos de autenticação de senha única (OTP) não são compatíveis com a autenticação multifator (MFA) necessária em seu grupo de usuários. A autenticação por chave de acesso com verificação do usuário pode atender aos requisitos de MFA quando você configura o. `FactorConfiguration` `MULTI_FACTOR_WITH_USER_VERIFICATION` Se o MFA for opcional em seu grupo de usuários, os usuários que ativaram o MFA não poderão fazer login com um primeiro fator OTP. Usuários que não têm uma preferência de MFA em um grupo de usuários com MFA opcional podem fazer login sem senha. Para obter mais informações, consulte [Informações importantes sobre a MFA de grupo de usuários](user-pool-settings-mfa.md#user-pool-settings-mfa-prerequisites).

### O que são chaves de acesso?
<a name="amazon-cognito-user-pools-authentication-flow-methods-passkey-what-are"></a>

As chaves de acesso simplificam a experiência do usuário, eliminando a necessidade de lembrar senhas complexas ou OTPs digitá-las. As chaves de acesso são baseadas WebAuthn e CTAP2 padrões elaborados pelo [World Wide Web Consortium (W3C) e pela FIDO](https://www.w3.org/TR/webauthn-3/) (Fast Identity Online) Alliance. *Os navegadores e plataformas implementam esses padrões, fornecem aplicativos web ou móveis APIs para iniciar um processo de registro ou autenticação de chave de acesso e também uma interface de usuário para o usuário selecionar e interagir com um autenticador de chave de acesso.*

Quando um usuário registra um autenticador em um site ou aplicativo, o autenticador cria um par de chaves público-privado. WebAuthn navegadores e plataformas enviam a chave pública para o back-end do aplicativo ou site. O autenticador mantém a chave privada, a chave IDs e os metadados sobre o usuário e o aplicativo. Quando o usuário deseja se autenticar na aplicação registrada com seu autenticador registrado, a aplicação gera um desafio aleatório. A resposta a esse desafio é a assinatura digital do desafio gerada com a chave privada do autenticador dessa aplicação e usuário, além de metadados relevantes. O navegador ou a plataforma da aplicação recebe a assinatura digital e a envia para o backend da aplicação. A aplicação então valida a assinatura com a chave pública armazenada.

**nota**  
Sua aplicação não recebe nenhum segredo de autenticação que os usuários forneçam ao autenticador, nem recebe informações sobre a chave privada.

Veja a seguir alguns dos exemplos e recursos dos autenticadores atualmente disponíveis no mercado. Um autenticador pode atender a uma ou a todas estas categorias.
+ Alguns autenticadores realizam a *verificação de usuário* com fatores como um PIN, entrada biométrica com reconhecimento facial/impressão digital ou uma senha antes de conceder acesso, garantindo que somente o usuário legítimo possa autorizar ações. Outros autenticadores não têm nenhum recurso de verificação de usuário, e alguns podem ignorar a verificação quando uma aplicação não a exige.
+ Alguns autenticadores, por exemplo, tokens YubiKey de hardware, são portáteis. Eles se comunicam com dispositivos por meio de conexões USB, Bluetooth ou NFC. Alguns autenticadores são locais e vinculados a uma plataforma, como o Windows Hello em um PC ou o Face ID em um iPhone. Um autenticador vinculado ao dispositivo pode ser transportado pelo usuário se for pequeno o suficiente, como um dispositivo móvel. Às vezes, os usuários podem conectar o autenticador de hardware a várias plataformas diferentes com comunicação sem fio. Por exemplo, usuários em navegadores de desktop podem usar seu smartphone como autenticador de chave de acesso ao escanear um código QR.
+ Algumas chaves de acesso vinculadas à plataforma são sincronizadas com a nuvem, permitindo seu uso em vários locais. Por exemplo, as chaves de acesso do Face ID nos iPhones sincronizam os metadados da chave de acesso com as contas da Apple dos usuários no iCloud Keychain. Essas chaves de acesso garantem uma autenticação perfeita em todos os dispositivos Apple, em vez de exigir que os usuários registrem cada dispositivo individualmente. Aplicações de autenticação baseadas em software, como 1Password, Dashlane e Bitwarden, sincronizam chaves de acesso em todas as plataformas nas quais o usuário instalou a aplicação.

Na WebAuthn terminologia, sites e aplicativos são partes *confiáveis.* Cada chave de acesso está associada a um ID de parte confiável específico, um identificador unificado que representa os sites ou aplicações que aceitam a autenticação por chave de acesso. Os desenvolvedores devem selecionar cuidadosamente o ID de parte confiável para garantir o escopo correto de autenticação. Um ID de parte confiável típico é o nome de domínio raiz de um servidor web. Uma chave de acesso com essa especificação de ID de parte confiável pode autenticar nesse domínio e em seus subdomínios. Navegadores e plataformas negam a autenticação por chave de acesso quando o URL do site que o usuário deseja acessar não corresponde ao ID de parte confiável. Da mesma forma, para aplicativos móveis, uma chave de acesso só pode ser usada se o caminho da aplicação estiver presente nos arquivos de associação `.well-known` que a aplicação disponibiliza no caminho indicado pelo ID de parte confiável.

As chaves de acesso são *detectáveis*. Elas podem ser reconhecidas e usadas automaticamente por um navegador ou plataforma sem exigir que o usuário insira um nome de usuário. Quando um usuário visita um site ou aplicação compatível com a autenticação por chave de acesso, ele pode selecionar uma chave de acesso em uma lista que o navegador ou a plataforma já conhece, ou pode escanear um código QR.

### Como o Amazon Cognito implementa a autenticação por chave de acesso?
<a name="amazon-cognito-user-pools-authentication-flow-methods-passkey-cognito"></a>

As chaves de acesso são um recurso opcional disponível em todos os [planos de recursos](cognito-sign-in-feature-plans.md), exceto no **Lite**. Elas estão disponíveis somente no [fluxo de autenticação baseada em opções](authentication-flows-selection-sdk.md#authentication-flows-selection-choice). Com o [login gerenciado](authentication-flows-selection-managedlogin.md), o Amazon Cognito lida com a lógica da autenticação por chave de acesso. Você também pode usar a [API de grupos de usuários do Amazon Cognito AWS SDKs para](#amazon-cognito-user-pools-authentication-flow-methods) fazer a autenticação por chave de acesso no back-end do seu aplicativo.

O Amazon Cognito reconhece chaves de acesso criadas usando um dos dois algoritmos criptográficos assimétricos, ES256 (-7) e (-257). RS256 A maioria dos autenticadores é compatível com os dois algoritmos. Por padrão, os usuários podem configurar qualquer tipo de autenticador, por exemplo, tokens de hardware, smartphones móveis e aplicações autenticadoras de software. No momento, o Amazon Cognito não é compatível com a aplicação de [atestados](https://csrc.nist.gov/glossary/term/attestation).

No grupo de usuários, é possível configurar a verificação de usuário como preferencial ou obrigatória. Essa configuração é definida como preferencial por padrão em solicitações de API que não fornecem um valor, e é selecionada por padrão no console do Amazon Cognito. Quando você define a verificação de usuário como preferencial, os usuários podem configurar autenticadores que não têm o recurso de verificação de usuário, e as operações de registro e autenticação podem ser bem-sucedidas sem a verificação de usuário. Para exigir a verificação de usuário no registro e na autenticação por chave de acesso, altere essa configuração para obrigatória.

A definição do ID de parte confiável (RP) na configuração da chave de acesso é uma decisão importante. Quando você não especifica o contrário e a [versão de marca do domínio](managed-login-branding.md) é login gerenciado, o grupo de usuários considera, por padrão, o nome do [domínio personalizado](cognito-user-pools-add-custom-domain.md) como o ID de RP. Se você não tiver um domínio personalizado e não especificar o contrário, o grupo de usuários utilizará como padrão o ID de RP do [domínio de prefixo](cognito-user-pools-assign-domain-prefix.md). Você também pode configurar o ID de RP para ser qualquer nome de domínio que não esteja na lista de sufixos públicos (PSL). A entrada do ID de RP se aplica ao registro e à autenticação por chave de acesso no login gerenciado e na autenticação do SDK. A chave de acesso só funciona em aplicativos móveis se o Amazon Cognito conseguir localizar um arquivo de associação `.well-known` com o ID de RP como domínio. Como prática recomendada, determine e defina o valor do ID de parte confiável antes que o site ou a aplicação esteja disponível publicamente. Se você alterar o ID de RP, os usuários deverão se registrar novamente com o novo ID de RP.

Cada usuário pode registrar até vinte chaves de acesso. O registro de uma chave de acesso só é possível após o usuário ter feito login no grupo de usuários pelo menos uma vez. O login gerenciado elimina grande parte do esforço necessário para o registro de chaves de acesso. Quando você habilita a autenticação por chave de acesso para um grupo de usuários e um cliente da aplicação, o grupo de usuários com um domínio de login gerenciado lembra os usuários finais de registrarem uma chave de acesso após se cadastrarem em uma nova conta. Você também pode invocar os navegadores dos usuários a qualquer momento para direcioná-los a uma página de login gerenciado para registro da chave de acesso. Os usuários devem fornecer um nome de usuário antes que o Amazon Cognito possa iniciar a autenticação por chave de acesso. O login gerenciado lida com isso automaticamente. A página de login solicita um nome de usuário, valida se o usuário tem pelo menos uma chave de acesso registrada e, em seguida, solicita o login por chave de acesso. Da mesma forma, as aplicações baseados em SDK devem solicitar um nome de usuário e fornecê-lo na solicitação de autenticação.

Quando você configura a autenticação do grupo de usuários com chaves de acesso e tem um domínio personalizado e um domínio de prefixo, o ID de RP usa como padrão o nome de domínio totalmente qualificado (FQDN) do domínio personalizado. Para definir um domínio de prefixo como o ID de RP no console do Amazon Cognito, exclua seu domínio personalizado ou insira o FQDN do domínio de prefixo como um **domínio de terceiros**.

------
#### [ Activate passkey sign-in ]

**Console**  
Para ativar o login com chaves de acesso, configure o grupo de usuários para permitir o login primário com um ou mais tipos sem senha e, em seguida, configure o cliente da aplicação para permitir o fluxo `USER_AUTH`. No console do Amazon Cognito, navegue até o menu **Fazer login** em **Autenticação** na configuração do grupo de usuários. Edite **Opções para login baseado em opções** e adicione **Chave de acesso** à lista **Opções disponíveis**.

Navegue até o menu **Métodos de autenticação** e edite **Chave de acesso**.
+ **Verificação de usuário** é a configuração para determinar se o grupo de usuários exige dispositivos com chave de acesso que realizem verificações adicionais para garantir que o usuário atual esteja autorizado a usar uma chave de acesso. Para incentivar os usuários a configurar um dispositivo com a verificação de usuário, mas não a tornar obrigatória, selecione **Preferencial**. Para oferecer suporte somente a dispositivos com verificação de usuário, selecione **Obrigatório**. Para obter mais informações, consulte [User verification](https://www.w3.org/TR/webauthn-2/#user-verification) em w3.org.
+ **Domínio para ID de parte confiável** é o identificador que a aplicação transmitirá nas solicitações de registro de chave de acesso dos usuários. Ele define a meta da relação de confiança com o emissor das chaves de acesso dos usuários. O ID de parte confiável pode ser: o domínio do seu grupo de usuários, se   
**Domínio Cognito**  
O [domínio de prefixo](cognito-user-pools-assign-domain-prefix.md) do Amazon Cognito do seu grupo de usuários.  
**Domínio personalizado**  
O [domínio personalizado](cognito-user-pools-add-custom-domain.md) do seu grupo de usuários.  
**Domínio de terceiros**  
O domínio para aplicações que não usam as páginas de login gerenciado dos grupos de usuários. Essa configuração geralmente está associada a grupos de usuários que não têm um [domínio](cognito-user-pools-assign-domain.md) e realizam autenticação com um AWS SDK e a API de grupos de usuários no back-end.

Navegue até o menu **Clientes da aplicação** e escolha um cliente ou crie um. Clique em **Editar** e, em **Fluxos de autenticação**, selecione **Selecionar um tipo de autenticação no login: ALLOW\$1USER\$1AUTH**.

**API/SDK**  
Na API de grupos de usuários, configure `SignInPolicy` com as opções de chave de acesso apropriadas em uma [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)solicitação [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)or. A opção `WEB_AUTHN` para autenticação por chave de acesso deve ser acompanhada por pelo menos uma outra opção. O registro da chave de acesso requer uma sessão de autenticação existente.

```
"SignInPolicy": { 
    "AllowedFirstAuthFactors": [ 
        "PASSWORD",
        "WEB_AUTHN"
    ]
}
```

Configure sua preferência de verificação de usuário e ID de RP no `WebAuthnConfiguration` parâmetro de uma [SetUserPoolMfaConfig](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserPoolMfaConfig.html#CognitoUserPools-SetUserPoolMfaConfig-request-WebAuthnConfiguration)solicitação. `RelyingPartyId`, o destino pretendido dos resultados da autenticação por chave de acesso, pode ser o domínio personalizado ou de prefixo do grupo de usuários ou um domínio de sua escolha.

```
"WebAuthnConfiguration": { 
   "RelyingPartyId": "example.auth.us-east-1.amazoncognito.com",
   "UserVerification": "preferred",
   "FactorConfiguration": "SINGLE_FACTOR"
}
```

Configure seu cliente de aplicativo `ExplicitAuthFlows` com a opção necessária em uma [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html)solicitação [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html)ou.

```
"ExplicitAuthFlows": [ 
   "ALLOW_USER_AUTH"
]
```

------
#### [ Register a passkey (managed login) ]

O login gerenciado gerencia o registro das chaves de acesso dos usuários. Quando a autenticação por chave de acesso está ativa no grupo de usuários, o Amazon Cognito solicita que os usuários configurem uma chave de acesso ao se registrarem em uma nova conta.

O Amazon Cognito não solicita que os usuários configurem uma chave de acesso quando eles já se cadastraram e não configuraram uma chave de acesso, ou se você criou a conta deles como administrador. Os usuários nesse estado devem fazer login com outro fator, como uma senha ou uma OTP sem senha, antes de poderem registrar uma chave de acesso.

**Como registrar uma chave de acesso**

1. Direcione o usuário para a [página de login](authorization-endpoint.md).

   ```
   https://auth.example.com/oauth2/authorize/?client_id=1example23456789&response_type=code&scope=email+openid+phone&redirect_uri=https%3A%2F%2Fwww.example.com
   ```

1. Processe o resultado da autenticação do usuário. Neste exemplo, o Amazon Cognito o redireciona para `www.example.com` com um código de autorização que a aplicação troca por tokens.

1. Direcione o usuário para a página de registro de chave de acesso. O usuário terá um cookie de navegador que mantém a sessão ativa. O URL da chave de acesso aceita os parâmetros `client_id` e `redirect_uri`. O Amazon Cognito permite que somente usuários autenticados acessem essa página. Faça login do usuário com uma senha, uma OTP enviada por e-mail ou uma OTP enviada por SMS e, em seguida, invoque um URL que corresponda ao padrão a seguir.

   Você também pode adicionar outros parâmetros [Autorizar endpoint](authorization-endpoint.md)a essa solicitação, como `response_type` e `scope`.

   ```
   https://auth.example.com/passkeys/add?client_id=1example23456789&redirect_uri=https%3A%2F%2Fwww.example.com
   ```

------
#### [ Register a passkey (SDK) ]

Você registra as credenciais da chave de acesso com metadados em um objeto. [PublicKeyCreationOptions](https://www.w3.org/TR/webauthn-3/#dictdef-publickeycredentialcreationoptions) Você pode gerar esse objeto com as credenciais de um usuário conectado e apresentá-las em uma solicitação de API ao emissor da chave de acesso. O emissor retornará um objeto [RegistrationResponseJSON](https://www.w3.org/TR/webauthn-3/#dictdef-registrationresponsejson) que confirma o registro da chave de acesso.

Para iniciar o processo de registro da chave de acesso, conecte um usuário com uma opção de login existente. Autorize a solicitação de [StartWebAuthnRegistration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_StartWebAuthnRegistration.html)API [autorizada pelo token](authentication-flows-public-server-side.md#user-pool-apis-auth-unauth-token-auth) com o token de acesso do usuário atual. Veja a seguir o corpo de um exemplo de solicitação `GetWebAuthnRegistrationOptions`.

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

A resposta do grupo de usuários contém o objeto `PublicKeyCreationOptions`. Apresente esse objeto em uma solicitação de API para o emissor do usuário. Ele fornece informações como a chave pública e o ID de parte confiável. O emissor responderá com um objeto `RegistrationResponseJSON`.

Apresente a resposta do registro em uma solicitação de [CompleteWebAuthnRegistration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CompleteWebAuthnRegistration.html)API, novamente autorizada com o token de acesso do usuário. Quando o grupo de usuários responder com uma resposta HTTP 200 com um corpo vazio, a chave de acesso do usuário estará registrada.

------
#### [ Sign in with a passkey ]

O login sem senha não tem um nome `AuthFlow` que você possa especificar e. [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) Em vez disso, você deve declarar um `AuthFlow` de `USER_AUTH` e solicitar uma opção de login ou escolher a opção sem senha na resposta do grupo de usuários. Para conectar um usuário a uma aplicação, configure o corpo da solicitação `InitiateAuth` ou `AdminInitiateAuth` da forma a seguir. Esse conjunto de parâmetros é o mínimo necessário para fazer login. Parâmetros adicionais estão disponíveis.

Neste exemplo, sabemos que o usuário deseja fazer login com uma chave de acesso e adicionamos um parâmetro `PREFERRED_CHALLENGE`.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser",
      "PREFERRED_CHALLENGE" : "WEB_AUTHN"
   },
   "ClientId": "1example23456789"
}
```

O Amazon Cognito responde com um desafio `WEB_AUTHN`. Sua aplicação deve responder a esse desafio. Inicie uma solicitação de login com o provedor da chave de acesso do usuário. Ele retornará um objeto [AuthenticationResponseJSON](https://www.w3.org/TR/webauthn-3/#dictdef-authenticationresponsejson).

```
{
   "ChallengeName": "WEB_AUTHN",
   "ChallengeResponses": {
      "USERNAME" : "testuser", 
      "CREDENTIAL" : "{AuthenticationResponseJSON}" 
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response]"
}
```

------

## MFA após o login
<a name="amazon-cognito-user-pools-authentication-flow-methods-mfa"></a>

Você pode configurar usuários que concluem o login com um fluxo de nome de usuário e senha para serem solicitados a fazer uma verificação adicional com uma senha de uso único enviada por e-mail, SMS ou uma aplicação geradora de código. O MFA é diferente do login sem senha com senhas de uso único. No entanto, as chaves de acesso com verificação de usuário podem atender aos requisitos de MFA quando você `FactorConfiguration` configura `MULTI_FACTOR_WITH_USER_VERIFICATION` como em seu grupo de usuários. `WebAuthnConfiguration` Para fluxos baseados em senha, o MFA em grupos de usuários é um modelo de resposta a desafios em que um usuário primeiro demonstra que sabe a senha e, em seguida, demonstra que tem acesso ao dispositivo registrado de segundo fator.

**Recursos de implementação**
+ [Adicionar MFA a um grupo de usuários](user-pool-settings-mfa.md)

## Tokens de atualização
<a name="amazon-cognito-user-pools-authentication-flow-methods-refresh"></a>

Sua aplicação utiliza *tokens de atualização* para manter os usuários conectados sem a necessidade de inserir suas credenciais novamente. As aplicações podem apresentar tokens de atualização ao grupo de usuários e trocá-los por novos tokens de ID e acesso. Com o token de atualização, você pode garantir que um usuário conectado ainda esteja ativo, obter informações de atributos atualizadas e atualizar os direitos de controle de acesso sem a intervenção do usuário.

**Recursos de implementação**
+ [Tokens de atualização](amazon-cognito-user-pools-using-the-refresh-token.md)

## Autenticação personalizada
<a name="amazon-cognito-user-pools-authentication-flow-methods-custom"></a>

Você pode querer configurar um método de autenticação para seus usuários que não esteja listado aqui. Você pode fazer isso com a *autenticação personalizada* usando acionadores do Lambda. Em uma sequência de funções do Lambda, o Amazon Cognito emite um desafio, faz uma pergunta que os usuários devem responder, verifica a precisão da resposta e determina se outro desafio deve ser emitido. As perguntas e respostas podem incluir perguntas de segurança, solicitações a um serviço CAPTCHA, solicitações a uma API de serviço de MFA externa ou tudo isso em sequência.

**Recursos de implementação**
+ [Acionadores do Lambda de desafio personalizado de autenticação](user-pool-lambda-challenge.md)

### Fluxo de autenticação personalizado
<a name="amazon-cognito-user-pools-custom-authentication-flow"></a>

Os grupos de usuários do Amazon Cognito também permitem usar fluxos de autenticação personalizados, os quais podem ajudar você a criar um modelo de autenticação baseado em desafio/resposta usando acionadores do AWS Lambda .

O fluxo de autenticação personalizado possibilita ciclos personalizados de desafio e resposta para atender a diferentes requisitos. O fluxo começa com uma chamada para a operação de API `InitiateAuth` que indica o tipo de autenticação que será usado e fornece todos os parâmetros de autenticação inicial. O Amazon Cognito responde à chamada do `InitiateAuth` com um dos seguintes tipos de informação: 
+ Um desafio para o usuário com uma sessão e parâmetros
+ Um erro se houver falha na autenticação do usuário.
+ ID, acesso e tokens de atualização, se os parâmetros fornecidos na chamada de `InitiateAuth` forem suficientes para que o usuário faça login. (Normalmente, o usuário ou a aplicação deve primeiro responder a um desafio, mas seu código personalizado deve determinar isso.)

 Se o Amazon Cognito responder à chamada `InitiateAuth` com um desafio, a aplicação reunirá mais entradas e chamará a operação `RespondToAuthChallenge`. Essa chamada fornece as respostas do desafio e repassa a sessão. O Amazon Cognito responde à chamada `RespondToAuthChallenge` de forma semelhante à chamada `InitiateAuth`. Se o usuário tiver feito login, o Amazon Cognito fornecerá tokens ou, se o usuário não estiver conectado, o Amazon Cognito apresentará outro desafio ou um erro. Se o Amazon Cognito retornar outro desafio, a sequência se repetirá e a aplicação chamará `RespondToAuthChallenge` até que o usuário faça login com êxito ou um erro seja retornado. Mais detalhes sobre as operações de API `InitiateAuth` e `RespondToAuthChallenge` são fornecidos na [documentação da API](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html). 

### Fluxo de autenticação personalizado e desafios
<a name="Custom-authentication-flow-and-challenges"></a>

Um aplicativo pode iniciar um fluxo de autenticação personalizado chamando `InitiateAuth` com `CUSTOM_AUTH` como o `Authflow`. Com um fluxo de autenticação personalizado, três acionadores do Lambda controlam os desafios e a verificação das respostas.
+ O acionador `DefineAuthChallenge` do Lambda usa como entrada uma matriz de sessão de desafios e respostas anteriores. Depois, ele gera o nome do próximo desafio e os boolianos que indicam se o usuário está autenticado e pode receber tokens. Esse acionador do Lambda é uma máquina de estado que controla o caminho do usuário por meio dos desafios.
+ O acionador `CreateAuthChallenge` do Lambda usa um nome de desafio como entrada e gera o desafio e os parâmetros para avaliar a resposta. Quando `DefineAuthChallenge` retorna `CUSTOM_CHALLENGE` como o próximo desafio, o fluxo de autenticação chama `CreateAuthChallenge`. O acionador `CreateAuthChallenge` do Lambda passa o próximo tipo de desafio no parâmetro de metadados de desafio.
+ A função do `VerifyAuthChallengeResponse` Lambda avalia a resposta e retorna um booleano para indicar se a resposta foi válida.

Um fluxo de autenticação personalizado também pode usar uma combinação de desafios integrados, como verificação de senha SRP e MFA por SMS. Ele pode usar desafios personalizados, como CAPTCHA ou perguntas secretas.

### Usar verificação de senha SRP no fluxo de autenticação personalizado
<a name="Using-SRP-password-verification-in-custom-authentication-flow"></a>

Para incluir a SRP em um fluxo de autenticação personalizado, você deve começar com ele.
+ Para iniciar a verificação de senha SRP em um fluxo personalizado, o aplicativo chama `InitiateAuth` com `CUSTOM_AUTH` como o `Authflow`. No mapa de `AuthParameters`, a solicitação de sua aplicação inclui `SRP_A:` (o valor de SRP A) e `CHALLENGE_NAME: SRP_A`.
+ O fluxo de `CUSTOM_AUTH` invoca o acionador do Lambda `DefineAuthChallenge` com uma sessão inicial de `challengeName: SRP_A` e `challengeResult: true`. Sua função do Lambda responde com `challengeName: PASSWORD_VERIFIER`, `issueTokens: false` e `failAuthentication: false`.
+  Depois, a aplicação deve chamar `RespondToAuthChallenge` com `challengeName: PASSWORD_VERIFIER` e os outros parâmetros necessários para a SRP no mapa `challengeResponses`. 
+ Se o Amazon Cognito verificar a senha, `RespondToAuthChallenge` invocará o acionador `DefineAuthChallenge` do Lambda com uma segunda sessão de `challengeName: PASSWORD_VERIFIER` e `challengeResult: true`. Nesse ponto, o acionador do Lambda `DefineAuthChallenge` pode responder com `challengeName: CUSTOM_CHALLENGE` para iniciar o desafio personalizado.
+ Se a MFA estiver habilitada para um usuário, depois que o Amazon Cognito verificar a senha, o usuário será desafiado a configurar ou fazer login com a MFA.

**nota**  
A página da Web de login hospedada do Amazon Cognito não pode ativar [Acionadores do Lambda de desafio personalizado de autenticação](user-pool-lambda-challenge.md).

Para obter mais informações sobre os acionadores do Lambda, incluindo o código de exemplo, consulte [Como personalizar fluxos de trabalho do grupo de usuários com acionadores do Lambda](cognito-user-pools-working-with-lambda-triggers.md).

## Fluxo de autenticação de migração de usuários
<a name="amazon-cognito-user-pools-user-migration-authentication-flow"></a>

Um acionador de migração de usuários do Lambda ajuda a migrar usuários de um sistema de gerenciamento de usuários herdado para seu grupo de usuários. Se você escolher o fluxo de autenticação `USER_PASSWORD_AUTH`, os usuários não terão que redefinir suas senhas durante a migração de usuários. Esse fluxo envia as senhas dos usuários para o serviço por uma conexão SSL criptografada durante a autenticação.

Quando você concluir a migração de todos os usuários, alterne os fluxos para o fluxo de SRP mais seguro. O fluxo de SRP não envia senhas pela rede.

Para saber mais sobre acionadores do Lambda, consulte [Como personalizar fluxos de trabalho do grupo de usuários com acionadores do Lambda](cognito-user-pools-working-with-lambda-triggers.md).

Para obter mais informações sobre como migrar usuários com um acionador do Lambda, consulte [Como importar usuários com um acionador do Lambda de migração de usuários](cognito-user-pools-import-using-lambda.md).

# Modelos de autorização para autenticação de API e SDK
<a name="authentication-flows-public-server-side"></a>

Ao iniciar o desenvolvimento da sua aplicação com a autenticação de grupos de usuários, você deve decidir qual modelo de autorização de API se adequa ao tipo da sua aplicação. Um modelo de autorização é um sistema para fornecer autorizações para fazer solicitações com os componentes de autenticação nas integrações de API e SDK dos grupos de usuários do Amazon Cognito. O Amazon Cognito tem três modelos de autorização: autorizado pelo IAM, público e autorizado por token.

Com solicitações autorizadas pelo IAM, a autorização provém de uma assinatura de um conjunto de credenciais do AWS IAM no cabeçalho `Authorization` de uma solicitação. Para aplicações do lado do servidor, essa prática protege as operações de autenticação com autorização do IAM. Com solicitações de autenticação públicas (não autenticadas), nenhuma autorização é necessária. Isso é adequado para aplicações do lado do cliente distribuídas aos usuários. Com operações autorizadas por token, normalmente implementadas em combinação com operações públicas, a autorização provém de um token de sessão ou de um token de acesso incluído no cabeçalho `Authorization` da solicitação. A autenticação do Amazon Cognito normalmente exige que você implemente duas ou mais operações de API em ordem, e as operações de API utilizadas dependem das características da sua aplicação. Clientes públicos, onde a aplicação é distribuída aos usuários, usam operações públicas, nas quais as solicitações de login não exigem autorização. As operações autorizadas por tokens mantêm a sessão dos usuários em aplicações públicas. Clientes do lado do servidor, onde a lógica da aplicação está hospedada em um sistema remoto, protegem as operações de autenticação com a autorização do IAM para solicitações de login. Os pares de operações de API a seguir e seus métodos de SDK correspondentes são mapeados para os modelos de autorização disponíveis.

Cada operação de autenticação pública tem alguma forma de equivalente do lado do servidor, por exemplo e. [UpdateUserAttributes[AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserAttributes.html) Enquanto as operações do lado do cliente são iniciadas pelo usuário e exigem confirmação, as operações do lado do servidor pressupõem que a alteração foi confirmada por um administrador do grupo de usuários e as alterações entram em vigor imediatamente. Neste exemplo, o Amazon Cognito envia uma mensagem com um código de confirmação para o usuário, e o token de acesso do usuário autoriza uma [VerifyUserAttribute](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifyUserAttribute.html)solicitação que envia o código. A aplicação do lado do servidor pode definir imediatamente o valor de qualquer atributo, embora [considerações especiais se apliquem](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html#CognitoUserPools-AdminUpdateUserAttributes-request-UserAttributes) à alteração do valor de endereços de e-mail e números de telefone quando usados para login.

Para comparar a autenticação de API e ver uma lista completa das operações de API e seus modelos de autorização, consulte [Noções básicas sobre a autenticação de API, OIDC e páginas de login gerenciado](#user-pools-API-operations).

------
#### [ Client-side (public) authentication ]

Veja a seguir uma sequência típica de solicitações em uma aplicação do lado do cliente.

1. A [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)operação pública envia credenciais primárias, como nome de usuário e senha.

1. A [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)operação autorizada pelo token envia um token de *sessão* a partir da `InitiateAuth` resposta e da resposta a um desafio, por exemplo, MFA. A autorização do token de sessão indica solicitações que fazem parte dos ciclos de not-yet-complete autenticação.

1. A [ConfirmDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmDevice.html)operação autorizada pelo token envia um token de *acesso* e executa a operação de gravação de adicionar um dispositivo lembrado ao perfil do usuário. A autorização do token de acesso indica solicitações que são para operações de autoatendimento do usuário após a conclusão da autenticação.

Para obter mais informações, consulte [Opções de autenticação do lado do cliente](#amazon-cognito-user-pools-client-side-authentication-flow) e [Noções básicas sobre a autenticação de API, OIDC e páginas de login gerenciado](#user-pools-API-operations).

------
#### [ Server-side authentication ]

Veja a seguir uma sequência típica de solicitações de uma operação do lado do servidor. Cada solicitação tem um cabeçalho de autorização do [AWS Signature versão 4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) assinado com as credenciais da máquina IAM emitidas para o servidor da aplicação.

1. A [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)operação envia credenciais primárias, como nome de usuário e senha.

1. [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)operação envia a resposta a um desafio, por exemplo, MFA.

1. A [AdminUpdateDeviceStatus](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateDeviceStatus.html)operação define a chave do dispositivo a partir da `AdminInitiateAuth` [resposta](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#API_AdminInitiateAuth_ResponseSyntax) conforme lembrada.

Para obter mais informações, consulte [Opções de autenticação do lado do servidor](#amazon-cognito-user-pools-server-side-authentication-flow) e [Noções básicas sobre a autenticação de API, OIDC e páginas de login gerenciado](#user-pools-API-operations).

------

Um usuário faz a autenticação respondendo a desafios sucessivos até que ela falhe ou o Amazon Cognito emita tokens para o usuário. Você pode repetir essas etapas com o Amazon Cognito, em um processo que inclui desafios diferentes, para comportar qualquer fluxo de autenticação personalizado.

**Topics**
+ [Opções de autenticação do lado do servidor](#amazon-cognito-user-pools-server-side-authentication-flow)
+ [Opções de autenticação do lado do cliente](#amazon-cognito-user-pools-client-side-authentication-flow)
+ [Noções básicas sobre a autenticação de API, OIDC e páginas de login gerenciado](#user-pools-API-operations)
+ [Lista de operações de API agrupadas por modelo de autorização](#user-pool-apis-auth-unauth)

## Opções de autenticação do lado do servidor
<a name="amazon-cognito-user-pools-server-side-authentication-flow"></a>

As aplicações Web e outras aplicações do *lado do servidor* implementam a autenticação em um servidor remoto que um cliente carrega em uma aplicação de exibição remota, como um navegador ou uma sessão SSH. As aplicações do lado do servidor geralmente têm as características a seguir.
+ Elas são criadas em uma aplicação instalada em um servidor em linguagens como Java, Ruby ou Node.js.
+ Elas se conectam a [clientes da aplicação](user-pool-settings-client-apps.md) de grupos de usuários que podem ter um segredo do cliente, chamados de *clientes confidenciais*.
+ Eles têm acesso às AWS credenciais.
+ Elas invocam o [login gerenciado](cognito-user-pools-managed-login.md) para autenticação ou usam operações autorizadas pelo IAM na API de grupos de usuários com um SDK da AWS .
+ Elas atendem clientes internos e podem atender clientes públicos.

As operações do lado do servidor com a API de grupos de usuários podem usar senhas, senhas de uso único ou chaves de acesso como o principal fator de login. Para aplicações no lado do servidor, a autenticação do grupo de usuários é semelhante à das aplicações no lado do cliente, exceto pelo seguinte:
+ O aplicativo do lado do servidor faz uma [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)solicitação de API. Essa operação requer AWS credenciais com permissões que incluem `cognito-idp:AdminInitiateAuth` e. `cognito-idp:AdminRespondToAuthChallenge` A operação retorna o desafio exigido ou o resultado da autenticação.
+ Quando o aplicativo recebe um desafio, ele faz uma solicitação de [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)API. A operação de API `AdminRespondToAuthChallenge` também requer credenciais da AWS .

*Para obter mais informações sobre a assinatura de solicitações da API do Amazon Cognito com AWS credenciais, consulte [Processo de assinatura do Signature versão 4](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) na AWS Referência geral.*

Na resposta `AdminInitiateAuth` `ChallengeParameters`, o atributo `USER_ID_FOR_SRP`, se estiver presente, incluirá o nome do usuário real, não um alias (como o endereço de e-mail ou o número de telefone). Na chamada para `AdminRespondToAuthChallenge`, nas `ChallengeResponses`, é necessário transmitir esse nome de usuário no parâmetro `USERNAME`. 

**nota**  
Como as implementações de administração de backend usam o fluxo de autenticação de administração, o fluxo não é compatível com dispositivos memorizados. Quando você ativa o rastreamento de dispositivo, a autenticação de administração é executada com êxito, mas qualquer chamada para atualizar o token de acesso falha.

## Opções de autenticação do lado do cliente
<a name="amazon-cognito-user-pools-client-side-authentication-flow"></a>

Aplicativos móveis e outros tipos de aplicações *do lado do cliente* são instalados nos dispositivos dos usuários e executam a lógica de autenticação e interface do usuário localmente. Eles geralmente têm as características a seguir.
+ Eles são desenvolvidos em linguagens como React Native, Flutter e Swift e implantados nos dispositivos do usuário.
+ Eles se conectam a [clientes da aplicação](user-pool-settings-client-apps.md) de grupos de usuários que não têm um segredo do cliente, chamados de *clientes públicos*.
+ Eles não têm acesso às AWS credenciais que autorizariam solicitações de API autorizadas pelo IAM.
+ Eles invocam o [login gerenciado](cognito-user-pools-managed-login.md) para autenticação ou usam operações públicas e autorizadas por token na API de grupos de usuários com um SDK. AWS 
+ Eles atendem clientes públicos e permitem que qualquer pessoa se cadastre e faça login.

As operações do lado do cliente com a API de grupos de usuários podem usar senhas, senhas de uso único ou chaves de acesso como o principal fator de login. O processo a seguir funciona para aplicativos do lado do cliente do usuário que você cria com [AWS Amplify](https://docs.amplify.aws/javascript/start/getting-started/)ou o. [AWS SDKs](https://aws.amazon.com/developer/tools/)

1. O usuário insere suas respectivas credenciais no aplicativo.

1. A aplicação chama a operação `InitiateAuth` com o nome de usuário e os detalhes da Secure Remote Password (SRP).

   Essa operação da API retorna os parâmetros de autenticação.
**nota**  
O aplicativo gera detalhes do SRP com os recursos do Amazon Cognito SRP incorporados ao. AWS SDKs

1. O aplicativo chama a operação `RespondToAuthChallenge`. Se a chamada for bem-sucedida, o Amazon Cognito retornará os tokens do usuário e o fluxo de autenticação será concluído.

   Se o Amazon Cognito exigir outro desafio, a chamada para `RespondToAuthChallenge` não retornará tokens. Em vez disso, a chamada retornará uma sessão.

1. Se `RespondToAuthChallenge` retornar uma sessão, o aplicativo chamará `RespondToAuthChallenge` novamente, dessa vez com a sessão e a resposta ao desafio (por exemplo, código de MFA).

## Noções básicas sobre a autenticação de API, OIDC e páginas de login gerenciado
<a name="user-pools-API-operations"></a>

Os grupos de usuários do Amazon Cognito são uma combinação de várias tecnologias de autenticação. Eles confiam em provedores de identidade externos (IdPs). Eles são IdPs para aplicativos que implementam autenticação com o OpenID Connect (OIDC). SDKs Eles fornecem autenticação como emissores de tokens web JSON (JWTs) semelhante à autenticação OIDC, mas em métodos de API que fazem parte do. AWS SDKs Também podem servir como pontos de entrada seguros para suas aplicações.

Quando quiser se inscrever, fazer login e gerenciar usuários no grupo de usuários, você terá duas opções. 

1. As *páginas de login gerenciado* e a *IU hospedada* clássica incluem os [endpoints interativos de login gerenciado](managed-login-endpoints.md) e os [endpoints de federação](federation-endpoints.md) que lidam com funções de IdP e de partes confiáveis. Eles formam um pacote de páginas da web públicas que o Amazon Cognito ativa quando você [seleciona um domínio](cognito-user-pools-assign-domain.md) para o grupo de usuários. Para começar rapidamente com os recursos de autenticação e autorização dos grupos de usuários do Amazon Cognito, incluindo páginas para cadastro, login, gerenciamento de senhas e autenticação multifator (MFA), use a interface de usuário integrada do login gerenciado.

   Os outros endpoints do pool de usuários facilitam a autenticação com provedores de identidade terceirizados (IdPs). Os serviços que eles realizam incluem o seguinte:

   1. Endpoints de retorno de chamada do provedor de serviços para reivindicações autenticadas de você, como e. IdPs `saml2/idpresponse` `oauth2/idpresponse` Quando o Amazon Cognito é um provedor de serviços (SP) intermediário entre sua aplicação e o IdP, os endpoints de retorno de chamada representam o serviço.

   1. Endpoints que fornecem informações sobre seu ambiente, como `oauth2/userInfo` e `/.well-known/jwks.json`. Seu aplicativo usa esses endpoints quando verifica tokens ou recupera dados do perfil do usuário com bibliotecas de desenvolvedores OIDC ou 2.0. OAuth 

1. A [API de grupos de usuários do Amazon Cognito](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html) é um conjunto de ferramentas para sua aplicação web ou aplicativo móvel autenticar usuários após coletar informações de login em seu próprio frontend personalizado. A autenticação da API de grupos de usuários produz os tokens web JSON a seguir.

   1. Um token de identidade com declarações de atributos verificáveis do usuário.

   1. Um token de acesso que autoriza o usuário a criar solicitações de API autorizadas por token para um [endpoint de serviço da AWS](https://docs.aws.amazon.com/general/latest/gr/cognito_identity.html).
**nota**  
Por padrão, os tokens de acesso da autenticação da API de grupos de usuários contêm apenas o escopo `aws.cognito.signin.user.admin`. Para gerar um token de acesso com escopos adicionais, por exemplo, para autorizar uma solicitação para uma API de terceiros, solicite os escopos durante a autenticação por meio dos endpoints do grupo de usuários ou adicione escopos personalizados em um [Acionador do Lambda antes da geração do token](user-pool-lambda-pre-token-generation.md). A personalização do token de acesso adiciona custos à sua AWS fatura.

   1. Um token de atualização que autoriza solicitações de novos tokens de ID e acesso e atualiza a identidade do usuário e as propriedades de controle de acesso.

Você pode vincular um usuário federado, que normalmente faria login por meio dos endpoints de grupos de usuários, a um usuário cujo perfil seja *local* para sua lista de usuários. Um usuário local existe exclusivamente em seu diretório de grupo de usuários sem federação por meio de um IdP externo. Se você vincular sua identidade federada a um usuário local em uma solicitação de [AdminLinkProviderForUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminLinkProviderForUser.html)API, ele poderá fazer login com a API de grupos de usuários. Para obter mais informações, consulte [Vincular usuários federados a um perfil de usuário existente](cognito-user-pools-identity-federation-consolidate-users.md).

A API de grupos de usuários do Amazon Cognito tem duplo propósito.

1. Ela cria e configura os recursos de grupos de usuários do Amazon Cognito. Por exemplo, você pode criar grupos de usuários, adicionar AWS Lambda acionadores e configurar o domínio do grupo de usuários que hospeda suas páginas de login gerenciadas.

1. Ela realiza operações de cadastro, login e outras operações para usuários locais e vinculados.

**Exemplo de cenário com a API de grupos de usuários do Amazon Cognito**

1. O usuário seleciona o botão “Criar uma conta” que você criou na aplicação. Ele inserem um endereço de e-mail e uma senha.

1. Seu aplicativo envia uma solicitação de [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)API e cria um novo usuário no seu grupo de usuários.

1. A aplicação solicita que o usuário forneça um código de confirmação enviado por e-mail. O usuário insere o código que recebeu em uma mensagem de e-mail.

1. Seu aplicativo envia uma solicitação de [ConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html)API com o código de confirmação do usuário.

1. A aplicação solicita que o usuário informe o nome de usuário e a senha, e ele insere essas informações.

1. Seu aplicativo envia uma solicitação de [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)API e armazena um token de ID, um token de acesso e um token de atualização. A aplicação chama as bibliotecas do OIDC para gerenciar os tokens do usuário e manter uma sessão persistente para esse usuário.

Na API de grupos de usuários do Amazon Cognito, você não pode conectar usuários que se federam por meio de um IdP. É necessário autenticar esses usuários por meio dos endpoints de grupo de usuários. Para ter mais informações sobre os endpoints do grupo de usuários que incluem login gerenciado, consulte [Referência de login gerenciado e endpoints do grupo de usuários](cognito-userpools-server-contract-reference.md).

Os usuários federados podem começar no login gerenciado e selecionar o IdP deles ou você pode ignorar o login gerenciado e enviar os usuários diretamente ao seu IdP para fazer login. Quando a solicitação de API para [Autorizar endpoint](authorization-endpoint.md) inclui um parâmetro de IdP, o Amazon Cognito redireciona silenciosamente o usuário para a página de login do IdP.

**Exemplo de cenário com páginas de login gerenciado**

1. O usuário seleciona o botão “Criar uma conta” que você criou na aplicação.

1. O login gerenciado apresenta ao usuário uma lista dos provedores de identidades social nos quais você registrou as credenciais de desenvolvedor. O usuário escolhe a Apple.

1. A aplicação inicia uma solicitação para [Autorizar endpoint](authorization-endpoint.md) com o nome do provedor `SignInWithApple`.

1. O navegador do usuário abre a página de autenticação da Apple. O usuário faz login e opta por autorizar que o Amazon Cognito leia as informações do perfil dele.

1. O Amazon Cognito confirma o token de acesso da Apple e consulta o perfil Apple do usuário.

1. O usuário apresenta um código de autorização do Amazon Cognito para a aplicação.

1. A biblioteca OIDC na aplicação troca o código de autorização com o [Endpoint de token](token-endpoint.md) e armazena um token de ID, token de acesso e token de atualização emitidos pelo grupo de usuários. A aplicação usa bibliotecas do OIDC para gerenciar os tokens do usuário e manter uma sessão persistente para esse usuário.

A API de grupo de usuários e as páginas de login gerenciado são compatíveis com uma variedade de cenários descritos neste guia. As seções a seguir examinam como a API de grupos de usuários se divide ainda mais em classes que atendem aos seus requisitos de inscrição, login e gerenciamento de recursos.

## Lista de operações de API agrupadas por modelo de autorização
<a name="user-pool-apis-auth-unauth"></a>

A API de grupos de usuários do Amazon Cognito, tanto uma interface de gerenciamento de recursos quanto uma interface de autenticação e autorização voltada para o usuário, combina os modelos de autorização a seguir nas respectivas operações. Dependendo da operação da API, talvez seja necessário fornecer autorização com credenciais do IAM, um token de acesso, um token de sessão, um segredo do cliente ou uma combinação deles. Para muitas operações de autenticação e autorização de usuários, você pode escolher entre versões autenticadas e não autenticadas da solicitação. Operações não autenticadas são a prática recomendada de segurança para aplicações que você distribui para os usuários, como aplicações móveis; não é necessário incluir nenhum segredo no código.

Você pode atribuir permissões nas políticas do IAM somente para [Operações de gerenciamento autorizadas pelo IAM](#user-pool-apis-auth-unauth-sigv4-management) e [Operações de usuário autorizadas pelo IAM](#user-pool-apis-auth-unauth-sigv4-user).

### Operações de gerenciamento autorizadas pelo IAM
<a name="user-pool-apis-auth-unauth-sigv4-management"></a>

As operações de gerenciamento autorizadas pelo IAM permitem modificar e exibir a configuração do grupo de usuários e do cliente da aplicação, da mesma forma que você faria no Console de gerenciamento da AWS. 

Por exemplo, para modificar seu grupo de usuários em uma solicitação de [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)API, você deve apresentar AWS credenciais e permissões do IAM para atualizar o recurso.

Para autorizar essas solicitações no AWS Command Line Interface (AWS CLI) ou em um AWS SDK, configure seu ambiente com variáveis de ambiente ou configuração de cliente que adicionem credenciais do IAM à sua solicitação. Para obter mais informações, consulte [Acessando AWS usando suas AWS credenciais](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys) no *Referência geral da AWS*. Você também pode enviar solicitações diretamente aos [endpoints de serviço](https://docs.aws.amazon.com/general/latest/gr/cognito_identity.html) da API de grupos de usuários do Amazon Cognito. Você deve autorizar ou *assinar* essas solicitações com AWS as credenciais que você incorpora no cabeçalho da sua solicitação. Para obter mais informações, consulte [Assinatura de solicitações AWS da API](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html).


| Operações de gerenciamento autorizadas pelo IAM | 
| --- |
| [AddCustomAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AddCustomAttributes.html) | 
| [CreateGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateGroup.html) | 
| [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html) | 
| [CreateResourceServer](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateResourceServer.html) | 
| [CreateUserImportJob](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserImportJob.html) | 
| [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html) | 
| [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html) | 
| [CreateUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolDomain.html) | 
| [DeleteGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteGroup.html) | 
| [DeleteIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteIdentityProvider.html) | 
| [DeleteResourceServer](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteResourceServer.html) | 
| [DeleteUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUserPool.html) | 
| [DeleteUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUserPoolClient.html) | 
| [DeleteUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUserPoolDomain.html) | 
| [DescribeIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeIdentityProvider.html) | 
| [DescribeResourceServer](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeResourceServer.html) | 
| [DescribeRiskConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeRiskConfiguration.html) | 
| [DescribeUserImportJob](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeUserImportJob.html) | 
| [DescribeUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeUserPool.html) | 
| [DescribeUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeUserPoolClient.html) | 
| [DescribeUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeUserPoolDomain.html) | 
| [Obtenha CSVHeader](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetCSVHeader.html) | 
| [GetGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetGroup.html) | 
| [GetIdentityProviderByIdentifier](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetIdentityProviderByIdentifier.html) | 
| [GetSigningCertificate](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetSigningCertificate.html) | 
| [Obtenha UICustomization](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUICustomization.html) | 
| [GetUserPoolMfaConfig](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserPoolMfaConfig.html) | 
| [ListGroups](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListGroups.html) | 
| [ListIdentityProviders](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListIdentityProviders.html) | 
| [ListResourceServers](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListResourceServers.html) | 
| [ListTagsForResource](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListTagsForResource.html) | 
| [ListUserImportJobs](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUserImportJobs.html) | 
| [ListUserPoolClients](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUserPoolClients.html) | 
| [ListUserPools](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUserPools.html) | 
| [ListUsers](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUsers.html) | 
| [ListUsersInGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUsersInGroup.html) | 
| [SetRiskConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetRiskConfiguration.html) | 
| [Conjunto UICustomization](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUICustomization.html) | 
| [SetUserPoolMfaConfig](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserPoolMfaConfig.html) | 
| [StartUserImportJob](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_StartUserImportJob.html) | 
| [StopUserImportJob](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_StopUserImportJob.html) | 
| [TagResource](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_TagResource.html) | 
| [UntagResource](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UntagResource.html) | 
| [UpdateGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateGroup.html) | 
| [UpdateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html) | 
| [UpdateResourceServer](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateResourceServer.html) | 
| [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html) | 
| [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html) | 
| [UpdateUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolDomain.html) | 

### Operações de usuário autorizadas pelo IAM
<a name="user-pool-apis-auth-unauth-sigv4-user"></a>

As operações de usuário autorizadas pelo IAM permitem o cadastro, o login, o gerenciamento de credenciais, a modificação e a exibição dos usuários. 

Por exemplo, você pode ter um nível de aplicação do lado do servidor que oferece suporte a um front-end da Web. Seu aplicativo do lado do servidor é um cliente OAuth confidencial no qual você confia com acesso privilegiado aos recursos do Amazon Cognito. Para registrar um usuário no aplicativo, seu servidor pode incluir AWS credenciais em uma solicitação de [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html)API. Para obter mais informações sobre os tipos de OAuth clientes, consulte [Tipos de clientes](https://www.rfc-editor.org/rfc/rfc6749#section-2.1) *na Estrutura de Autorização OAuth 2.0*.

Para autorizar essas solicitações no AWS CLI ou em um AWS SDK, configure seu ambiente de aplicativo do lado do servidor com variáveis de ambiente ou configuração de cliente que adicionem credenciais do IAM à sua solicitação. Para obter mais informações, consulte [Acessando AWS usando suas AWS credenciais](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys) no *Referência geral da AWS*. Você também pode enviar solicitações diretamente aos [endpoints de serviço](https://docs.aws.amazon.com/general/latest/gr/cognito_identity.html) da API de grupos de usuários do Amazon Cognito. Você deve autorizar ou *assinar* essas solicitações com AWS as credenciais que você incorpora no cabeçalho da sua solicitação. Para obter mais informações, consulte [Assinatura de solicitações AWS da API](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html).

Se o cliente da aplicação tiver um segredo de cliente, você deverá fornecer suas credenciais do IAM e, dependendo da operação, o parâmetro `SecretHash` ou o valor `SECRET_HASH` em `AuthParameters`. Para obter mais informações, consulte [Computar valores de hash de segredo](signing-up-users-in-your-app.md#cognito-user-pools-computing-secret-hash).


| Operações de usuário autorizadas pelo IAM | 
| --- |
| [AdminAddUserToGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminAddUserToGroup.html) | 
| [AdminConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminConfirmSignUp.html) | 
| [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html) | 
| [AdminDeleteUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminDeleteUser.html) | 
| [AdminDeleteUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminDeleteUserAttributes.html) | 
| [AdminDisableProviderForUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminDisableProviderForUser.html) | 
| [AdminDisableUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminDisableUser.html) | 
| [AdminEnableUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminEnableUser.html) | 
| [AdminForgetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminForgetDevice.html) | 
| [AdminGetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminGetDevice.html) | 
| [AdminGetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminGetUser.html) | 
| [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html) | 
| [AdminLinkProviderForUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminLinkProviderForUser.html) | 
| [AdminListDevices](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminListDevices.html) | 
| [AdminListGroupsForUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminListGroupsForUser.html) | 
| [AdminListUserAuthEvents](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminListUserAuthEvents.html) | 
| [AdminRemoveUserFromGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRemoveUserFromGroup.html) | 
| [AdminResetUserPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminResetUserPassword.html) | 
| [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html) | 
| [AdminSetUserMFAPreference](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserMFAPreference.html) | 
| [AdminSetUserPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserPassword.html) | 
| [AdminSetUserSettings](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserSettings.html) | 
| [AdminUpdateAuthEventFeedback](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateAuthEventFeedback.html) | 
| [AdminUpdateDeviceStatus](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateDeviceStatus.html) | 
| [AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html) | 
| [AdminUserGlobalSignOut](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUserGlobalSignOut.html) | 

### Operações de usuário não autenticadas
<a name="user-pool-apis-auth-unauth-unauth"></a>

Operações de usuário não autenticadas para se inscrever, fazer login e iniciar redefinições de senha para os usuários. Use operações de API não autenticadas ou *públicas* quando quiser que qualquer pessoa na internet se inscreva e faça login na aplicação.

Por exemplo, para registrar um usuário em seu aplicativo, você pode distribuir um cliente OAuth público que não forneça acesso privilegiado aos segredos. Você pode registrar esse usuário com a operação de API não autenticada. [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)

Para enviar essas solicitações em um cliente público que você desenvolveu com um AWS SDK, você não precisa configurar nenhuma credencial. Você também pode enviar solicitações diretamente aos [endpoints de serviço](https://docs.aws.amazon.com/general/latest/gr/cognito_identity.html) da API de grupos de usuários do Amazon Cognito sem autorização adicional.

Se o cliente da aplicação tiver um segredo de cliente, você deverá fornecer, dependendo da operação, o parâmetro `SecretHash` ou o valor `SECRET_HASH` em `AuthParameters`. Para obter mais informações, consulte [Computar valores de hash de segredo](signing-up-users-in-your-app.md#cognito-user-pools-computing-secret-hash).


| Operações de usuário não autenticadas | 
| --- |
| [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) | 
| [ResendConfirmationCode](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ResendConfirmationCode.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) | 
| [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) | 

### Operações de usuário autorizadas por token
<a name="user-pool-apis-auth-unauth-token-auth"></a>

As operações de usuário autorizadas por token terminam a sessão, gerenciam as credenciais, modificam e visualizam os usuários após eles fazerem login ou iniciarem o processo de login. Use operações de API autorizadas por token quando não quiser distribuir segredos na aplicação e quiser autorizar solicitações com as credenciais do seu próprio usuário. Se o usuário tiver concluído o login, você deverá autorizar a solicitação de API autorizada por token com um token de acesso. Se o usuário estiver no meio de um processo de login, você deverá autorizar a solicitação de API autorizada por token com um token de sessão que o Amazon Cognito retornou em resposta à solicitação anterior.

Por exemplo, em um cliente público, talvez você queira atualizar o perfil de um usuário de uma forma que restrinja o acesso de gravação somente ao próprio perfil do usuário. Para fazer essa atualização, seu cliente pode incluir o token de acesso do usuário em uma solicitação de [UpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserAttributes.html)API.

Para enviar essas solicitações em um cliente público que você desenvolveu com um AWS SDK, você não precisa configurar nenhuma credencial. Inclua um parâmetro `AccessToken` ou `Session` na solicitação. Você também pode enviar solicitações diretamente aos [endpoints de serviço](https://docs.aws.amazon.com/general/latest/gr/cognito_identity.html) da API de grupos de usuários do Amazon Cognito. Para autorizar uma solicitação para um endpoint de serviço, inclua o token de acesso ou sessão no corpo POST da solicitação.

Para assinar uma solicitação de API para uma operação autorizada por token, inclua o token de acesso como cabeçalho `Authorization` na solicitação, no formato `Bearer <Base64-encoded access token>`.


| Operações de usuário autorizadas por token | AccessToken | Sessão | 
| --- |--- |--- |
| [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html) |  | ✓ | 
| [ChangePassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ChangePassword.html) | ✓ |  | 
| [GetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html) | ✓ |  | 
| [StartWebAuthnRegistration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_StartWebAuthnRegistration.html) | ✓ |  | 
| [CompleteWebAuthnRegistration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CompleteWebAuthnRegistration.html) | ✓ |  | 
| [DeleteWebAuthnCredential](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteWebAuthnCredential.html) | ✓ |  | 
| [ListWebAuthnCredentials](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListWebAuthnCredentials.html) | ✓ |  | 
| [UpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserAttributes.html) | ✓ |  | 
| [DeleteUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUserAttributes.html) | ✓ |  | 
| [DeleteUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUser.html) | ✓ |  | 
| [ConfirmDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmDevice.html) | ✓ |  | 
| [ForgetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgetDevice.html) | ✓ |  | 
| [GetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetDevice.html) | ✓ |  | 
| [ListDevices](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListDevices.html) | ✓ |  | 
| [UpdateDeviceStatus](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateDeviceStatus.html) | ✓ |  | 
| [GetUserAttributeVerificationCode](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserAttributeVerificationCode.html) | ✓ |  | 
| [VerifyUserAttribute](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifyUserAttribute.html) | ✓ |  | 
| [SetUserSettings](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserSettings.html) | ✓ |  | 
| [SetUserMFAPreference](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserMFAPreference.html) | ✓ |  | 
| [GlobalSignOut](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GlobalSignOut.html) | ✓ |  | 
| [UpdateAuthEventFeedback](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateAuthEventFeedback.html) |  | ✓ | 
| [AssociateSoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AssociateSoftwareToken.html) | ✓ | ✓ | 
| [VerifySoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifySoftwareToken.html) | ✓ | ✓ | 
| [RevokeToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RevokeToken.html)¹ |  |  | 
| [GetTokensFromRefreshToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetTokensFromRefreshToken.html)¹ |  |  | 

¹ `RevokeToken` e `GetTokensFromRefreshToken` usam tokens de atualização como parâmetro de autorização. O token de atualização serve como token de autorização e como recurso de destino.