

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

# 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\_USER\_PASSWORD\_AUTH** 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\_ADMIN\_USER\_PASSWORD\_AUTH**.

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\_USER\_AUTH**.

![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\_USER\_SRP\_AUTH** 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\_USER\_AUTH**.

![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\_CHALLENGE](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\_USER\_AUTH**.

**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\_USER\_AUTH**.

**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).