

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

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