

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Administre los métodos de autenticación en AWS SDKs
<a name="authentication-flows-selection-sdk"></a>

Los usuarios de los grupos de usuarios de Amazon Cognito pueden iniciar sesión con una variedad de opciones o *factores* de inicio de sesión inicial. En algunos casos, los usuarios pueden hacer un seguimiento con autenticación multifactor (MFA). Estos primeros factores incluyen el nombre de usuario y la contraseña, la contraseña de un solo uso, la clave de acceso y la autenticación personalizada. Para obtener más información, consulte [Flujos de autenticación](amazon-cognito-user-pools-authentication-flow-methods.md). Cuando su aplicación tiene componentes de interfaz de usuario integrados e importa un módulo AWS del SDK, debe crear la lógica de la aplicación para la autenticación. Debe elegir uno de los dos métodos principales y, a partir de ese método, los mecanismos de autenticación que desee implementar.

Puede implementar la *autenticación basada en el cliente*, en la que la aplicación, o el cliente, declare el tipo de autenticación por adelantado. La otra opción es la *autenticación basada en opciones*, en la que la aplicación recopila un nombre de usuario y solicita los tipos de autenticación disponibles para los usuarios. Puede implementar estos modelos juntos en la misma aplicación o dividirlos entre los clientes de la aplicación, según lo que necesite. Cada método tiene características que son únicas; por ejemplo, la autenticación personalizada, en el método basado en el cliente, y la autenticación sin contraseña, en el caso del método basado en opciones.

En las aplicaciones personalizadas que se autentican con la implementación del AWS SDK de la API de grupos de usuarios, debes estructurar las solicitudes de API para adaptarlas a la configuración del grupo de usuarios, la configuración del cliente de la aplicación y las preferencias del lado del cliente. Una sesión `InitiateAuth` que comience con un `AuthFlow` de `USER_AUTH` empieza con la autenticación basada en opciones. Amazon Cognito responde a su API con un desafío del método de autenticación preferido o una lista de opciones. Una sesión que comienza con `AuthFlow` de `CUSTOM_AUTH` pasa directamente a la autenticación personalizada con activadores Lambda.

Algunos métodos de autenticación están fijos en uno de los dos tipos de flujo y algunos métodos están disponibles en ambos.

**Topics**
+ [Autenticación basada en opciones](#authentication-flows-selection-choice)
+ [Autenticación basada en el cliente](#authentication-flows-selection-client)

## Autenticación basada en opciones
<a name="authentication-flows-selection-choice"></a>

La aplicación puede solicitar los siguientes métodos de autenticación en la autenticación basada en opciones. Declare estas opciones en el `PREFERRED_CHALLENGE` parámetro [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-AuthParameters)o o [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#CognitoUserPools-AdminInitiateAuth-request-AuthParameters)en el `ChallengeName` parámetro o. [RespondToAuthChallenge[AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html#CognitoUserPools-AdminRespondToAuthChallenge-request-ChallengeName)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html#CognitoUserPools-RespondToAuthChallenge-request-ChallengeName)

1. `EMAIL_OTP` y `SMS_OTP`

   [Inicio de sesión sin contraseña con contraseñas de un solo uso](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless)

1. `WEB_AUTHN`

   [Inicio de sesión sin contraseña con claves de acceso WebAuthn](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passkey)

1. `PASSWORD`

   [Inicio de sesión con contraseñas persistentes](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-password)

   [Inicio de sesión con contraseñas persistentes y carga útil segura](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-srp)

   [MFA después del inicio de sesión](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-mfa)

Para revisar estas opciones en su contexto de API, consulte `ChallengeName` [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html#CognitoUserPools-RespondToAuthChallenge-request-ChallengeName).

El inicio de sesión basado en opciones genera un desafío en respuesta a su solicitud inicial. Este desafío verifica que la opción solicitada esté disponible o proporciona una lista de las opciones disponibles. La aplicación puede mostrar estas opciones a los usuarios, quienes, a continuación, introducen las credenciales del método de inicio de sesión preferido y proceden a autenticarse en las respuestas a las preguntas.

Dispone de las siguientes opciones basadas en opciones en su flujo de autenticación. Todas las solicitudes de este tipo requieren que su aplicación primero recopile un nombre de usuario o lo recupere de una memoria caché.

1. Solicite opciones solo con `AuthParameters` de `USERNAME`. Amazon Cognito devuelve un desafío `SELECT_CHALLENGE`. A partir de ahí, la aplicación puede solicitar al usuario que seleccione un desafío y devuelva esta respuesta a su grupo de usuarios.

1. Solicite un desafío preferido con `AuthParameters` de `PREFERRED_CHALLENGE` y los parámetros del desafío que prefiera, si los hubiera. Por ejemplo, si solicita un `PREFERRED_CHALLENGE` de `PASSWORD_SRP`, también debe incluir `SRP_A`. Si el usuario, el grupo de usuarios y el cliente de la aplicación están configurados para el desafío preferido, Amazon Cognito responde con el siguiente paso de ese desafío, por ejemplo, `PASSWORD_VERIFIER` en el `PASSWORD_SRP` flujo o [CodeDeliveryDetails](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CodeDeliveryDetailsType.html)en los flujos `EMAIL_OTP` and`SMS_OTP`. Si el desafío preferido no está disponible, Amazon Cognito responde con `SELECT_CHALLENGE` y una lista de los desafíos disponibles.

1. Deje que los usuarios inicien sesión en primer lugar y, luego, solicite las opciones de autenticación basadas en opciones. Una [GetUserAuthFactors](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserAuthFactors.html)solicitud con el token de acceso de un usuario que ha iniciado sesión devuelve sus factores de autenticación basados en opciones disponibles y su configuración de MFA. Con esta opción, un usuario puede iniciar sesión primero con el nombre de usuario y la contraseña y, a continuación, activar otra forma de autenticación. También puede usar esta operación para seleccionar opciones adicionales para un usuario que haya iniciado sesión con un desafío preferido.

A fin de [configurar el cliente de aplicación](authentication.md#authentication-implement) para la autenticación basada en opciones, añada `ALLOW_USER_AUTH` a los flujos de autenticación permitidos. También debe elegir los factores basados en opciones que desee permitir en la configuración de su grupo de usuarios. El siguiente proceso ilustra cómo elegir los factores de autenticación basados en opciones.

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

**Cómo configurar las opciones de autenticación basadas en opciones en un grupo de usuarios**

1. Inicie sesión en la consola AWS de [grupos de usuarios de Amazon Cognito y navegue hasta ella](https://console.aws.amazon.com/cognito/v2/idp). Elija un grupo de usuarios o cree uno nuevo.

1. En la configuración de su grupo de usuarios, seleccione el menú **Inicio de sesión**. Busque **Opciones para el inicio de sesión basado en opciones** y seleccione **Editar**.

1. La opción **Contraseña** siempre está disponible. Esto incluye los flujos `PASSWORD` y `PASSWORD_SRP`. Seleccione las **opciones adicionales** que desee añadir a las opciones de sus usuarios. Puede agregar una **clave de acceso** para `WEB_AUTHN`, una **contraseña única en mensaje de correo electrónico** para `EMAIL_OTP` y una **contraseña única en mensaje de SMS** para `SMS_OTP`.

1. Seleccione **Save changes (Guardar cambios)**.

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

El siguiente cuerpo parcial [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)o de [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)solicitud configura todas las opciones disponibles para la autenticación basada en elecciones.

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

------

## Autenticación basada en el cliente
<a name="authentication-flows-selection-client"></a>

La autenticación basada en el cliente admite los siguientes flujos de autenticación. Declare estas opciones en el `AuthFlow` parámetro o. [InitiateAuth[AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#CognitoUserPools-AdminInitiateAuth-request-AuthFlow)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-AuthFlow)

1. `USER_PASSWORD_AUTH` y `ADMIN_USER_PASSWORD_AUTH`

   [Inicio de sesión con contraseñas persistentes](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-password)

   [MFA después del inicio de sesión](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-mfa)

   Este flujo de autenticación es equivalente a `PASSWORD` en la autenticación basada en opciones.

1. `USER_SRP_AUTH`

   [Inicio de sesión con contraseñas persistentes y carga útil segura](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-srp)

   [MFA después del inicio de sesión](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-mfa)

   Este flujo de autenticación es equivalente a `PASSWORD_SRP` en la autenticación basada en opciones.

1. `REFRESH_TOKEN_AUTH`

   [Tokens de actualización](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-refresh)

   Este flujo de autenticación solo está disponible en la autenticación basada en el cliente.

1. `CUSTOM_AUTH`

   [Autenticación personalizada](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-custom)

   Este flujo de autenticación solo está disponible en la autenticación basada en el cliente.

Con la autenticación basada en el cliente, Amazon Cognito da por sentado que usted ha determinado cómo quiere autenticarse el usuario antes de que este comience los flujos de autenticación. La lógica para determinar el factor de inicio de sesión que un usuario quiere proporcionar debe determinarse con la configuración predeterminada o con mensajes personalizados; luego, debe declararse en la primera solicitud a su grupo de usuarios. La solicitud `InitiateAuth` declara un `AuthFlow` de inicio de sesión que se corresponde directamente con una de las opciones de la lista, como `USER_SRP_AUTH`. Con esta declaración, la solicitud también incluye los parámetros para iniciar la autenticación, como `USERNAME`, `SECRET_HASH` y `SRP_A`. Amazon Cognito podría complementar esta solicitud con desafíos adicionales, como `PASSWORD_VERIFIER` para el SRP o `SOFTWARE_TOKEN_MFA` para el inicio de sesión con contraseña, con TOTP y MFA.

A fin de [configurar el cliente de aplicación](authentication.md#authentication-implement) para la autenticación basada en el cliente, añada cualquier flujo de autenticación distinto de `ALLOW_USER_AUTH` en los flujos de autenticación permitidos. Algunos ejemplos son`ALLOW_USER_PASSWORD_AUTH`,`ALLOW_CUSTOM_AUTH`,`ALLOW_REFRESH_TOKEN_AUTH`. Para permitir los flujos de autenticación basados en el cliente, no se requiere ninguna configuración adicional del grupo de usuarios.