Quiero activar la autenticación multifactor (MFA) para los usuarios de mi aplicación. Quiero hacerlo con un token de contraseña temporal de un solo uso (TOTP) que utilice grupos de usuarios de Amazon Cognito.
Descripción corta
Para activar MFA de TOTP para los usuarios de su aplicación, configure la MFA con token de software TOTP para su grupo de usuarios.
Importante: Antes de configurar el token de TOTP, revise los siguientes requisitos:
- Debe agregar MFA a su grupo de usuarios.
- Los tokens de TOTP no se pueden asociar a un usuario hasta que el usuario intente iniciar sesión en su aplicación o a menos que ya esté autenticado.
- MFA no admite usuarios federados en un grupo de usuarios.
El siguiente es un ejemplo de cómo usar la interfaz de la línea de comandos de AWS (AWS CLI) y Google Authenticator para configurar la MFA de TOTP.
Resolución
Nota: Si se muestran errores al poner en marcha comandos de AWS CLI, consulte Solución de errores de AWS CLI. Además, asegúrese de utilizar la versión más reciente de la AWS CLI.
-
Para iniciar la configuración del generador de tokens de MFA, ejecute el siguiente comando de la CLI de AWS ](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cognito-idp/associate-software-token.html)associate-software-token[:
aws cognito-idp associate-software-token --access-token eyJraWQiO........ua5Pq3NaA
{
"SecretCode":
"AETQ6XXMDFYMEPFQQ7FD4HKXXXXAOY3MBXIVRBLRXX3SXLSHHWOA"
}
-
Abra la página de inicio de Google Authenticator y, a continuación, seleccione Comenzar.
-
Seleccione Introducir una clave de configuración.
-
En Nombre de la cuenta, introduzca un nombre de cuenta.
Nota: El nombre de la cuenta puede ser cualquier identificador de cadena.
-
Para la entrada de texto Su clave, copie y pegue el código secreto que se generó a partir del comando AssociateSoftwareToken que ha ejecutado en el paso 1.
-
Elija Tipo de clave y, a continuación, seleccione Temporal.
-
Confirme el token de software que usa la contraseña temporal que aparece en la pantalla y en el código siguiente:
aws cognito-idp verify-software-token --access-token eyJraWQiO........ua5Pq3NaA --user-code 269194 --friendly-device-name ExampleName
{
"Status": "SUCCESS"
}
-
Para configurar la configuración de MFA del usuario en MFA de TOTP, ejecute el comando de la AWS CLI set-user-mfa-preference o admin-set-user-mfa-preference:
Ejemplo del comando set-user-mfa-preference
aws cognito-idp set-user-mfa-preference --software-token-mfa-settings Enabled=true,PreferredMfa=true --access-token eyJraWQiO........ua5Pq3NaA
Nota: Este comando permite a los usuarios establecer su propia configuración de MFA.
Ejemplo del 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
Nota: Este comando permite al administrador establecer la configuración de MFA de un usuario.
-
Para activar el flujo ALLOW_ADMIN_USER_PASSWORD_AUTH para el cliente de la aplicación del grupo de usuarios, abra la consola de Amazon Cognito.
-
Elija Administrar grupos de usuarios.
-
Elija el cliente de su aplicación y seleccione Mostrar detalles.
-
Elija Habilitar autenticación de contraseña de nombre de usuario para las API de administración de autenticación (ALLOW_ADMIN_USER_PASSWORD_AUTH).
-
Seleccione Guardar los cambios del cliente de la aplicación.
-
Para probar la configuración, autentique al usuario con uno de los métodos siguientes:
La interfaz de usuario alojada de Amazon Cognito.
Las llamadas a la API InitiateAuth, AdminInitiateAuth o RespondToAuthChallenge en la AWS CLI.
Nota: Para autenticar a un usuario con cualquiera de los métodos, debe tener la contraseña, el nombre de usuario y el código de MFA del software del usuario.
Ejemplo del 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
Nota: Sustituya las siguientes variables por su información: user-pool-id, client-id, username y password.
Ejemplo de resultado del comando admin-initiate-auth
{
"ChallengeName": "SOFTWARE_TOKEN_MFA",
"ChallengeParameters": {
"FRIENDLY_DEVICE_NAME": "ExampleDevice",
"USER_ID_FOR_SRP": "ExampleName"
},
"Session": "Xxz6iadwuWJGN4Z7f4ul5p50IHUqITquoaNxxyDvep.......3A6GokZWKeQ6gkFW4Pgv"
}
Ejemplo del 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
Nota: Sustituya las siguientes variables por su información: client-id, username y software_token_MFA_Code.
Ejemplo de resultado del 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": {}
}
Información relacionada
Autenticación con grupos de usuarios de Amazon Cognito