Quero ativar a autenticação multifator (MFA) para os usuários da minha aplicação. Quero fazer isso com um token de senha de uso único com marcação temporal (TOTP) que usa grupos de usuários do Amazon Cognito.
Breve descrição
Para ativar a MFA por TOTP para os usuários da aplicação, configure a MFA por token de software TOTP para seu grupo de usuários.
**Importante:**antes de configurar o token de TOTP, revise os seguintes requisitos:
- Você deve adicionar a MFA ao seu grupo de usuários.
- Os tokens de TOTP não podem ser associados a um usuário até que ele tente fazer login na sua aplicação ou a menos que ele já esteja autenticado.
- A MFA não oferece suporte a usuários federados em um grupo de usuários.
Veja a seguir um exemplo de como usar a AWS Command Line Interface (AWS CLI) e o Google Authenticator para configurar a MFA por TOTP.
Resolução
Observação: se você receber erros ao executar comandos da AWS CLI, consulte Solucionar erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
-
Para iniciar a configuração do gerador de tokens de MFA, execute o seguinte comando associate-software-token da AWS CLI:
aws cognito-idp associate-software-token --access-token eyJraWQiO........ua5Pq3NaA
{
"SecretCode":
"AETQ6XXMDFYMEPFQQ7FD4HKXXXXAOY3MBXIVRBLRXX3SXLSHHWOA"
}
-
Abra a página inicial do Google Authenticator e escolha Começar.
-
Escolha Inserir chave de configuração.
-
Em Nome da conta, insira um nome de conta.
**Observação:**o nome da conta pode ser qualquer identificador de string.
-
Para a entrada de texto Sua chave, copie e cole o código secreto que foi gerado a partir do comando AssociateSoftwareToken que você executou na etapa 1.
-
Escolha Tipo de chave e, em seguida, selecione Com marcação temporal.
-
Confirme o token de software que usa a senha com marcação temporal que aparece na tela e no código a seguir:
aws cognito-idp verify-software-token --access-token eyJraWQiO........ua5Pq3NaA --user-code 269194 --friendly-device-name ExampleName
{
"Status": "SUCCESS"
}
-
Para configurar a configuração de MFA do usuário para MFA por TOTP, execute o comando set-user-mfa-preference ou admin-set-user-mfa-preference da AWS CLI:
Exemplo de comando set-user-mfa-preference
aws cognito-idp set-user-mfa-preference --software-token-mfa-settings Enabled=true,PreferredMfa=true --access-token eyJraWQiO........ua5Pq3NaA
**Observação:**esse comando permite que os usuários definam a própria configuração de MFA.
Exemplo de comando admin-set-user-mfa-preference
aws cognito-idp admin-set-user-mfa-preference --software-token-mfa-settings Enabled=true,PreferredMfa=true --username ExampleName --user-pool-id us-east-1_123456789
**Observação:**esse comando permite que um administrador defina a configuração de MFA de um usuário.
-
Para ativar o fluxo ALLOW_ADMIN_USER_PASSWORD_AUTH para o cliente da aplicação do grupo de usuários, abra o console do Amazon Cognito.
-
Escolha Gerenciar grupos de usuários.
-
Escolha seu cliente da aplicação e selecione Mostrar detalhes.
-
Escolha Ativar autenticação por senha de nome de usuário para APIs admin para autenticação (ALLOW_ADMIN_USER_PASSWORD_AUTH).
-
Escolha Salvar alterações do cliente da aplicação.
-
Para testar a configuração, autentique o usuário com um dos seguintes métodos:
A interface de usuário hospedada no Amazon Cognito.
As chamadas de API InitiateAuth, AdminInitiateAuth ou RespondToAuthChallenge na AWS CLI.
**Observação:**para autenticar um usuário usando um dos métodos, você deve ter a senha, o nome de usuário e o código de MFA do software do usuário.
Exemplo de comando admin-initiate-auth
aws cognito-idp admin-initiate-auth --user-pool-id us-east-1_123456789 --client-id 3n4b5urk1ft4fl3mg5e62d9ado --auth-flow ADMIN_USER_PASSWORD_AUTH --auth-parameters USERNAME=ExampleName,PASSWORD=P@ssw0rd
**Observação:**substitua as seguintes variáveis pelas informações: user-pool-id, client-id, username e password.
Exemplo de saída do comando admin-initiate-auth
{
"ChallengeName": "SOFTWARE_TOKEN_MFA",
"ChallengeParameters": {
"FRIENDLY_DEVICE_NAME": "ExampleDevice",
"USER_ID_FOR_SRP": "ExampleName"
},
"Session": "Xxz6iadwuWJGN4Z7f4ul5p50IHUqITquoaNxxyDvep.......3A6GokZWKeQ6gkFW4Pgv"
}
Exemplo de comando admin-respond-to-auth-challenge
aws cognito-idp admin-respond-to-auth-challenge --user-pool-id us-east-1_123456789 --client-id 3n4b5urk1ft4fl3mg5e62d9ado --challenge-name SOFTWARE_TOKEN_MFA --challenge-responses USERNAME=ExampleName,SOFTWARE_TOKEN_MFA_CODE=123456 --session Xxz6iadwuWJGN4Z7f4ul5p50IHUqITquoaNxxyDvep.......3A6GokZWKeQ6gkFW4Pgv
**Observação:**substitua as seguintes variáveis pelas informações: client-id, username e software_token_MFA_Code.
Exemplo de saída do comando admin-respond-to-auth-challenge
{
"AuthenticationResult": {
"ExpiresIn": 3600,
"RefreshToken": "eyJjdHkiOiJKV1QiLCJlbmMi.......dlbjrtyizlLzZZ5fjjCgL__AVHEzYycjJs_h3i-ly_KixDNtz9VEC",
"TokenType": "Bearer",
"NewDeviceMetadata": {
"DeviceKey": "us-east-1_28abrd7-10f7-9fc6-a931-3ede1c8ckd75",
"DeviceGroupKey": "-Gqkj3brS"
},
"IdToken": "eyJraWQiOiIzcFFSV29Pb........mNMbE_vvPkQYBuA9ackoER1aSABFGaKK4BpgPjMn7la_A",
"AccessToken": "eyJraWQiOi...........qwvQq4awt63TyWw"
},
"ChallengeParameters": {}
}
Informações relacionadas
Autenticação com grupos de usuários do Amazon Cognito