

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.

# Autenticación con grupos de usuarios de Amazon Cognito
<a name="authentication"></a>

Amazon Cognito incluye varios métodos para autenticar a los usuarios. Los usuarios pueden iniciar sesión con WebAuthn contraseñas y claves de acceso. Amazon Cognito puede enviarles una contraseña de un solo uso en un mensaje de correo electrónico o SMS. Puede implementar funciones de Lambda que organicen su propia secuencia de desafíos y respuestas. Son *flujos de autenticación*. En los flujos de autenticación, los usuarios proporcionan un secreto y Amazon Cognito lo verifica y, a continuación, emite tokens web JSON (JWTs) para que las aplicaciones los procesen con las bibliotecas de OIDC. En este capítulo, analizaremos cómo configurar los grupos de usuarios y los clientes de aplicación para varios flujos de autenticación en distintos entornos de aplicaciones. Conocerá las opciones para utilizar las páginas de inicio de sesión alojadas del inicio de sesión gestionado y para crear su propia lógica y interfaz en un SDK. AWS 

Todos los grupos de usuarios, tengan o no un dominio, pueden autenticar usuarios en la API de grupos de usuarios. Si agrega un dominio al grupo de usuarios, puede utilizar los [puntos de conexión del grupo de usuarios](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-userpools-server-contract-reference.html). La API de grupos de usuarios admite una variedad de modelos de autorización y flujos de solicitud para las solicitudes de API.

A fin de verificar la identidad de los usuarios, Amazon Cognito admite flujos de autenticación que incorporan tipos de desafíos además de contraseñas, como contraseñas de un solo uso enviadas por correo electrónico y SMS, y claves de acceso.

**Topics**
+ [Implementación de flujos de autenticación](#authentication-implement)
+ [Factores que debe tener en cuenta sobre la autenticación con grupos de usuarios](#authentication-flow-things-to-know)
+ [Un ejemplo de sesión de autenticación](#amazon-cognito-user-pools-authentication-flow)
+ [Configuración de los métodos de autenticación para el inicio de sesión administrado](authentication-flows-selection-managedlogin.md)
+ [Administre los métodos de autenticación en AWS SDKs](authentication-flows-selection-sdk.md)
+ [Flujos de autenticación](amazon-cognito-user-pools-authentication-flow-methods.md)
+ [Modelos de autorización para la autenticación de API y SDK](authentication-flows-public-server-side.md)

## Implementación de flujos de autenticación
<a name="authentication-implement"></a>

Ya sea que esté implementando un inicio de [sesión administrado](authentication-flows-selection-managedlogin.md) o una [interfaz de aplicación personalizada](authentication-flows-selection-sdk.md) con un AWS SDK para la autenticación, debe configurar el cliente de la aplicación para los tipos de autenticación que desee implementar. La siguiente información describe la configuración de los flujos de autenticación en los [clientes de aplicación](user-pool-settings-client-apps.md) y en la aplicación.

------
#### [ App client supported flows ]

Puede configurar los flujos compatibles para los clientes de su aplicación en la consola de Amazon Cognito o con la API de un AWS SDK. Después de configurar el cliente de la aplicación para que admita estos flujos, puede implementarlos en la aplicación.

El siguiente procedimiento configura los flujos de autenticación disponibles para un cliente de aplicación con la consola Amazon Cognito.

**Cómo configurar un cliente de aplicación para flujos de autenticación (consola)**

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ú **Clientes de aplicación**. Elija un cliente de aplicación o cree uno nuevo.

1. En **Información del cliente de aplicación**, seleccione **Editar**.

1. En **Flujos de clientes de aplicación**, elija los flujos de autenticación que desee admitir.

**Cómo configurar un cliente de aplicación para flujos de autenticación (API/SDK)**  
Para configurar los flujos de autenticación disponibles para un cliente de aplicaciones con la API de Amazon Cognito, defina el valor de `ExplicitAuthFlows` en una solicitud [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html#CognitoUserPools-CreateUserPoolClient-request-ExplicitAuthFlows)o [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html#CognitoUserPools-UpdateUserPoolClient-request-ExplicitAuthFlows). A continuación, puede ver un ejemplo donde se proporciona a un cliente una contraseña remota segura (SRP) y una autenticación basada en opciones.

```
"ExplicitAuthFlows": [ 
   "ALLOW_USER_AUTH",
   "ALLOW_USER_SRP_AUTH
]
```

Al configurar los flujos compatibles con el cliente de aplicación, puede especificar las opciones y valores de API siguientes.


**Soporte de flujo del cliente de aplicación**  

| Flujo de autenticación | Compatibilidad | Consola | API  | 
| --- | --- | --- | --- | 
| [Autenticación basada en opciones](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) | En el servidor, en el cliente | Seleccionar un tipo de autenticación al iniciar sesión | ALLOW\$1USER\$1AUTH | 
| [Inicio de sesión con contraseñas persistentes](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-password) | En el cliente | Inicio de sesión con nombre de usuario y contraseña | ALLOW\$1USER\$1PASSWORD\$1AUTH | 
| [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) | En el servidor, en el cliente | Inicio de sesión con una contraseña remota segura (SRP) | ALLOW\$1USER\$1SRP\$1AUTH | 
| [Actualice los tokens](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-refresh) | En el servidor, en el cliente | Obtener nuevos tokens de usuario de las sesiones autenticadas existentes | ALLOW\$1REFRESH\$1TOKEN\$1AUTH | 
| [Autenticación en el servidor](authentication-flows-public-server-side.md#amazon-cognito-user-pools-server-side-authentication-flow) | En el servidor | Inicio de sesión con credenciales administrativas en el servidor | ALLOW\$1ADMIN\$1USER\$1PASSWORD\$1AUTH | 
| [Autenticación personalizada](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-custom) | Aplicaciones personalizadas en el cliente y en el servidor. No es compatible con el inicio de sesión administrado. | Iniciar sesión con flujos de autenticación personalizados desde desencadenadores de Lambda | ALLOW\$1CUSTOM\$1AUTH | 

------
#### [ Implement flows in your application ]

El inicio de sesión administrado hace que las opciones de autenticación configuradas estén disponibles automáticamente en las páginas de inicio de sesión. En las aplicaciones personalizadas, inicie la autenticación con una declaración del flujo inicial.
+ Para elegir entre una lista de opciones de flujo para un usuario, declare la [autenticación basada en opciones](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) con el flujo `USER_AUTH`. Este flujo tiene métodos de autenticación que no están disponibles en los flujos de autenticación basados en el cliente, como la autenticación con [clave de acceso](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passkey) y [sin contraseña](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless).
+ Para elegir su flujo de autenticación por adelantado, declare la [autenticación basada en el cliente](authentication-flows-selection-sdk.md#authentication-flows-selection-client) con cualquier otro flujo que esté disponible en su cliente de aplicación.

Al iniciar sesión con los usuarios, el cuerpo [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-AuthFlow)de la [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#CognitoUserPools-AdminInitiateAuth-request-AuthFlow)solicitud debe incluir un `AuthFlow` parámetro.

Autenticación basada en opciones:

```
"AuthFlow": "USER_AUTH"
```

Autenticación basada en el cliente con SRP:

```
"AuthFlow": "USER_SRP_AUTH"
```

------

## Factores que debe tener en cuenta sobre la autenticación con grupos de usuarios
<a name="authentication-flow-things-to-know"></a>

Tenga en cuenta la siguiente información al diseñar el modelo de autenticación con grupos de usuarios de Amazon Cognito.

**Los flujos de autenticación en el inicio de sesión administrado y en la interfaz de usuario alojada**  
El [inicio de sesión administrado](cognito-user-pools-managed-login.md) tiene más opciones de autenticación que la interfaz de usuario alojada clásica. Por ejemplo, los usuarios solo pueden realizar la autenticación sin contraseña y con clave de acceso en el inicio de sesión administrado.

**Los flujos de autenticación personalizados solo están disponibles en la autenticación AWS del SDK**  
No puede realizar *flujos de autenticación personalizados* ni [autenticaciones personalizadas con activadores Lambda](user-pool-lambda-challenge.md) con el inicio de sesión administrado ni con la interfaz de usuario alojada clásica. La autenticación personalizada está disponible en la [autenticación con AWS SDKs](authentication-flows-selection-sdk.md).

**Inicio de sesión administrado para un proveedor de identidades (IdP) externo**  
No puedes iniciar sesión a los usuarios a través de un [tercero IdPs](cognito-user-pools-identity-federation.md) al [autenticarse con AWS SDKs](authentication-flows-selection-sdk.md). Debe implementar el inicio de sesión administrado o la clásica interfaz de usuario alojada, redirigir al objeto de autenticación resultante y IdPs, a continuación, procesarlo con las bibliotecas OIDC de su aplicación. Para obtener más información sobre el inicio de sesión administrado, consulte [Inicio de sesión administrado de grupos de usuarios](cognito-user-pools-managed-login.md).

**Efecto de la autenticación sin contraseña en otras características de usuario**  
La activación del 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) o [claves de acceso](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passkey) en el grupo de usuarios y en el cliente de aplicación repercute en la creación y migración de los usuarios. Cuando el inicio de sesión sin contraseña está activo, ocurre lo siguiente:  

1. Los administradores pueden crear usuarios sin contraseñas. La plantilla de mensaje de invitación predeterminada cambia y ya no incluye el marcador de posición de contraseñas `{###}`. Para obtener más información, consulte [Creación de cuentas de usuario como administrador](how-to-create-user-accounts.md).

1. En el caso de [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)las operaciones basadas en el SDK, los usuarios no están obligados a proporcionar una contraseña al registrarse. El inicio de sesión administrado y la interfaz de usuario alojada requieren una contraseña en la página de registro, aunque la autenticación sin contraseña esté permitida. Para obtener más información, consulte [Inscripción y confirmación de cuentas de usuario](signing-up-users-in-your-app.md).

1. Los usuarios importados de un archivo CSV pueden iniciar sesión inmediatamente con opciones sin contraseña, sin necesidad de restablecer la contraseña, si sus atributos incluyen una dirección de correo electrónico o un número de teléfono para una opción de inicio de sesión sin contraseña disponible. Para obtener más información, consulte [Importación de usuarios en grupos de usuarios desde un archivo CSV](cognito-user-pools-using-import-tool.md).

1. La autenticación sin contraseña no invoca el [activador Lambda de migración de usuarios](user-pool-lambda-migrate-user.md).

1. Los usuarios que inician sesión con una contraseña de un solo uso (OTP) como primer factor no pueden añadir un factor de [autenticación multifactor (MFA) a](user-pool-settings-mfa.md) su sesión. Las claves de paso con verificación de usuario pueden cumplir los requisitos de MFA cuando se configuran con. `MULTI_FACTOR_WITH_USER_VERIFICATION`

**La persona que confía en la clave de acceso no URLs puede figurar en la lista pública de sufijos**  
Puede usar nombres de dominio de su propiedad, como `www.example.com`, como ID del actor de confianza (RP) en la configuración de su clave de acceso. Esta configuración está pensada para admitir aplicaciones personalizadas que se ejecutan en dominios de su propiedad. La [lista pública de sufijos](https://publicsuffix.org/), o PSL, contiene dominios globales protegidos. Amazon Cognito devuelve un error cuando intenta establecer la URL de un RP en un dominio de la PSL.

**Topics**
+ [Duración del flujo de la sesión de autenticación](#authentication-flow-session-duration)
+ [Comportamiento de bloqueo por intentos de inicio de sesión con error](#authentication-flow-lockout-behavior)

### Duración del flujo de la sesión de autenticación
<a name="authentication-flow-session-duration"></a>

Según las características del grupo de usuarios, puede terminar respondiendo a varios desafíos para `InitiateAuth` y `RespondToAuthChallenge` antes de que la aplicación recupere los tokens de Amazon Cognito. Amazon Cognito incluye una cadena de sesión en la respuesta a cada solicitud. Para combinar las solicitudes de la API en un flujo de autenticación, incluya la cadena de sesión de la respuesta a la solicitud anterior en cada solicitud posterior. De forma predeterminada, los usuarios tienen tres minutos para completar cada desafío antes de que caduque la cadena de sesión. Para ajustar este periodo, cambie el cliente de la aplicación **Duración de la sesión de flujo de autenticación**. En el siguiente procedimiento, se describe cómo cambiar esta configuración en la configuración del cliente de la aplicación.

**nota**  
La configuración de la **duración de la sesión del flujo de autenticación** se aplica a la autenticación con la API de los grupos de usuarios de Amazon Cognito. El inicio de sesión administrado establece la duración de la sesión en 3 minutos para la autenticación multifactor y en 8 minutos para los códigos de restablecimiento de contraseña.

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

**Para configurar la duración de la sesión del flujo de autenticación del cliente (Consola de administración de AWS)**

1. En la pestaña **App integration** (Integración de aplicaciones) de su grupo de usuarios, seleccione el nombre de su cliente de aplicaciones en el contenedor **App clients and analytics** (Clientes de aplicaciones y análisis).

1. Elija **Editar** en el contenedor de **Información de cliente de aplicaciones**.

1. Cambie el valor de **Duración de la sesión del flujo de autenticación** a la duración de validez que desee, en minutos, para los códigos MFA de SMS y correo electrónico. Esto también cambia la cantidad de tiempo que tiene cualquier usuario para completar cualquier desafío de autenticación en el cliente de la aplicación.

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

------
#### [ User pools API ]

**Para configurar la duración de la sesión del flujo de autenticación del cliente (API Amazon Cognito)**

1. Prepare una solicitud `UpdateUserPoolClient` con la configuración de su grupo de usuarios existente desde una solicitud `DescribeUserPoolClient`. Su solicitud `UpdateUserPoolClient` debe incluir todas las propiedades del cliente de la aplicación existentes.

1. Cambie el valor de `AuthSessionValidity` a la duración de validez que desee, en minutos, para los códigos MFA de SMS. Esto también cambia la cantidad de tiempo que tiene cualquier usuario para completar cualquier desafío de autenticación en el cliente de la aplicación.

------

Para obtener más información acerca de los clientes de aplicación, consulte [Ajustes específicos de una aplicación en los clientes de aplicación](user-pool-settings-client-apps.md).

### Comportamiento de bloqueo por intentos de inicio de sesión con error
<a name="authentication-flow-lockout-behavior"></a>

Tras cinco intentos infructuosos de inicio de sesión con la contraseña de un usuario, independientemente de si se han solicitado con operaciones de API no autenticadas o con autorización IAM, Amazon Cognito bloquea al usuario durante un segundo. La duración del bloqueo se duplica después de cada intento fallido adicional, hasta un máximo de aproximadamente 15 minutos.

Los intentos realizados durante un periodo de bloqueo generan una excepción `Password attempts exceeded` y no afectan a la duración de los periodos de bloqueo posteriores. Para un número acumulado de intentos de inicio de sesión con error *n*, sin incluir las excepciones `Password attempts exceeded`, Amazon Cognito bloquea a su usuario durante *2^(n-5)* segundos. Para restablecer el bloqueo a su estado inicial *n=0*, su usuario debe iniciar sesión correctamente después de que venza un periodo de bloqueo, o no iniciar ningún intento de inicio de sesión durante 15 minutos consecutivos en cualquier momento después de un bloqueo. Este comportamiento está sujeto a cambios. Este comportamiento no se aplica a los desafíos personalizados, a menos que también realicen una autenticación basada en contraseña.

## Un ejemplo de sesión de autenticación
<a name="amazon-cognito-user-pools-authentication-flow"></a>

El diagrama y la step-by-step guía siguientes ilustran un escenario típico en el que un usuario inicia sesión en una aplicación. La aplicación de ejemplo presenta al usuario varias opciones de inicio de sesión. Para seleccionar una opción, el usuario debe introducir sus credenciales, proporcionar un factor de autenticación adicional e iniciar sesión.

![\[Diagrama de flujo que muestra una aplicación que solicita al usuario que introduzca datos e inicia sesión con un AWS SDK.\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/authentication-api-userauth.png)


Imagine una aplicación con una página de inicio de sesión en la que los usuarios puedan iniciar sesión con un nombre de usuario y una contraseña, solicitar un código de un solo uso en un mensaje de correo electrónico o elegir una opción de huella digital.

1. **Solicitud de inicio de sesión**: la aplicación muestra una pantalla de inicio con un botón *Iniciar sesión*.

1. **Solicitar inicio de sesión**: el usuario selecciona *Iniciar sesión*. Desde una cookie o desde la memoria caché, la aplicación recupera su nombre de usuario o le pide que lo introduzca.

1. **Opciones de solicitud**: su aplicación solicita las opciones de inicio de sesión del usuario mediante una solicitud de API `InitiateAuth` con el flujo `USER_AUTH`, en la que se solicitan los métodos de inicio de sesión disponibles para el usuario.

1. **Envío de opciones de inicio de sesión**: Amazon Cognito responde con `PASSWORD`, `EMAIL_OTP` y `WEB_AUTHN`. La respuesta incluye un identificador de sesión para que lo reproduzca en la siguiente respuesta.

1. **Opciones de visualización**: su aplicación muestra los elementos de la interfaz de usuario para que el usuario introduzca su nombre de usuario y contraseña, obtenga un código de un solo uso o escanee su huella digital.

1. **Elige option/Enter las credenciales**: el usuario introduce su nombre de usuario y contraseña.

1. **Inicio de la autenticación**: su aplicación proporciona la información de inicio de sesión del usuario con una solicitud de API `RespondToAuthChallenge` que confirma el inicio de sesión con nombre de usuario y contraseña y proporciona el nombre de usuario y la contraseña.

1. **Validación de las credenciales**: Amazon Cognito confirma las credenciales del usuario.

1. **Desafío adicional**: el usuario tiene la autenticación multifactor configurada con una aplicación de autenticación. Amazon Cognito devuelve un desafío `SOFTWARE_TOKEN_MFA`.

1. **Petición del desafío**: la aplicación muestra un formulario en el que se solicita una contraseña temporal de un solo uso (TOTP) desde la aplicación de autenticación del usuario.

1. **Respuesta al desafío**: el usuario envía la TOTP.

1. **Responder al desafío**: en otra solicitud `RespondToAuthChallenge`, su aplicación proporciona la TOTP del usuario.

1. **Validación de la respuesta al desafío**: Amazon Cognito confirma el código del usuario y determina que su grupo de usuarios está configurado para no plantear desafíos adicionales al usuario actual.

1. **Emitir tokens**: Amazon Cognito devuelve los tokens web de ID, acceso y actualización de JSON ()JWTs. La autenticación inicial del usuario está completa.

1. **Almacenamiento de los tokens**: su aplicación almacena en caché los tokens del usuario para poder hacer referencia a los datos del usuario, autorizar el acceso a los recursos y actualizar los tokens cuando caduquen.

1. **Representación de contenido autorizado**: su aplicación determina el acceso del usuario a los recursos en función de su identidad y roles, y entrega el contenido de la aplicación.

1. **Acceso al contenido**: el usuario ha iniciado sesión y comienza a usar la aplicación.

1. **Solicitud de contenido con un token caducado**: posteriormente, el usuario solicita un recurso que requiere autorización. El token en caché del usuario ha caducado.

1. **Tokens de actualización**: su aplicación hace una solicitud `InitiateAuth` con el token de actualización guardado por el usuario.

1. **Emitir fichas**: Amazon Cognito devuelve un nuevo ID y acceso. JWTs La sesión del usuario se actualiza de forma segura sin solicitar credenciales adicionales.

Puede usar [activadores AWS Lambda](cognito-user-pools-working-with-lambda-triggers.md) para personalizar la forma en que los usuarios se autentican. Estos disparadores emiten y verifican sus propios desafíos durante el flujo de autenticación.

También puede utilizar el flujo de autenticación de administrador para servidores backend seguros. También puede utilizar el [flujo de autenticación de migración de usuarios](cognito-user-pools-using-import-tool.md) para permitir la migración de usuarios sin necesidad de que estos restablezcan sus contraseñas.

# Configuración de los métodos de autenticación para el inicio de sesión administrado
<a name="authentication-flows-selection-managedlogin"></a>

Puede invocar [páginas de inicio de sesión administrado](cognito-user-pools-managed-login.md), un frontend web para la autenticación de grupos de usuarios, cuando desee que los usuarios inicien sesión, cierren sesión o restablezcan su contraseña. En este modelo, la aplicación importa las bibliotecas OIDC para procesar los intentos de autenticación basados en navegador con páginas de inicio de sesión administrado por grupos de usuarios. Las formas de autenticación disponibles para los usuarios dependen de la configuración del grupo de usuarios y del cliente de aplicación. Implemente el flujo `ALLOW_USER_AUTH` en su cliente de aplicación: Amazon Cognito solicitará a los usuarios que seleccionen un método de inicio de sesión entre las opciones disponibles. Implemente `ALLOW_USER_PASSWORD_AUTH` y asigne un proveedor de SAML: sus páginas de inicio de sesión indicarán a los usuarios la opción de introducir su nombre de usuario y contraseña o de conectarse con su IdP.

La consola de grupos de usuarios de Amazon Cognito puede ayudarle a empezar a configurar la autenticación de inicio de sesión administrado para su aplicación. Cuando cree un nuevo grupo de usuarios, especifique la plataforma para la que está desarrollando y la consola le proporcionará ejemplos de implementación de OIDC y OAuth bibliotecas con código de inicio para implementar los flujos de inicio y cierre de sesión. Puede crear un inicio de sesión administrado con muchas implementaciones de actores de confianza del OIDC. Siempre que sea posible, le recomendamos que utilice [bibliotecas de actores de confianza de OIDC certificadas](https://openid.net/developers/certified-openid-connect-implementations/). Para obtener más información, consulte [Introducción a los grupos de usuarios](getting-started-user-pools.md).

Por lo general, las bibliotecas de las partes que dependen del OIDC comprueban periódicamente el `.well-known/openid-configuration` punto final del grupo de usuarios para determinar el emisor, URLs como el punto final del token y el punto final de autorización. Como práctica recomendada, implemente este comportamiento de detección automática cuando tenga la opción de hacerlo. La configuración manual de los puntos de conexión del emisor introduce la posibilidad de que se produzcan errores. Por ejemplo, podría cambiar el dominio del grupo de usuarios. La ruta a `openid-configuration` no está vinculada al dominio del grupo de usuarios, por lo que las aplicaciones que detectan automáticamente los puntos de conexión del servicio recogerán automáticamente el cambio de dominio.

## Configuración del grupo de usuarios para el inicio de sesión administrado
<a name="authentication-flows-selection-managedlogin-settings"></a>

Es posible que desee permitir el inicio de sesión con varios proveedores para su aplicación, o quizá quiera usar Amazon Cognito como un directorio de usuarios independiente. Es posible que también desee recopilar los atributos de los usuarios, configurar y solicitar el MFA o solicitar direcciones de correo electrónico como nombres de usuario. No puede editar directamente los campos en el inicio de sesión administrado ni en la interfaz de usuario alojada. En lugar de eso, la configuración del grupo de usuarios establece automáticamente la gestión de los flujos de autenticación de los inicios de sesión administrados.

Los siguientes elementos de configuración del grupo de usuarios determinan los métodos de autenticación que Amazon Cognito presenta a los usuarios en el inicio de sesión administrado y en la interfaz de usuario alojada.

------
#### [ User pool options (Sign-in menu) ]

Las siguientes opciones se encuentran en el menú **Inicio de sesión** de un grupo de usuarios de la consola de Amazon Cognito.

**Opciones de inicio de sesión para grupos de usuarios en Cognito**  
Tiene opciones para los nombres de usuario. Sus páginas de inicio de sesión administrado y de interfaz de usuario alojada solo aceptan nombres de usuario en los formatos que seleccione. Cuando, por ejemplo, configura un grupo de usuarios con el **correo electrónico** como única opción de inicio de sesión, sus páginas de inicio de sesión administrado solo aceptan nombres de usuario en formato de correo electrónico.

**Atributos obligatorios.**  
Cuando establece un atributo como obligatorio en su grupo de usuarios, el inicio de sesión administrado solicita a los usuarios un valor para ese atributo cuando se registran.

**Opciones para el inicio de sesión basado en opciones**  
Tiene la configuración para los métodos de autenticación en [Autenticación basada en opciones](authentication-flows-selection-sdk.md#authentication-flows-selection-choice). Aquí puede activar o desactivar los métodos de autenticación, como el uso de la [clave de acceso](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passkey) y el método [sin contraseña](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless). Estos métodos solo están disponibles para grupos de usuarios con [dominios de inicio de sesión administrados](managed-login-branding.md) y [planes de características](cognito-sign-in-feature-plans.md) superiores al nivel **Lite**.

**Autenticación multifactor**  
El inicio de sesión administrado y la interfaz de usuario alojada gestionan las operaciones de registro y autenticación de la [MFA](user-pool-settings-mfa.md). Cuando se requiere MFA en su grupo de usuarios, sus páginas de inicio de sesión solicitan automáticamente a los usuarios que configuren su factor adicional. También piden a los usuarios que tienen una configuración de MFA que completen la autenticación con un código MFA. Cuando la MFA está desactivada o es opcional en su grupo de usuarios, las páginas de inicio de sesión no solicitan configurar la MFA.

**Recuperación de cuentas de usuario**  
La configuración de autoservicio para la [recuperación de cuentas]() de su grupo de usuarios determina si las páginas de inicio de sesión muestran un enlace en el que los usuarios puedan restablecer su contraseña.

------
#### [ User pool options (Domain menu) ]

Las siguientes opciones se encuentran en el menú **Dominio** de un grupo de usuarios de la consola de Amazon Cognito.

**Dominio**  
La elección del dominio del grupo de usuarios establece la ruta del enlace que los usuarios abren cuando invoca sus navegadores para autenticarse.

**Versión de marca**  
La versión de marca que elija determinará si el dominio del grupo de usuarios mostrará el inicio de sesión administrado o la interfaz de usuario alojada.

------
#### [ User pool options (Social and external providers menu) ]

La siguiente opción se encuentra en el menú **Proveedores sociales y externos** de un grupo de usuarios en la consola de Amazon Cognito.

**Proveedores**  
Los proveedores de identidad (IdPs) que añada a su grupo de usuarios pueden permanecer activos o inactivos para cada cliente de aplicaciones del grupo de usuarios.

------
#### [ App client options ]

Las siguientes opciones se encuentran en el menú **Clientes de aplicación** de un grupo de usuarios de la consola de Amazon Cognito. Para revisar estas opciones, seleccione un cliente de aplicación de la lista.

**Guía de configuración rápida**  
La guía de configuración rápida incluye ejemplos de código para una variedad de entornos de desarrolladores. Contienen las bibliotecas necesarias para integrar la autenticación de inicio de sesión administrado en su aplicación.

**Información sobre el cliente de aplicación**  
Edite esta configuración IdPs para asignarla a la aplicación que representa el cliente de la aplicación actual. En las páginas de inicio de sesión administrado, Amazon Cognito muestra las opciones para los usuarios. Estas opciones se determinan a partir de los métodos asignados y el IdP. Por ejemplo, si asigna un IdP de SAML 2.0 con el nombre `MySAML` y un inicio de sesión para un grupo de usuarios local, sus páginas de inicio de sesión administrado mostrarán las indicaciones del método de autenticación y un botón para `MySAML`.

**Configuración de autenticación**  
Edite esta configuración para establecer los métodos de autenticación de su aplicación. En las páginas de inicio de sesión administrado, Amazon Cognito muestra las opciones para los usuarios. Estas opciones se determinan a partir de la disponibilidad del grupo de usuarios como IdP y de los métodos que usted asigne. Por ejemplo, si asigna una autenticación `ALLOW_USER_AUTH` basada en opciones, las páginas de inicio de sesión administrado mostrarán las opciones disponibles, como introducir una dirección de correo electrónico e iniciar sesión con una clave de acceso. Las páginas de inicio de sesión administradas también muestran los botones de las páginas asignadas IdPs.

**Páginas de inicio de sesión**  
Defina el efecto visual de sus páginas de inicio de sesión administrado o de las páginas interactivas para el usuario de la interfaz de usuario alojada con las opciones disponibles en esta pestaña. Para obtener más información, consulte [Aplicación de la creación de marca en las páginas de inicio de sesión administrado](managed-login-branding.md).

------

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

# Flujos de autenticación
<a name="amazon-cognito-user-pools-authentication-flow-methods"></a>

El proceso de autenticación con grupos de usuarios de Amazon Cognito puede describirse mejor como un *flujo* en el que los usuarios toman una decisión inicial, envían credenciales y responden a desafíos adicionales. Cuando implementa la autenticación de inicio de sesión administrado en su aplicación, Amazon Cognito gestiona el flujo de estas solicitudes y desafíos. Al implementar flujos con un AWS SDK en el back-end de la aplicación, debe crear la lógica de las solicitudes, solicitar a los usuarios que aporten información y responder a los desafíos.

Como administrador de aplicaciones, las características de su usuario, sus requisitos de seguridad y su modelo de autorización ayudan a determinar cómo desea permitir que los usuarios inicien sesión. Hágase las siguientes preguntas:
+ ¿Quiero permitir que los usuarios inicien sesión con credenciales de [otros proveedores de identidad (IdPs)](#amazon-cognito-user-pools-authentication-flow-methods-federated)?
+ ¿Un [nombre de usuario y una contraseña](#amazon-cognito-user-pools-authentication-flow-methods-password) son suficiente como prueba de identidad?
+ ¿Podrían interceptarse mis solicitudes de autenticación de nombre de usuario y contraseña? ¿Deseo que mi aplicación transmita contraseñas o que [negocie la autenticación mediante hashes y sales](#amazon-cognito-user-pools-authentication-flow-methods-srp)?
+ ¿Deseo permitir que los usuarios se salten la introducción de contraseñas y [reciban una contraseña de un solo uso](#amazon-cognito-user-pools-authentication-flow-methods-passwordless) que les permita iniciar sesión?
+ ¿Quiero permitir que los usuarios inicien sesión con una [huella digital, el rostro o una clave de seguridad de hardware](#amazon-cognito-user-pools-authentication-flow-methods-passkey)?
+ ¿Cuándo quiero pedir la [autenticación multifactor (MFA](#amazon-cognito-user-pools-authentication-flow-methods-mfa)) si es que querré hacerlo?
+ ¿Deseo que [las sesiones de usuario se mantengan sin tener que volver a solicitar las credenciales?](#amazon-cognito-user-pools-authentication-flow-methods-refresh)
+ ¿Deseo [ampliar mi modelo de autorización](#amazon-cognito-user-pools-authentication-flow-methods-custom) más allá de las funciones integradas de Amazon Cognito?

Cuando tenga las respuestas a estas preguntas, podrá ver cómo activar las características pertinentes e implementarlas en las solicitudes de autenticación que realice su aplicación.

Después de configurar los flujos de inicio de sesión para un usuario, puedes comprobar su estado actual para ver si tiene MFA [y](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) factores de autenticación basados en elecciones con las solicitudes a la operación de la API. [GetUserAuthFactors](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserAuthFactors.html) Esta operación requiere la autorización con el token de acceso de un usuario que haya iniciado sesión. Devuelve los factores de autenticación del usuario y la configuración de MFA.

**Topics**
+ [Inicia sesión con un tercero IdPs](#amazon-cognito-user-pools-authentication-flow-methods-federated)
+ [Inicio de sesión con contraseñas persistentes](#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-srp)
+ [Inicio de sesión sin contraseña con contraseñas de un solo uso](#amazon-cognito-user-pools-authentication-flow-methods-passwordless)
+ [Inicio de sesión sin contraseña con claves de acceso WebAuthn](#amazon-cognito-user-pools-authentication-flow-methods-passkey)
+ [MFA después del inicio de sesión](#amazon-cognito-user-pools-authentication-flow-methods-mfa)
+ [Tokens de actualización](#amazon-cognito-user-pools-authentication-flow-methods-refresh)
+ [Autenticación personalizada](#amazon-cognito-user-pools-authentication-flow-methods-custom)
+ [Flujo de autenticación de migración de usuarios](#amazon-cognito-user-pools-user-migration-authentication-flow)

## Inicia sesión con un tercero IdPs
<a name="amazon-cognito-user-pools-authentication-flow-methods-federated"></a>

Los grupos de usuarios de Amazon Cognito actúan como intermediario de las sesiones de autenticación entre servicios IdPs como Sign in with Apple, Login with Amazon y OpenID Connect (OIDC). Este proceso también se denomina *inicio de sesión federado* o *autenticación federada*. La autenticación federada no utiliza ninguno de los flujos de autenticación que puede crear en el cliente de su aplicación. En su lugar, usted asigna el grupo de usuarios configurado al cliente de IdPs su aplicación. El inicio de sesión federado ocurre cuando los usuarios seleccionan su IdP en el inicio de sesión administrado o cuando la aplicación invoca una sesión con una redirección a su página de inicio de sesión de IdP.

Con el inicio de sesión federado, delega los factores de autenticación principales y de MFA al IdP del usuario. Amazon Cognito no añade los demás flujos avanzados de esta sección a un usuario federado a menos que [los vincule a un usuario local](cognito-user-pools-identity-federation-consolidate-users.md). Los usuarios federados no vinculados tienen nombres de usuario, pero son un almacén de datos de atributos mapeados que normalmente no se utilizan para el inicio de sesión independiente del flujo con navegador.

**Recursos de implementación**
+ [Inicio de sesión en el grupo de usuarios con proveedores de identidad externos](cognito-user-pools-identity-federation.md)

## Inicio de sesión con contraseñas persistentes
<a name="amazon-cognito-user-pools-authentication-flow-methods-password"></a>

En los grupos de usuarios de Amazon Cognito, cada usuario tiene un nombre de usuario. Podría ser un número de teléfono, una dirección de correo electrónico o un identificador elegido o proporcionado por el administrador. Los usuarios de este tipo pueden iniciar sesión con su nombre de usuario y contraseña y, de forma opcional, proporcionar una MFA. Los grupos de usuarios pueden iniciar sesión con nombre de usuario y contraseña con operaciones de API públicas o autorizadas por IAM y métodos del SDK. La aplicación puede enviar directamente la contraseña a su grupo de usuarios para su autenticación. Su grupo de usuarios responde con desafíos adicionales o con los tokens web JSON (JWTs) que son el resultado de una autenticación correcta.

------
#### [ Activate password sign-in ]

Para activar la [autenticación basada en el cliente](authentication-flows-selection-sdk.md#authentication-flows-selection-client) con nombre de usuario y contraseña, configure el cliente de la aplicación para que lo permita. En la consola de Amazon Cognito, navegue hasta el menú de **clientes** de **aplicaciones** en la configuración de su grupo de usuarios. Para permitir el inicio de sesión con una contraseña simple en una aplicación móvil o nativa en el cliente, edite un cliente de aplicación y seleccione **Iniciar sesión con nombre de usuario y contraseña: ALLOW\$1USER\$1PASSWORD\$1AUTH** en **Flujos de autenticación**. Para permitir el inicio de sesión con una contraseña simple en una aplicación del servidor, edite el cliente de aplicación y elija **Iniciar sesión con las credenciales administrativas del servidor: ALLOW\$1ADMIN\$1USER\$1PASSWORD\$1AUTH**.

Para activar la [autenticación basada en opciones](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) con nombre de usuario y contraseña, configure el cliente de aplicación para que lo permita. Edite el cliente de aplicación y elija **Inicio de sesión basado en opciones: ALLOW\$1USER\$1AUTH**.

![\[Captura de pantalla de la consola de Amazon Cognito, donde se ve la elección de flujos de autenticación con contraseña simple para un cliente de aplicación Se han seleccionado las opciones ALLOW_USER_PASSWORD_AUTH, ALLOW_ADMIN_USER_PASSWORD_AUTH y ALLOW_USER_AUTH.\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/screenshot-choose-password-admin-password-and-user-auth.png)


Para comprobar que la autenticación mediante contraseña esté disponible en los flujos de autenticación basados en opciones, vaya al **menú de inicio de sesión** y consulte la sección **Opciones para el inicio de sesión basado en opciones**. Puede iniciar sesión con una autenticación con contraseña simple si la **contraseña** está visible en **Opciones disponibles**. La opción de **contraseña** incluye las variantes de autenticación simple y SRP con nombre de usuario y contraseña.

![\[Captura de pantalla de la consola de Amazon Cognito, donde se ve la opción de autenticación por contraseña en la configuración de inicio de sesión basada en opciones USER_AUTH para un grupo de usuarios La opción Contraseña aparece activa.\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/screenshot-password-flow-in-user-auth.png)


Configure `ExplicitAuthFlows` con sus opciones de username-and-password autenticación preferidas en una [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html)solicitud [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html)o.

```
"ExplicitAuthFlows": [ 
   "ALLOW_USER_PASSWORD_AUTH",
   "ALLOW_ADMIN_USER_PASSWORD_AUTH",
   "ALLOW_USER_AUTH"
]
```

En una [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)solicitud [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)o, `Policies` configúrela con los flujos de autenticación basados en opciones que desee admitir. El valor `PASSWORD` en `AllowedFirstAuthFactors` incluye las opciones de flujo de autenticación con contraseña simple y SRP.

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

------
#### [ Choice-based sign-in with a password ]

Para iniciar sesión en una aplicación con la autenticación de nombre de usuario y contraseña, configure el cuerpo de su [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)solicitud de la siguiente manera. [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) Esta solicitud de inicio de sesión se realiza correctamente o continúa hasta el siguiente desafío si el usuario actual cumple los requisitos para la autenticación con nombre de usuario y contraseña. De lo contrario, responde con una lista de los desafíos de autenticación de factor principal disponibles. Este conjunto de parámetros es el mínimo necesario para iniciar sesión. Hay parámetros adicionales disponibles.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser",
      "PREFERRED_CHALLENGE" : "PASSWORD",
      "PASSWORD" : "[User's password]"
   },
   "ClientId": "1example23456789"
}
```

También puede omitir el valor de `PREFERRED_CHALLENGE` y recibir una respuesta que contenga una lista de los factores de inicio de sesión aptos para el usuario.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser"
   },
   "ClientId": "1example23456789"
}
```

Si no ha enviado un desafío preferido o el usuario enviado no reúne los requisitos para su desafío preferido, Amazon Cognito devolverá una lista de opciones en `AvailableChallenges`. Si `AvailableChallenges` incluye un `ChallengeName` de`PASSWORD`, puede continuar con la autenticación con una respuesta [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)o [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)impugnación en el siguiente formato. Debe pasar un parámetro `Session` que asocie la respuesta al desafío con la respuesta de la API a su solicitud de inicio de sesión inicial. Este conjunto de parámetros es el mínimo necesario para iniciar sesión. Hay parámetros adicionales disponibles.

```
{
   "ChallengeName": "PASSWORD",
   "ChallengeResponses": { 
      "USERNAME" : "testuser",
      "PASSWORD" : "[User's Password]"
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response"
}
```

Amazon Cognito responde a las solicitudes de desafío preferido aptas y satisfactorias y a las respuestas a desafíos `PASSWORD` con tokens o un desafío adicional obligatorio, como la autenticación multifactor (MFA).

------
#### [ Client-based sign-in with a password ]

Para iniciar sesión en una aplicación del cliente con la autenticación de nombre de usuario y contraseña, configura el cuerpo de la solicitud de la siguiente manera. [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) Este conjunto de parámetros es el mínimo necesario para iniciar sesión. Hay parámetros adicionales disponibles.

```
{
   "AuthFlow": "USER_PASSWORD_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser",
      "PASSWORD" : "[User's password]"
   },
   "ClientId": "1example23456789"
}
```

Para iniciar sesión en una aplicación del servidor con autenticación de nombre de usuario y contraseña, configura el cuerpo de la solicitud de la siguiente manera. [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html) La aplicación debe firmar esta solicitud con credenciales. AWS Este conjunto de parámetros es el mínimo necesario para iniciar sesión. Hay parámetros adicionales disponibles.

```
{
   "AuthFlow": "ADMIN_USER_PASSWORD_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser",
      "PASSWORD" : "[User's password]"
   },
   "ClientId": "1example23456789"
}
```

Amazon Cognito responde a las solicitudes exitosas con tokens o un desafío adicional requerido, como la autenticación multifactor (MFA).

------

## Inicio de sesión con contraseñas persistentes y carga útil segura
<a name="amazon-cognito-user-pools-authentication-flow-methods-srp"></a>

Otro método de inicio de sesión con nombre de usuario y contraseña en los grupos de usuarios es el uso del protocolo de contraseña remota segura (SRP). Esta opción envía una prueba del conocimiento de la contraseña (sal y hash de contraseña) que el grupo de usuarios puede verificar. Al no contener información secreta legible en la solicitud a Amazon Cognito, su aplicación es la única entidad que procesa las contraseñas que introducen los usuarios. La autenticación con SRP implica cálculos matemáticos que se pueden realizar mejor con un componente existente que pueda importar a su SDK. El SRP se suele implementar en aplicaciones en el cliente, como las aplicaciones móviles. Para obtener más información acerca del protocolo, consulte [The Stanford SRP Homepage](http://srp.stanford.edu/). [Wikipedia](https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol) también tiene recursos y ejemplos. Hay [distintas bibliotecas públicas](https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol#Implementations) disponibles para realizar los cálculos de SRP para sus flujos de autenticación.

La initiate-challenge-respond secuencia de autenticación de Amazon Cognito valida a los usuarios y sus contraseñas con SRP. Debe configurar su grupo de usuarios y el cliente de aplicación para que admitan la autenticación SRP y, a continuación, implementar la lógica de las solicitudes de inicio de sesión y las respuestas a los desafíos en su aplicación. Sus bibliotecas SRP pueden generar números aleatorios y valores calculados que demuestren a su grupo de usuarios que dispone de la contraseña de un usuario. Su aplicación rellena estos valores calculados en los campos con formato JSON `AuthParameters` y `ChallengeParameters` en las operaciones de API para grupos de usuarios de Amazon Cognito y los métodos SDK para la autenticación.

------
#### [ Activate SRP sign-in ]

Para activar la [autenticación basada en el cliente](authentication-flows-selection-sdk.md#authentication-flows-selection-client) con nombre de usuario y SRP, configure el cliente de aplicación para que lo permita. En la consola de Amazon Cognito, navegue hasta el menú de **clientes** de **aplicaciones** en la configuración de su grupo de usuarios. Para permitir el inicio de sesión con SRP en una aplicación móvil o nativa en el cliente, edite un cliente de aplicación y seleccione **Iniciar sesión con contraseña remota segura (SRP): ALLOW\$1USER\$1SRP\$1AUTH** en **Flujos de autenticación**.

**Para activar la [autenticación basada en opciones](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) con nombre de usuario y SRP, edite el cliente de aplicación y elija Inicio de sesión basado en opciones: ALLOW\$1USER\$1AUTH**.

![\[Captura de pantalla de la consola de Amazon Cognito, donde se ve la elección de flujos de autenticación con contraseña remota y segura para un cliente de aplicación Se han seleccionado las opciones ALLOW_USER_SRP_AUTH y ALLOW_USER_AUTH.\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/screenshot-choose-SRP-and-user-auth.png)


Para comprobar que la autenticación mediante SRP esté disponible en los flujos de autenticación basados en opciones, vaya al **menú de inicio de sesión** y consulte la sección **Opciones para el inicio de sesión basado en opciones**. Puede iniciar sesión con una autenticación con SRP si la **contraseña** está visible en **Opciones disponibles**. La opción de **contraseña** incluye las variantes de autenticación simple y SRP con nombre de usuario y contraseña.

![\[Captura de pantalla de la consola de Amazon Cognito, donde se ve la opción de autenticación por contraseña en la configuración de inicio de sesión basada en opciones USER_AUTH para un grupo de usuarios La opción Contraseña aparece como activa.\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/screenshot-password-flow-in-user-auth.png)


Configure `ExplicitAuthFlows` con sus opciones de username-and-password autenticación preferidas en una [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html)solicitud [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html)o.

```
"ExplicitAuthFlows": [ 
   "ALLOW_USER_SRP_AUTH",
   "ALLOW_USER_AUTH"
]
```

En una [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)solicitud [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)o, `Policies` configúrela con los flujos de autenticación basados en opciones que desee admitir. El valor `PASSWORD` en `AllowedFirstAuthFactors` incluye las opciones de flujo de autenticación con contraseña simple y SRP.

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

------
#### [ Choice-based sign-in with SRP ]

Para iniciar sesión en una aplicación mediante la autenticación de nombre de usuario y contraseña con SRP, configure el cuerpo de su solicitud de la siguiente manera. [AdminInitiateAuth[InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html) Esta solicitud de inicio de sesión se realiza correctamente o continúa hasta el siguiente desafío si el usuario actual cumple los requisitos para la autenticación con nombre de usuario y contraseña. De lo contrario, responde con una lista de los desafíos de autenticación de factor principal disponibles. Este conjunto de parámetros es el mínimo necesario para iniciar sesión. Hay parámetros adicionales disponibles.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser",
      "PREFERRED_CHALLENGE" : "PASSWORD_SRP",
      "SRP_A" : "[g^a % N]"
   },
   "ClientId": "1example23456789"
}
```

También puede omitir el valor de `PREFERRED_CHALLENGE` y recibir una respuesta que contenga una lista de los factores de inicio de sesión aptos para el usuario.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser"
   },
   "ClientId": "1example23456789"
}
```

Si no ha enviado un desafío preferido o el usuario enviado no reúne los requisitos para su desafío preferido, Amazon Cognito devolverá una lista de opciones en `AvailableChallenges`. Si `AvailableChallenges` incluye un `ChallengeName` de`PASSWORD_SRP`, puede continuar con la autenticación con una respuesta [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)o [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)impugnación en el siguiente formato. Debe pasar un parámetro `Session` que asocie la respuesta al desafío con la respuesta de la API a su solicitud de inicio de sesión inicial. Este conjunto de parámetros es el mínimo necesario para iniciar sesión. Hay parámetros adicionales disponibles.

```
{
   "ChallengeName": "PASSWORD_SRP",
   "ChallengeResponses": { 
      "USERNAME" : "testuser",
      "SRP_A" : "[g^a % N]"
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response"
}
```

Amazon Cognito responde a las solicitudes de desafío preferente y a las respuestas de desafíos de `PASSWORD_SRP` aptas con un desafío `PASSWORD_VERIFIER`. Su cliente debe completar los cálculos de SRP y responder al desafío en una [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)solicitud [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)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]"
}
```

Si la respuesta a un desafío `PASSWORD_VERIFIER` es correcta, Amazon Cognito emite tokens u otro desafío obligatorio como la autenticación multifactor (MFA).

------
#### [ Client-based sign-in with SRP ]

La autenticación SRP es más común en la autenticación en el cliente que en el servidor. Sin embargo, puede usar la autenticación SRP con [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)y. [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html) Para que un usuario inicie sesión en una aplicación, configure el cuerpo de su solicitud `InitiateAuth` o `AdminInitiateAuth` de la siguiente manera. Este conjunto de parámetros es el mínimo necesario para iniciar sesión. Hay parámetros adicionales disponibles.

El cliente genera `SRP_A` a partir de un módulo generador N *g* elevado a la potencia de un entero aleatorio secreto *a*.

```
{
   "AuthFlow": "USER_SRP_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser",
      "SRP_A" : "[g^a % N]"
   },
   "ClientId": "1example23456789"
}
```

Amazon Cognito responde con un desafío `PASSWORD_VERIFIER`. Su cliente debe completar los cálculos de SRP y responder al desafío en una solicitud [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)o [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html).

```
{
   "ChallengeName": "PASSWORD_VERIFIER",
   "ChallengeResponses": { 
      "PASSWORD_CLAIM_SIGNATURE" : "string",
      "PASSWORD_CLAIM_SECRET_BLOCK" : "string",
      "TIMESTAMP" : "string"
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response]"
}
```

Si la respuesta a un desafío `PASSWORD_VERIFIER` es correcta, Amazon Cognito emite tokens u otro desafío obligatorio como la autenticación multifactor (MFA).

------

## Inicio de sesión sin contraseña con contraseñas de un solo uso
<a name="amazon-cognito-user-pools-authentication-flow-methods-passwordless"></a>

Las contraseñas se pueden perder o robar. Es posible que solo desee comprobar si sus usuarios tienen acceso a una dirección de correo electrónico verificada, un número de teléfono o una aplicación de autenticación. La solución a este problema es el inicio de sesión *sin contraseña*. Su aplicación puede solicitar a los usuarios que introduzcan su nombre de usuario, dirección de correo electrónico o número de teléfono. A continuación, Amazon Cognito genera una contraseña de un solo uso (OTP), un código que deben confirmar. Un código correcto completa la autenticación.

Los flujos de autenticación con contraseña de un solo uso (OTP) no son compatibles con la autenticación multifactor (MFA) requerida en su grupo de usuarios. La autenticación por clave de paso con verificación de usuario puede cumplir con los requisitos de MFA cuando se configura`FactorConfiguration`. `MULTI_FACTOR_WITH_USER_VERIFICATION` Si la MFA es opcional en su grupo de usuarios, los usuarios que hayan activado la MFA no podrán iniciar sesión con un factor OTP como primer factor. Los usuarios que no tengan una preferencia de MFA en un grupo de usuarios con MFA opcional pueden iniciar sesión con factores sin contraseña. Para obtener más información, consulte [Cosas que debe saber acerca de la MFA de grupos de usuarios](user-pool-settings-mfa.md#user-pool-settings-mfa-prerequisites).

Cuando un usuario introduce correctamente un código que ha recibido en un mensaje SMS o de correo electrónico como parte de la autenticación sin contraseña, además de autenticar al usuario, el grupo de usuarios marca como verificado el atributo de dirección de correo electrónico o número de teléfono del usuario no verificado. El estado del usuario también cambió de `UNCONFIRMED` a `CONFIRMED`, independientemente de si configuró su grupo de usuarios para [verificar automáticamente](signing-up-users-in-your-app.md) las direcciones de correo electrónico o los números de teléfono.

**Nuevas opciones con inicio de sesión sin contraseña**  
Al activar la autenticación sin contraseña en el grupo de usuarios, se cambia el funcionamiento de algunos flujos de usuarios.

1. Los usuarios pueden registrarse sin contraseña y elegir un factor sin contraseña al iniciar sesión. También puede crear usuarios sin contraseñas como administrador.

1. Los usuarios que [importe con un archivo CSV](cognito-user-pools-using-import-tool.md) pueden iniciar sesión inmediatamente sin necesidad de contraseñas. No es necesario que establezcan una contraseña antes de iniciar sesión.

1. Los usuarios que no tengan una contraseña pueden enviar solicitudes de [ChangePassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ChangePassword.html)API sin el parámetro. `PreviousPassword`

**Inicio de sesión automático con OTPs**  
Los usuarios que se registren y confirmen sus cuentas de usuario mediante correo electrónico o mensaje SMS OTPs pueden iniciar sesión automáticamente con el factor de ausencia de contraseña que coincida con su mensaje de confirmación. En la interfaz de usuario con inicio de sesión administrado, los usuarios que confirmen sus cuentas y puedan iniciar sesión con OTP mediante el código de confirmación procederán automáticamente a iniciar sesión por primera vez después de proporcionar el código de confirmación. En tu aplicación personalizada con un AWS SDK, transfiere los siguientes parámetros a una operación o. [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)
+ El `Session` parámetro de la respuesta de la [ConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html)API como parámetro de `Session` solicitud.
+ Uno [AuthFlow](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-AuthFlow)de`USER_AUTH`.

Puede pasar un [PREFERRED\$1CHALLENGE](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-AuthParameters) de `EMAIL_OTP` o `SMS_OTP`, pero no es obligatorio. El parámetro `Session` proporciona una prueba de autenticación y Amazon Cognito ignora los `AuthParameters` cuando se pasa un código de sesión válido.

La operación de inicio de sesión devuelve la respuesta que indica que la autenticación se ha realizado correctamente [AuthenticationResult](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AuthenticationResultType.html), sin problemas adicionales si se cumplen las siguientes condiciones.
+ El código `Session` es válido y no ha caducado.
+ El usuario es apto para el método de autenticación OTP.

------
#### [ Activate passwordless sign-in ]

**Consola**  
Para activar el inicio de sesión sin contraseña, configure su grupo de usuarios para permitir el inicio de sesión principal con uno o más tipos sin contraseña; luego, configure el cliente de aplicación para permitir el flujo `USER_AUTH`. En la consola de Amazon Cognito, vaya al menú **Inicio de sesión** en **Autenticación**, en la configuración de su grupo de usuarios. Edite las **Opciones para el inicio de sesión basado en opciones** y elija **Contraseña de un solo uso por mensaje de correo electrónico** o **Contraseña de un solo uso por mensaje SMS**. Puede activar ambas opciones. Guarde los cambios.

Vaya al menú **Clientes de aplicación** y elija un cliente de aplicación o cree uno nuevo. Seleccione **Editar** y elija **Seleccionar un tipo de autenticación en el inicio de sesión: ALLOW\$1USER\$1AUTH**.

**API/SDK**  
En la API de grupos de usuarios, `SignInPolicy` configúrela con las opciones sin contraseña adecuadas en una [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)solicitud o. [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)

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

Configure el cliente de la aplicación `ExplicitAuthFlows` con la opción requerida en una solicitud [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html)o [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html).

```
"ExplicitAuthFlows": [ 
   "ALLOW_USER_AUTH"
]
```

------
#### [ Sign in with passwordless ]

El inicio de sesión sin contraseña no tiene un [cliente `AuthFlow` que puedas especificar en](authentication-flows-selection-sdk.md#authentication-flows-selection-client) y. [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) La autenticación OTP solo está disponible en función de la [elección](authentication-flows-selection-sdk.md#authentication-flows-selection-choice)`USER_AUTH`, donde puedes solicitar una opción `AuthFlow` de inicio de sesión preferida o elegir la opción sin contraseña de la del usuario. [AvailableChallenges](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-response-AvailableChallenges) Para que un usuario inicie sesión en una aplicación, configure el cuerpo de su solicitud `InitiateAuth` o `AdminInitiateAuth` de la siguiente manera. Este conjunto de parámetros es el mínimo necesario para iniciar sesión. Hay parámetros adicionales disponibles.

En este ejemplo, no sabemos de qué forma quiere iniciar sesión el usuario. Si añadimos un parámetro `PREFERRED_CHALLENGE` y el desafío preferido está disponible para el usuario, Amazon Cognito responde con ese desafío.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser"
   },
   "ClientId": "1example23456789"
}
```

En lugar de eso, puede añadir `"PREFERRED_CHALLENGE": "EMAIL_OTP"` o `"PREFERRED_CHALLENGE": "SMS_OTP"` en `AuthParameters` en este ejemplo. Si el usuario cumple los requisitos para utilizar ese método preferido, el grupo de usuarios envía inmediatamente un código a la dirección de correo electrónico o al número de teléfono del usuario y devuelve `"ChallengeName": "EMAIL_OTP"` o `"ChallengeName": "SMS_OTP"`.

Si no especifica un desafío preferido, Amazon Cognito responde con un parámetro `AvailableChallenges`.

```
{
   "AvailableChallenges": [ 
      "EMAIL_OTP", 
      "SMS_OTP",
      "PASSWORD"
    ],
   "Session": "[Session ID]"
}
```

Este usuario puede iniciar sesión sin contraseña con la OTP con mensaje de correo electrónico, la OTP con mensaje SMS y la combinación de nombre de usuario y contraseña. La aplicación puede pedirle al usuario su elección o realizar una elección en función de la lógica interna. A continuación, procede con una solicitud [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)o [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)solicitud en la que se selecciona el desafío. Supongamos que el usuario desea completar la autenticación sin contraseña con una OTP con mensaje de correo electrónico.

```
{
   "ChallengeName": "SELECT_CHALLENGE",
   "ChallengeResponses": { 
      "USERNAME" : "testuser",
      "ANSWER" : "EMAIL_OTP" 
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response]"
}
```

Amazon Cognito responde con un desafío `EMAIL_OTP` y envía un código a la dirección de correo electrónico verificada del usuario. A continuación, su aplicación debe volver a responder a este desafío.

Esta también sería la siguiente respuesta al desafío si ha solicitado `EMAIL_OTP` como `PREFERRED_CHALLENGE`.

```
{
   "ChallengeName": "EMAIL_OTP",
   "ChallengeResponses": {
      "USERNAME" : "testuser", 
      "EMAIL_OTP_CODE" : "123456" 
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response]"
}
```

------

## Inicio de sesión sin contraseña con claves de acceso WebAuthn
<a name="amazon-cognito-user-pools-authentication-flow-methods-passkey"></a>

Las claves de acceso son seguras e imponen un nivel de esfuerzo relativamente bajo a los usuarios. El inicio de sesión con clave de acceso usa *autenticadores*, dispositivos externos que los usuarios pueden usar para la autenticación. Las contraseñas habituales exponen a los usuarios a vulnerabilidades, como la suplantación de identidad, la adivinación de contraseñas y el robo de credenciales. Con las claves de acceso, su aplicación puede beneficiarse de medidas de seguridad avanzadas en los teléfonos móviles y otros dispositivos conectados a los sistemas de información o integrados en ellos. Un flujo de trabajo de inicio de sesión con clave de acceso común comienza con una llamada al dispositivo que invoca al administrador de contraseñas o *credenciales*, por ejemplo, el llavero de iOS o el administrador de contraseñas de Google Chrome. El administrador de credenciales del dispositivo les pide que seleccionen una clave de acceso y la autoricen con una credencial existente o un mecanismo de desbloqueo del dispositivo. Los teléfonos modernos cuentan con escáneres faciales, escáneres de huellas digitales, patrones de desbloqueo y otros mecanismos, algunos de los cuales cumplen al mismo tiempo con los principios de autenticación reforzada del tipo *algo que sabes* y *algo que tienes*. En el caso de la autenticación mediante claves de acceso biométricas, las claves de acceso son un método del tipo *algo que eres*.

Quizá quiera sustituir las contraseñas por la autenticación mediante huella digital, la identificación facial o la clave de seguridad. Se trata de una *clave de paso* o autenticación. *WebAuthn* Es habitual que los desarrolladores de aplicaciones permitan a los usuarios inscribir un dispositivo biométrico después de iniciar sesión por primera vez con una contraseña. Con los grupos de usuarios de Amazon Cognito, su aplicación puede configurar esta opción de inicio de sesión para los usuarios. La autenticación con clave de paso puede cumplir con los requisitos de autenticación multifactor (MFA) cuando su grupo de usuarios se haya establecido en. `FactorConfiguration` `MULTI_FACTOR_WITH_USER_VERIFICATION` En esta configuración, la autenticación con clave de paso con verificación de usuario cuenta como autenticación multifactorial.

Los flujos de autenticación con contraseña de un solo uso (OTP) no son compatibles con la autenticación multifactor (MFA) requerida en su grupo de usuarios. La autenticación por clave de paso con verificación de usuario puede cumplir con los requisitos de MFA cuando se configura`FactorConfiguration`. `MULTI_FACTOR_WITH_USER_VERIFICATION` Si la MFA es opcional en su grupo de usuarios, los usuarios que hayan activado la MFA no podrán iniciar sesión con un factor OTP como primer factor. Los usuarios que no tengan una preferencia de MFA en un grupo de usuarios con MFA opcional pueden iniciar sesión con factores sin contraseña. Para obtener más información, consulte [Cosas que debe saber acerca de la MFA de grupos de usuarios](user-pool-settings-mfa.md#user-pool-settings-mfa-prerequisites).

### ¿Qué son las claves de acceso?
<a name="amazon-cognito-user-pools-authentication-flow-methods-passkey-what-are"></a>

Las claves de paso simplifican la experiencia del usuario al eliminar la necesidad de recordar o introducir contraseñas complejas. OTPs Las claves de acceso se basan en WebAuthn CTAP2 normas elaboradas por el [World Wide Web Consortium](https://www.w3.org/TR/webauthn-3/) (W3C) y la Alianza FIDO (Fast Identity Online). *Los navegadores y las plataformas implementan estos estándares, proporcionan aplicaciones web o móviles APIs para iniciar un proceso de registro o autenticación de claves, y también una interfaz de usuario para que el usuario seleccione un autenticador de clave de paso e interactúe con él.*

Cuando un usuario registra un autenticador en un sitio web o una aplicación, el autenticador crea un key pair público-privado. WebAuthn los navegadores y las plataformas envían la clave pública al back-end de la aplicación, del sitio web o la aplicación. El autenticador conserva la clave privada, la clave IDs y los metadatos sobre el usuario y la aplicación. Cuando el usuario quiere autenticarse en la aplicación registrada con su autenticador registrado, la aplicación genera un desafío aleatorio. La respuesta a este desafío es la firma digital del desafío generada con la clave privada del autenticador para esa aplicación y usuario, así como los metadatos relevantes. El navegador o la plataforma de la aplicación reciben la firma digital y la pasan al backend de la aplicación. A continuación, la aplicación valida la firma con la clave pública almacenada.

**nota**  
La aplicación no recibe ningún secreto de autenticación que los usuarios proporcionen a su autenticador, ni recibe información sobre la clave privada.

A continuación, se muestran algunos ejemplos y capacidades de los autenticadores actualmente en el mercado. Un autenticador puede cumplir con alguna de estas categorías o con todas ellas.
+ Algunos autenticadores *verifican al usuario* con factores como un PIN, una entrada biométrica con un rostro o huella digital o un código de acceso antes de conceder dicho acceso, lo que garantiza que solo el usuario legítimo pueda autorizar las acciones. Otros autenticadores no tienen ninguna función de verificación de usuario y algunos pueden omitir la verificación de usuario cuando una aplicación no la requiere.
+ Algunos autenticadores, como los tokens de YubiKey hardware, son portátiles. Se comunican con los dispositivos a través de conexiones USB, Bluetooth o NFC. Algunos autenticadores son locales y están vinculados a una plataforma, como Windows Hello en un ordenador o Face ID en un iPhone. El usuario puede transportar un autenticador vinculado a un dispositivo si es lo suficientemente pequeño, como un dispositivo móvil. A veces, los usuarios pueden conectar su autenticador de hardware a muchas plataformas diferentes mediante comunicación inalámbrica. Por ejemplo, los usuarios de los navegadores de escritorio pueden usar su teléfono inteligente como autenticador de clave de acceso cuando escanean un código QR.
+ Algunas claves de acceso vinculadas a la plataforma se sincronizan con la nube para poder utilizarlas desde varios lugares. Por ejemplo, las claves de acceso de Face ID de los iPhones sincronizan los metadatos de las claves con las cuentas de Apple de los usuarios en su llavero de iCloud. Estas claves de acceso permiten una autenticación fluida en todos los dispositivos Apple, en lugar de requerir que los usuarios registren cada dispositivo de forma independiente. Las aplicaciones autenticadoras basadas en software, como 1Password, Dashlane y Bitwarden, sincronizan las claves de acceso en todas las plataformas en las que el usuario ha instalado la aplicación.

En WebAuthn términos terminológicos, los sitios web y las aplicaciones son *partes que confían en sí mismas*. Cada clave de acceso está asociada a un identificador de usuario específico, un identificador unificado que representa los sitios web o las aplicaciones que aceptan la autenticación con clave de acceso. Los desarrolladores deben seleccionar cuidadosamente su ID de actor de confianza para tener el alcance de autenticación adecuado. Un identificador de actor de confianza es el nombre de dominio raíz de un servidor web. Una clave de acceso con esta especificación de ID de actor de confianza puede autenticar ese dominio y sus subdominios. Los navegadores y las plataformas deniegan la autenticación con clave de acceso cuando la URL del sitio web al que el usuario quiere acceder no coincide con el ID del actor de confianza. Del mismo modo, en el caso de las aplicaciones móviles, solo se puede usar una clave de acceso si la ruta de la aplicación está presente en los archivos de asociación `.well-known` que la aplicación pone a disposición en la ruta indicada por el ID del actor de confianza.

Las claves de acceso son *reconocibles*. Un navegador o una plataforma pueden reconocerlas y utilizarlas automáticamente sin necesidad de que el usuario introduzca un nombre de usuario. Cuando un usuario visita un sitio web o una aplicación que admite la autenticación con clave de acceso, puede seleccionarlas de una lista de claves que el navegador o la plataforma ya conocen, o puede escanear un código QR.

### ¿Cómo implementa Amazon Cognito la autenticación con clave de acceso?
<a name="amazon-cognito-user-pools-authentication-flow-methods-passkey-cognito"></a>

Las claves de acceso son una característica opcional que está disponible en todos los [planes de características](cognito-sign-in-feature-plans.md), con la excepción de **Lite**. Solo está disponible en el [flujo de autenticación basado en opciones](authentication-flows-selection-sdk.md#authentication-flows-selection-choice). Con el [inicio de sesión administrado](authentication-flows-selection-managedlogin.md), Amazon Cognito gestiona la lógica de la autenticación con clave de acceso. También puede usar la [API de grupos de usuarios de Amazon Cognito AWS SDKs para realizar la autenticación con clave de paso en](#amazon-cognito-user-pools-authentication-flow-methods) el back-end de la aplicación.

Amazon Cognito reconoce las claves de paso creadas con uno de los dos algoritmos criptográficos asimétricos ES256 (-7) y (-257). RS256 La mayoría de los autenticadores admiten ambos algoritmos. De forma predeterminada, los usuarios pueden configurar cualquier tipo de autenticador, por ejemplo, tokens de hardware, teléfonos móviles inteligentes y aplicaciones de autenticación de software. Amazon Cognito no admite actualmente la aplicación de [atestaciones](https://csrc.nist.gov/glossary/term/attestation).

En su grupo de usuarios, puede configurar la verificación de usuario como preferida u obligatoria. Esta configuración se establece de forma predeterminada en las solicitudes de API que no proporcionan un valor, y se selecciona de forma predeterminada en la consola de Amazon Cognito. Al configurar la verificación de usuarios como preferida, los usuarios pueden configurar autenticadores que no tienen la capacidad de verificación de usuarios, y las operaciones de registro y autenticación se pueden realizar correctamente sin la verificación del usuario. Para exigir la verificación de los usuarios en el registro y la autenticación con clave de acceso, cambie esta configuración a obligatoria.

El identificador del actor de confianza (RP) que establezca en la configuración de la clave de acceso es una decisión importante. Si no especifica lo contrario y la [versión de marca del dominio](managed-login-branding.md) es el inicio de sesión administrado, su grupo de usuarios esperará de forma predeterminada que el nombre de su [dominio personalizado](cognito-user-pools-add-custom-domain.md) sea el ID del RP. Si no tiene un dominio personalizado y no especifica lo contrario, su grupo de usuarios utilizará de forma predeterminada un ID de RP de su [dominio de prefijo](cognito-user-pools-assign-domain-prefix.md). También puede configurar su ID de RP para que sea cualquier nombre de dominio que no figure en la lista de sufijos públicos (PSL). La entrada de su ID de RP se aplica al registro y la autenticación con clave de acceso en el inicio de sesión administrado y en la autenticación del SDK. La clave de acceso solo funciona en aplicaciones móviles, ya que Amazon Cognito puede localizar un archivo de asociación `.well-known` con su ID de RP como dominio. Como práctica recomendada, determine y establezca el valor del ID del actor de confianza antes de que su sitio web o aplicación estén disponibles públicamente. Si cambia su ID de RP, los usuarios deberán volver a registrarse con el nuevo ID de RP.

Cada usuario puede registrar hasta 20 claves de acceso. Solo pueden registrar una clave de acceso después de haber iniciado sesión en su grupo de usuarios al menos una vez. El inicio de sesión administrado supone un esfuerzo considerable para el registro de la clave de acceso. Al habilitar la autenticación con clave de acceso para un grupo de usuarios y un cliente de aplicación, el grupo de usuarios con un dominio de inicio de sesión administrado recuerda a los usuarios finales que deben registrar una clave de acceso después de crear una nueva cuenta de usuario. También puede invocar los navegadores de los usuarios en cualquier momento para dirigirlos a una página de inicio de sesión administrado para el registro de la clave de acceso. Los usuarios deben proporcionar un nombre de usuario antes de que Amazon Cognito pueda iniciar la autenticación con clave de acceso. El inicio de sesión administrado lo gestiona automáticamente. La página de inicio de sesión solicita un nombre de usuario, valida que el usuario tenga registrada al menos una clave de acceso y, a continuación, solicita el inicio de sesión con la clave de acceso. Del mismo modo, las aplicaciones basadas en el SDK deben solicitar un nombre de usuario y proporcionarlo en la solicitud de autenticación.

Cuando configura la autenticación de grupos de usuarios con claves de acceso y tiene un dominio personalizado y un dominio de prefijo, el ID del RP toma como valor predeterminado el nombre de dominio completo (FQDN) de su dominio personalizado. Para configurar un dominio de prefijo como ID de RP en la consola de Amazon Cognito, elimine su dominio personalizado o introduzca el FQDN del dominio de prefijo como **dominio de terceros**.

------
#### [ Activate passkey sign-in ]

**Consola**  
Para activar el inicio de sesión con clave de acceso, configure su grupo de usuarios para permitir el inicio de sesión principal con uno o más tipos sin contraseña; luego, configure el cliente de aplicación para permitir el flujo `USER_AUTH`. En la consola de Amazon Cognito, vaya al menú **Inicio de sesión** en **Autenticación**, en la configuración de su grupo de usuarios. Edite las **Opciones para el inicio de sesión basado en opciones** y añada **Clave de acceso** a la lista de **opciones disponibles**.

Vaya al menú **Métodos de autenticación** y edite la **clave de acceso**.
+ La **verificación de usuario** es la configuración que determina si su grupo de usuarios requiere dispositivos con clave de acceso que comprueben además si el usuario actual está autorizado a utilizar una clave de acceso. Para animar a los usuarios a configurar un dispositivo con la verificación de usuario, pero sin exigirla, seleccione **Preferente**. Para admitir únicamente dispositivos con verificación de usuario, seleccione **Obligatorio**. Para obtener más información, consulte la sección [User verification](https://www.w3.org/TR/webauthn-2/#user-verification) en w3.org.
+ El **dominio para el ID de parte de confianza** es el identificador que la aplicación pasará en las solicitudes de registro de clave de acceso de los usuarios. Define el destino de la relación de confianza con el emisor de las claves de acceso de los usuarios. El identificador del actor de confianza puede ser el dominio de su grupo de usuarios si   
**dominio de Cognito**  
El [dominio de prefijo](cognito-user-pools-assign-domain-prefix.md) de Amazon Cognito de su grupo de usuarios.  
**Dominio personalizado**  
El [dominio personalizado](cognito-user-pools-add-custom-domain.md) de su grupo de usuarios.  
**Dominio de terceros**  
El dominio de las aplicaciones que no utilizan las páginas de inicio de sesión administrado para grupos de usuarios. Esta configuración suele estar asociada a grupos de usuarios que no tienen un [dominio](cognito-user-pools-assign-domain.md) y se autentican con un AWS SDK y la API de grupos de usuarios en el backend.

Vaya al menú **Clientes de aplicación** y elija un cliente de aplicación o cree uno nuevo. Seleccione **Editar** y, en **Flujos de autenticación**, elija **Seleccionar un tipo de autenticación en el inicio de sesión: ALLOW\$1USER\$1AUTH**.

**API/SDK**  
En la API de grupos de usuarios, configúrela `SignInPolicy` con las opciones de clave de paso adecuadas en una solicitud [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)o [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html). La opción `WEB_AUTHN` para la autenticación con clave de acceso debe ir acompañada de al menos otra opción. El registro de la clave de acceso requiere una sesión de autenticación existente.

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

Configure su preferencia de verificación de usuario y su ID de RP en el `WebAuthnConfiguration` parámetro de una solicitud. [SetUserPoolMfaConfig](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserPoolMfaConfig.html#CognitoUserPools-SetUserPoolMfaConfig-request-WebAuthnConfiguration) El `RelyingPartyId`, el objetivo previsto de los resultados de la autenticación con clave de acceso, puede ser el prefijo de su grupo de usuarios, un dominio personalizado o un dominio que usted elija.

```
"WebAuthnConfiguration": { 
   "RelyingPartyId": "example.auth.us-east-1.amazoncognito.com",
   "UserVerification": "preferred",
   "FactorConfiguration": "SINGLE_FACTOR"
}
```

Configura el cliente de tu aplicación `ExplicitAuthFlows` con la opción requerida en una solicitud [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html)o [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html).

```
"ExplicitAuthFlows": [ 
   "ALLOW_USER_AUTH"
]
```

------
#### [ Register a passkey (managed login) ]

El inicio de sesión administrado gestiona el registro de las claves de acceso por parte de los usuarios. Cuando la autenticación con clave de acceso está activa en su grupo de usuarios, Amazon Cognito les pide a los usuarios que configuren una clave de acceso al registrar una nueva cuenta de usuario.

Amazon Cognito no solicita a los usuarios que configuren una clave de acceso si ya se han registrado y no han configurado una o si usted creó su cuenta como administrador. Los usuarios de este estado deben iniciar sesión con otro factor, como una contraseña o una OTP sin contraseña, antes de poder registrar una clave de acceso.

**Cómo registrar una clave de acceso**

1. Dirija al usuario a su [página de inicio de sesión](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. Procese el resultado de la autenticación del usuario. En este ejemplo, Amazon Cognito los redirige a `www.example.com` con un código de autorización que la aplicación intercambia por tokens.

1. Dirija al usuario a su página de registro y clave de acceso. El usuario dispondrá de una cookie del navegador que mantendrá su sesión de inicio de sesión. La URL de la clave de acceso toma los parámetros `client_id` y `redirect_uri`. Amazon Cognito solo permite el acceso a esta página a los usuarios autenticados. Inicie sesión en su usuario con una contraseña, una OTP con correo electrónico o una OTP con SMS; luego, invoque una URL que coincida con el siguiente patrón.

   También puede añadir otros parámetros [Autorizar punto de conexión](authorization-endpoint.md) a esta solicitud, como `response_type` y `scope`.

   ```
   https://auth.example.com/passkeys/add?client_id=1example23456789&redirect_uri=https%3A%2F%2Fwww.example.com
   ```

------
#### [ Register a passkey (SDK) ]

Las credenciales de la clave de paso se registran con los metadatos de un [PublicKeyCreationOptions](https://www.w3.org/TR/webauthn-3/#dictdef-publickeycredentialcreationoptions)objeto. Puede generar este objeto con las credenciales de un usuario que haya iniciado sesión y presentarlas en una solicitud de API al emisor de la clave de acceso. El emisor devolverá un objeto [RegistrationResponseJSON](https://www.w3.org/TR/webauthn-3/#dictdef-registrationresponsejson) que confirma el registro de la clave de paso.

Para iniciar el proceso de registro de la clave de acceso, inicie sesión con un usuario que tenga una opción de inicio de sesión existente. Autoriza la solicitud [de [StartWebAuthnRegistration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_StartWebAuthnRegistration.html)API autorizada por el token](authentication-flows-public-server-side.md#user-pool-apis-auth-unauth-token-auth) con el token de acceso del usuario actual. A continuación, se muestra el cuerpo de una solicitud `GetWebAuthnRegistrationOptions` de ejemplo.

```
{
   "AccessToken": "eyJra456defEXAMPLE"
}
```

La respuesta de su grupo de usuarios contiene el objeto `PublicKeyCreationOptions`. Presente este objeto en una solicitud de API al emisor del usuario. Proporciona información como la clave pública y el identificador del actor de confianza. El emisor responderá con un objeto `RegistrationResponseJSON`.

Presente la respuesta de registro en una solicitud de [CompleteWebAuthnRegistration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CompleteWebAuthnRegistration.html)API, nuevamente autorizada con el token de acceso del usuario. Cuando el grupo de usuarios responde con una respuesta HTTP 200 con el cuerpo vacío, se registra la clave de acceso del usuario.

------
#### [ Sign in with a passkey ]

El inicio de sesión sin contraseña no tiene ninguna `AuthFlow` que puedas especificar en y. [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) En su lugar, debe declarar un `AuthFlow` de `USER_AUTH` y solicitar una opción de inicio de sesión o elegir la opción sin contraseña en la respuesta de su grupo de usuarios. Para que un usuario inicie sesión en una aplicación, configure el cuerpo de su solicitud `InitiateAuth` o `AdminInitiateAuth` de la siguiente manera. Este conjunto de parámetros es el mínimo necesario para iniciar sesión. Hay parámetros adicionales disponibles.

En este ejemplo, sabemos que el usuario quiere iniciar sesión con una clave de acceso y añadimos un parámetro `PREFERRED_CHALLENGE`.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser",
      "PREFERRED_CHALLENGE" : "WEB_AUTHN"
   },
   "ClientId": "1example23456789"
}
```

Amazon Cognito responde con un desafío `WEB_AUTHN`. Su aplicación debe responder a este desafío. Inicie una solicitud de inicio de sesión con el proveedor de la clave de acceso del usuario. [Devolverá un AuthenticationResponse objeto JSON.](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 después del inicio de sesión
<a name="amazon-cognito-user-pools-authentication-flow-methods-mfa"></a>

Puede configurar los usuarios que completen el inicio de sesión con un flujo de nombre de usuario y contraseña para que se les solicite una verificación adicional con una contraseña de un solo uso desde un mensaje de correo electrónico, un mensaje SMS o una aplicación generadora de códigos. La MFA es diferente del inicio de sesión sin contraseña con contraseñas de un solo uso. Sin embargo, las claves de paso con verificación de usuario pueden cumplir los requisitos de MFA cuando se `FactorConfiguration` configura `MULTI_FACTOR_WITH_USER_VERIFICATION` como en su grupo de usuarios. `WebAuthnConfiguration` Para los flujos basados en contraseñas, la MFA en los grupos de usuarios es un modelo de desafío-respuesta en el que el usuario primero demuestra que conoce la contraseña y, a continuación, demuestra que tiene acceso al dispositivo de segundo factor registrado.

**Recursos de implementación**
+ [Adición de MFA a un grupo de usuarios.](user-pool-settings-mfa.md)

## Tokens de actualización
<a name="amazon-cognito-user-pools-authentication-flow-methods-refresh"></a>

Si quiere mantener a los usuarios conectados sin tener que volver a introducir sus credenciales, los *tokens de actualización* son la herramienta de la que dispone su aplicación para conservar la sesión de un usuario. Las aplicaciones pueden presentar tokens de actualización a su grupo de usuarios e intercambiarlos por nuevos tokens de ID y acceso. Con la actualización de los tokens, puede asegurarse de que un usuario que haya iniciado sesión siga activo, obtener información de atributos actualizada y actualizar los derechos de control de acceso sin la intervención del usuario.

**Recursos de implementación**
+ [Tokens de actualización](amazon-cognito-user-pools-using-the-refresh-token.md)

## Autenticación personalizada
<a name="amazon-cognito-user-pools-authentication-flow-methods-custom"></a>

Es posible que desee configurar un método de autenticación para sus usuarios que no aparezca en esta lista. Puede hacerlo con una *autenticación personalizada* con activadores Lambda. En una secuencia de funciones de Lambda, Amazon Cognito genera un desafío, formula una pregunta que los usuarios deban responder, comprueba la precisión de la respuesta y, a continuación, determina si debe emitirse otro desafío. Las preguntas y respuestas pueden incluir preguntas de seguridad, solicitudes a un servicio de CAPTCHA, solicitudes a una API de servicio de MFA externa o todas ellas en secuencia.

**Recursos de implementación**
+ [Desencadenadores de Lambda de desafío de autenticación personalizado](user-pool-lambda-challenge.md)

### Flujo de autenticación personalizado
<a name="amazon-cognito-user-pools-custom-authentication-flow"></a>

Los grupos de usuarios de Amazon Cognito también permiten usar flujos de autenticación personalizados, que pueden servir de ayuda para crear un modelo de autenticación basado en desafío/respuesta mediante desencadenadores de AWS Lambda .

El flujo de autenticación personalizado hace posible los ciclos de desafíos y respuestas personalizados para satisfacer diferentes requisitos. El flujo comienza con una llamada a la operación de la API `InitiateAuth`, que indica el tipo de autenticación que debe utilizarse y proporciona todos los parámetros de autenticación iniciales. Amazon Cognito responde a la llamada `InitiateAuth` con uno de los siguientes tipos de información: 
+ Un desafío para el usuario junto con una sesión y parámetros.
+ Un error si el usuario no se autentica correctamente.
+ Tokens de ID, acceso y actualización, si los parámetros proporcionados en la llamada `InitiateAuth` son suficientes para que el usuario inicie sesión. (Por lo general, el usuario o la aplicación deben responder primero a un desafío, pero el código personalizado debe determinarlo).

 Si Amazon Cognito responde a la llamada `InitiateAuth` con un desafío, la aplicación reunirá más información y llamará a la operación `RespondToAuthChallenge`, lo que proporciona las respuestas al desafío y vuelve a pasar la sesión. Amazon Cognito responde a la llamada `RespondToAuthChallenge` de forma similar a la llamada `InitiateAuth`. Si el usuario ha iniciado sesión, Amazon Cognito proporciona tokens o si el usuario no ha iniciado sesión, Amazon Cognito proporciona otro desafío o un error. Si devuelve otro desafío, la secuencia se repite y la aplicación llama a `RespondToAuthChallenge` hasta que el usuario inicie sesión correctamente o se devuelva un error. Para obtener más información sobre las operaciones de la API `InitiateAuth` and `RespondToAuthChallenge`, consulte la [documentación de la API](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html). 

### Flujo de autenticación personalizado y desafíos
<a name="Custom-authentication-flow-and-challenges"></a>

Una aplicación puede iniciar un flujo de autenticación personalizado llamando a `InitiateAuth` con `CUSTOM_AUTH` como `Authflow`. En el caso de un flujo de autenticación personalizado, tres desencadenadores de Lambda controlan los desafíos y la verificación de las respuestas.
+ El desencadenador de Lambda `DefineAuthChallenge` toma como entrada una matriz de sesiones de desafíos y respuestas anteriores. Luego genera los siguientes nombres de desafíos y valores booleanos que indican si el usuario está autenticado y se le deben otorgar tokens. Este desencadenador de Lambda es una máquina de estado que controla la ruta que sigue el usuario a través de los desafíos.
+ El desencadenador de Lambda `CreateAuthChallenge` toma el nombre de un desafío como entrada y genera el desafío y los parámetros para evaluar la respuesta. Cuando `DefineAuthChallenge` devuelve `CUSTOM_CHALLENGE` como el siguiente desafío, el flujo de autenticación llama a `CreateAuthChallenge`. El desencadenador de Lambda `CreateAuthChallenge` supera el siguiente tipo de desafío del parámetro de metadatos del desafío.
+ La función de Lambda `VerifyAuthChallengeResponse` evalúa la respuesta y devuelve un valor booleano para indicar si la respuesta ha sido válida.

Un flujo de autenticación personalizado también puede utilizar una combinación de desafíos integrados, como la verificación de contraseñas SRP y MFA mediante SMS. Puede usar desafíos personalizados como CAPTCHA o preguntas secretas.

### Usar la verificación de contraseña de SRP en el flujo de autenticación personalizado
<a name="Using-SRP-password-verification-in-custom-authentication-flow"></a>

Si desea incluir SRP en un flujo de autenticación personalizado, debe comenzar con SRP.
+ Para iniciar la verificación por contraseña de SRP en un flujo personalizado, la aplicación llama a `InitiateAuth` con `CUSTOM_AUTH` como `Authflow`. En la asignación de `AuthParameters`, la solicitud de la aplicación incluye `SRP_A:` (el valor de SRP A) y `CHALLENGE_NAME: SRP_A`.
+ El flujo `CUSTOM_AUTH` invoca el desencadenador de Lambda `DefineAuthChallenge` con una sesión inicial de `challengeName: SRP_A` y `challengeResult: true`. La función de Lambda responder con `challengeName: PASSWORD_VERIFIER`, `issueTokens: false` y `failAuthentication: false`.
+  A continuación, la aplicación debe llamar a `RespondToAuthChallenge` con `challengeName: PASSWORD_VERIFIER` y los demás parámetros necesarios para SRP en el mapa `challengeResponses`. 
+ Si Amazon Cognito verifica la contraseña, `RespondToAuthChallenge` llama al desencadenador de Lambda `DefineAuthChallenge` con una segunda sesión de `challengeName: PASSWORD_VERIFIER` y `challengeResult: true`. En ese momento, el desencadenador de Lambda `DefineAuthChallenge` responde con `challengeName: CUSTOM_CHALLENGE` para iniciar el desafío personalizado.
+ Si MFA está habilitado para un usuario, una vez que Amazon Cognito verifique la contraseña, se le pide al usuario que configure o inicie sesión con MFA.

**nota**  
La página web de inicio de sesión alojada de Amazon Cognito no puede activar [Desencadenadores de Lambda de desafío de autenticación personalizado](user-pool-lambda-challenge.md).

Para obtener más información sobre los desencadenadores de Lambda, incluido el código de muestra, consulte [Personalización de flujos de trabajo de grupos de usuarios con desencadenadores de Lambda](cognito-user-pools-working-with-lambda-triggers.md).

## Flujo de autenticación de migración de usuarios
<a name="amazon-cognito-user-pools-user-migration-authentication-flow"></a>

Un desencadenador de Lambda para la migración de usuarios ayuda a migrar usuarios desde un sistema de administración de usuarios heredado a un grupo de usuarios. Si elige el flujo de autenticación `USER_PASSWORD_AUTH`, no es necesario que los usuarios restablezcan sus contraseñas durante la migración de usuarios. Durante la autenticación, este flujo envía las contraseñas de los usuarios al servicio a través de una conexión SSL cifrada.

Cuando haya migrado todos los usuarios, cambie los flujos al flujo SRP más seguro. El flujo SRP no envía ninguna contraseña a través de la red.

Para obtener más información sobre los desencadenadores de Lambda, consulte [Personalización de flujos de trabajo de grupos de usuarios con desencadenadores de Lambda](cognito-user-pools-working-with-lambda-triggers.md).

Para obtener más información acerca de la migración de usuarios con un desencadenador de Lambda, consulte [Importación de usuarios con un desencadenador de Lambda para la migración de usuarios](cognito-user-pools-import-using-lambda.md).

# Modelos de autorización para la autenticación de API y SDK
<a name="authentication-flows-public-server-side"></a>

Cuando comience a desarrollar su aplicación con la autenticación de grupos de usuarios, debe decidir el modelo de autorización de la API que mejor se adapte a su tipo de aplicación. Un modelo de autorización es un sistema que proporciona autorización para realizar solicitudes con los componentes de autenticación de las integraciones de la API y el SDK de los grupos de usuarios de Amazon Cognito. Amazon Cognito tiene tres modelos de autorización: autorizado por IAM, público y autorizado por token.

En el caso de las solicitudes autorizadas por IAM, la autorización proviene de la firma de un conjunto de credenciales de AWS IAM en el encabezado de `Authorization` de la solicitud. En el caso de las aplicaciones en el servidor, este método protege las operaciones de autenticación con la autorización de IAM. En el caso de las solicitudes de autenticación públicas (no autenticadas), no se requiere autorización. Esto es adecuado para las aplicaciones en el cliente distribuidas a los usuarios. En el caso de las operaciones autorizadas por un token, que normalmente se implementan en combinación con operaciones públicas, la autorización proviene de un token de sesión o un token de acceso incluido en el encabezado de `Authorization` de la solicitud. La autenticación de Amazon Cognito normalmente requiere que implemente dos o más operaciones de API en orden; las operaciones de API que utilice dependen de las características de la aplicación. Los clientes públicos, en los que la aplicación se distribuye a los usuarios, utilizan operaciones públicas, en las que las solicitudes de inicio de sesión no requieren autorización. Las operaciones autorizadas con un token continúan la sesión de los usuarios en las aplicaciones públicas. Los clientes en el servidor, donde la lógica de la aplicación está alojada en un sistema remoto, protegen las operaciones de autenticación con la autorización de IAM para las solicitudes de inicio de sesión. Los siguientes pares de operaciones de la API y sus correspondientes métodos del SDK se corresponden con los modelos de autorización disponibles.

Cada operación de autenticación pública tiene algún tipo de equivalente en el servidor, por ejemplo, y. [UpdateUserAttributes[AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserAttributes.html) Si bien las operaciones en el cliente son iniciadas por el usuario y requieren confirmación, las operaciones en el servidor dan por sentado que el cambio lo ha realizado un administrador del grupo de usuarios, así que los cambios se aplican de forma inmediata. En este ejemplo, Amazon Cognito envía un mensaje con un código de confirmación al usuario y el token de acceso del usuario autoriza una [VerifyUserAttribute](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifyUserAttribute.html)solicitud que envía el código. La aplicación en el servidor puede establecer inmediatamente el valor de cualquier atributo, aunque hay que tener en cuenta [algunas consideraciones especiales](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html#CognitoUserPools-AdminUpdateUserAttributes-request-UserAttributes) a la hora de cambiar el valor de las direcciones de correo electrónico y los números de teléfono cuando se utilizan para iniciar sesión.

Para comparar la autenticación de la API y ver una lista completa de las operaciones de la API y sus modelos de autorización, consulte [Descripción de la autenticación mediante API, OIDC y páginas de inicio de sesión administrado](#user-pools-API-operations).

------
#### [ Client-side (public) authentication ]

A continuación se muestra una secuencia típica de solicitudes en una aplicación en el cliente.

1. La [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)operación pública envía las credenciales principales, como un nombre de usuario y una contraseña.

1. La [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)operación autorizada por el token envía un token de *sesión* a partir de la `InitiateAuth` respuesta y la respuesta a un desafío, por ejemplo, MFA. La autorización del token de sesión indica las solicitudes que forman parte de los ciclos de autenticación. not-yet-complete

1. La [ConfirmDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmDevice.html)operación autorizada con el token envía un token de *acceso* y realiza la operación de escritura consistente en añadir un dispositivo recordado al perfil del usuario. La autorización del token de acceso indica las solicitudes que se destinan a operaciones de autoservicio del usuario una vez que este haya completado la autenticación.

Para obtener más información, consulte [Opciones de autenticación en el cliente](#amazon-cognito-user-pools-client-side-authentication-flow) y [Descripción de la autenticación mediante API, OIDC y páginas de inicio de sesión administrado](#user-pools-API-operations).

------
#### [ Server-side authentication ]

A continuación, puede ver una secuencia típica de solicitudes de una operación en el servidor. Cada solicitud tiene un encabezado de autorización [AWS Signature Version 4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) firmado con las credenciales de la máquina de IAM emitidas hacia el servidor de aplicaciones.

1. La [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)operación envía las credenciales principales, como un nombre de usuario y una contraseña.

1. [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)la operación envía la respuesta a un desafío, por ejemplo, MFA.

1. La [AdminUpdateDeviceStatus](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateDeviceStatus.html)operación establece la clave del dispositivo a partir de la `AdminInitiateAuth` [respuesta](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#API_AdminInitiateAuth_ResponseSyntax) tal como se recuerda.

Para obtener más información, consulte [Opciones de autenticación en el servidor](#amazon-cognito-user-pools-server-side-authentication-flow) y [Descripción de la autenticación mediante API, OIDC y páginas de inicio de sesión administrado](#user-pools-API-operations).

------

Un usuario se autentica respondiendo a desafíos sucesivos hasta que se produce un error de autenticación o Amazon Cognito emite tokens para el usuario. Puede repetir estos pasos con Amazon Cognito, en un proceso que incluye diferentes desafíos, para admitir cualquier flujo de autenticación personalizado.

**Topics**
+ [Opciones de autenticación en el servidor](#amazon-cognito-user-pools-server-side-authentication-flow)
+ [Opciones de autenticación en el cliente](#amazon-cognito-user-pools-client-side-authentication-flow)
+ [Descripción de la autenticación mediante API, OIDC y páginas de inicio de sesión administrado](#user-pools-API-operations)
+ [Lista de operaciones de API agrupadas por modelo de autorización](#user-pool-apis-auth-unauth)

## Opciones de autenticación en el servidor
<a name="amazon-cognito-user-pools-server-side-authentication-flow"></a>

Las aplicaciones web y otras aplicaciones *en el servidor* implementan la autenticación en un servidor remoto que un cliente carga en una aplicación de pantalla remota, como un navegador o una sesión SSH. Las aplicaciones en el servidor suelen tener las siguientes características.
+ Están integradas en una aplicación instalada en un servidor en lenguajes como Java, Ruby o Node.js.
+ Se conectan a [clientes de aplicación](user-pool-settings-client-apps.md) de grupos de usuarios que pueden tener un secreto de cliente, denominados *clientes confidenciales*.
+ Tienen acceso a AWS las credenciales.
+ Para la autenticación, invocan el [inicio de sesión administrado](cognito-user-pools-managed-login.md) o utilizan operaciones autorizadas por IAM en la API de grupos de usuarios con un AWS SDK.
+ Atienden a clientes internos y pueden atender a clientes públicos.

Las operaciones en el servidor con la API de grupos de usuarios pueden utilizar contraseñas, contraseñas de un solo uso o claves de acceso como factor de inicio de sesión principal. En el caso de las aplicaciones del lado del servidor, la autenticación de grupos de usuarios es similar a la de las aplicaciones del lado del cliente, excepto en el siguiente caso:
+ La aplicación del lado del servidor realiza una solicitud a la [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)API. Esta operación requiere AWS credenciales con permisos que incluyen `cognito-idp:AdminInitiateAuth` y. `cognito-idp:AdminRespondToAuthChallenge` La operación devuelve el resultado de la autenticación o el desafío requeridos.
+ Cuando la aplicación recibe una impugnación, realiza una solicitud a la [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)API. La operación de la API `AdminRespondToAuthChallenge` también requiere credenciales de AWS .

Para obtener más información sobre cómo firmar las solicitudes de la API de Amazon Cognito con AWS credenciales, consulte el [proceso de firma de la versión 4](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) de Signature en la Referencia *AWS general*.

En la respuesta `AdminInitiateAuth` de `ChallengeParameters`, el atributo `USER_ID_FOR_SRP`, si existe, contiene el verdadero nombre de usuario y no el alias del usuario (como la dirección de correo electrónico o un número de teléfono). En la llamada a `AdminRespondToAuthChallenge`, en `ChallengeResponses`, debe pasar este nombre de usuario en el parámetro `USERNAME`. 

**nota**  
Dado que las implementaciones de administrador de backend usan el flujo de autenticación de administrador, el flujo no admite dispositivos recordados. Si el seguimiento de dispositivos está activado, la autenticación de administrador se realiza correctamente, pero las llamadas de actualización del token de acceso fallan.

## Opciones de autenticación en el cliente
<a name="amazon-cognito-user-pools-client-side-authentication-flow"></a>

Las aplicaciones móviles y otros tipos de aplicaciones *en el cliente* se instalan en los dispositivos de los usuarios y ejecutan la lógica de autenticación y la interfaz de usuario de forma local. Por lo general, tienen las siguientes características.
+ Están integradas en lenguajes como React native, Flutter y Swift, y se implementan en los dispositivos de los usuarios.
+ Se conectan a [clientes de aplicación](user-pool-settings-client-apps.md) de grupos de usuarios que no tienen un secreto de cliente, denominados *clientes públicos*.
+ No tienen acceso a AWS las credenciales que autorizarían las solicitudes de API autorizadas por IAM.
+ Utilizan el inicio de [sesión gestionado](cognito-user-pools-managed-login.md) para la autenticación o utilizan operaciones públicas y autorizadas por token en la API de grupos de usuarios con un SDK. AWS 
+ Atienden a clientes públicos y permiten a cualquiera registrarse e iniciar sesión.

Las operaciones en el cliente con la API de grupos de usuarios pueden utilizar contraseñas, contraseñas de un solo uso o claves de acceso como factor de inicio de sesión principal. El siguiente proceso funciona para las aplicaciones del lado del cliente del usuario que cree con o con. [AWS Amplify[AWS SDKs](https://aws.amazon.com/developer/tools/)](https://docs.amplify.aws/javascript/start/getting-started/)

1. El usuario introduce su nombre de usuario y contraseña en la aplicación.

1. La aplicación llama a la operación `InitiateAuth` con el nombre de usuario y los detalles de contraseña remota segura (SRP) del usuario.

   Esta operación de la API devuelve los parámetros de autenticación.
**nota**  
La aplicación genera detalles de SRP con las funciones de SRP de Amazon Cognito integradas en. AWS SDKs

1. La aplicación llama a la operación `RespondToAuthChallenge`. Si la llamada se realiza correctamente, Amazon Cognito devuelve los tokens del usuario y el flujo de autenticación finaliza.

   Si Amazon Cognito necesita otro desafío, la llamada a `RespondToAuthChallenge` no devuelve ningún token. En su lugar, la llamada devuelve una sesión.

1. Si `RespondToAuthChallenge` devuelve una sesión, la aplicación llama de nuevo a `RespondToAuthChallenge`, esta vez con la sesión y la respuesta al desafío (por ejemplo, código de MFA).

## Descripción de la autenticación mediante API, OIDC y páginas de inicio de sesión administrado
<a name="user-pools-API-operations"></a>

Los grupos de usuarios de Amazon Cognito son una combinación de varias tecnologías de autenticación. Dependen de proveedores de identidad externos (). IdPs Son IdPs para aplicaciones que implementan la autenticación con OpenID Connect (OIDC). SDKs Proporcionan autenticación como emisores de tokens web JSON (JWTs) de forma similar a la autenticación OIDC, pero mediante métodos de API que forman parte de ella. AWS SDKs También pueden ser puntos de entrada seguros a sus aplicaciones.

Para el registro, el inicio de sesión y la administración de usuarios de su grupo de usuarios, tiene dos opciones. 

1. Sus *páginas de inicio de sesión administrado* y la *interfaz de usuario alojada* clásica incluyen los [puntos de conexión interactivos para el usuario de inicio de sesión administrado](managed-login-endpoints.md) y los [puntos de conexión de federación](federation-endpoints.md), que gestionan los IdP y los roles de los actores de confianza. Constituyen un paquete de páginas web públicas que Amazon Cognito activa cuando [elija un dominio](cognito-user-pools-assign-domain.md) para el grupo de usuarios. Para comenzar rápidamente a utilizar las características de autenticación y autorización de los grupos de usuarios de Amazon Cognito, incluidas las páginas de registro, inicio de sesión, administración de contraseñas y autenticación multifactor (MFA), utilice la interfaz de usuario integrada del inicio de sesión administrado.

   Los otros puntos finales del grupo de usuarios facilitan la autenticación con proveedores de identidad externos (). IdPs Los servicios que se prestan incluyen los siguientes.

   1. Puntos de enlace de devolución de llamadas del proveedor de servicios para las reclamaciones autenticadas de sus, como y. IdPs `saml2/idpresponse` `oauth2/idpresponse` Cuando Amazon Cognito es un proveedor de servicios (SP) intermedio entre la aplicación y el IdP, los puntos de conexión de devolución de llamada representan el servicio.

   1. Puntos de conexión que proporcionan información sobre el entorno, como `oauth2/userInfo` y `/.well-known/jwks.json`. Tu aplicación utiliza estos puntos de conexión cuando verifica los tokens o recupera los datos del perfil de usuario con las bibliotecas para desarrolladores de OIDC o 2.0. OAuth 

1. La [API de grupos de usuarios de Amazon Cognito](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html) es un conjunto de herramientas para la aplicación web o móvil que se emplea para autenticar a usuarios tras recopilar información de inicio de sesión en su propio frontend personalizado. La autenticación de la API de grupos de usuarios produce los siguientes JSON Web Tokens.

   1. Un token de identidad con afirmaciones de atributos verificables por parte del usuario.

   1. Un token de acceso que autoriza al usuario a crear solicitudes de API autorizadas por tokens para un [punto de conexión de servicio de AWS](https://docs.aws.amazon.com/general/latest/gr/cognito_identity.html).
**nota**  
De forma predeterminada, los tokens de acceso de la autenticación de la API de los grupos de usuarios solo contienen el ámbito de `aws.cognito.signin.user.admin`. Para generar un token de acceso con ámbitos adicionales para, por ejemplo, autorizar una solicitud a una API de terceros, solicite ámbitos durante la autenticación a través de los puntos de conexión del grupo de usuarios o agregue ámbitos personalizados en una [Desencadenador de Lambda anterior a la generación del token](user-pool-lambda-pre-token-generation.md). La personalización de los tokens de acceso añade costes a tu factura. AWS 

   1. Un token de actualización que autoriza las solicitudes de nuevos identificadores y tokens de acceso, además de actualizar la identidad del usuario y las propiedades de control de acceso.

Puede vincular un usuario federado, que normalmente iniciaría sesión a través de los puntos de conexión de los grupos de usuarios, con un usuario cuyo perfil sea *local* del grupo de usuarios. Un usuario local existe exclusivamente en el directorio del grupo de usuarios sin federación a través de un IdP externo. Si vinculas su identidad federada a un usuario local en una solicitud de [AdminLinkProviderForUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminLinkProviderForUser.html)API, este podrá iniciar sesión con la API de grupos de usuarios. Para obtener más información, consulte [Vinculación de usuarios federados a un perfil de usuario existente](cognito-user-pools-identity-federation-consolidate-users.md).

La API de grupos de usuarios de Amazon Cognito tiene una doble finalidad.

1. Crea y configura sus recursos de grupos de usuarios de Amazon Cognito. Por ejemplo, puedes crear grupos de usuarios, añadir AWS Lambda activadores y configurar el dominio del grupo de usuarios que aloja tus páginas de inicio de sesión gestionadas.

1. Realiza el registro, el inicio de sesión y otras operaciones de usuario para los usuarios locales y enlazados.

**Escenario de ejemplo con la API de grupos de usuarios de Amazon Cognito**

1. El usuario selecciona el botón "Create an account" (Crear una cuenta) que ha creado en su aplicación. Ingresa una dirección de correo electrónico y una contraseña.

1. La aplicación envía una solicitud de [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)API y crea un nuevo usuario en el grupo de usuarios.

1. Su aplicación solicita a su usuario un código de confirmación por correo electrónico. Su usuario ingresa el código que ha recibido en un mensaje de correo electrónico.

1. Tu aplicación envía una solicitud de [ConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html)API con el código de confirmación del usuario.

1. La aplicación solicita al usuario el nombre de usuario y la contraseña y este ingresa las información.

1. Tu aplicación envía una solicitud de [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)API y almacena un token de ID, un token de acceso y un token de actualización. Su aplicación llama a las bibliotecas OIDC para administrar los tokens de usuarios y mantener una sesión persistente para ese usuario.

En la API de grupos de usuarios de Amazon Cognito, no se puede registrar a los usuarios que se federan a través de un IdP. Debe autenticar a estos usuarios mediante los puntos de conexión del grupo de usuarios. Para obtener más información sobre los puntos de conexión del grupo de usuarios que incluyen el inicio de sesión administrado, consulte [Referencia de los puntos de conexión de grupos de usuarios y del inicio de sesión administrado](cognito-userpools-server-contract-reference.md).

Sus usuarios federados pueden iniciar sesión en el inicio de sesión administrado y seleccionar su IdP, o bien puede omitir el inicio de sesión administrado y enviar a sus usuarios directamente a su IdP para que inicien sesión. Cuando su solicitud de API al [Autorizar punto de conexión](authorization-endpoint.md) incluye un parámetro de IdP, Amazon Cognito redirige silenciosamente a su usuario a la página de inicio de sesión del IdP.

**Ejemplo de escenario con páginas de inicio de sesión administrado**

1. El usuario selecciona el botón "Create an account" (Crear una cuenta) que ha creado en su aplicación.

1. El inicio de sesión administrado presenta a su usuario una lista de los proveedores de identidades sociales en los que ha registrado credenciales de desarrollador. El usuario elige Apple.

1. Su aplicación inicia una solicitud al [Autorizar punto de conexión](authorization-endpoint.md) con nombre de proveedor `SignInWithApple`.

1. El navegador de su usuario abre la página de autenticación de Apple. Su usuario inicia sesión y decide autorizar a Amazon Cognito a leer la información de su perfil.

1. Amazon Cognito confirma el token de acceso de Apple y consulta el perfil de Apple de su usuario.

1. El usuario presenta un código de autorización de Amazon Cognito en la aplicación.

1. La biblioteca OIDC de su aplicación intercambia el código de autorización con el [Punto de conexión de token](token-endpoint.md) y almacena un token de identificación, un token de acceso y un token de actualización emitidos por el grupo de usuarios. Su aplicación usa las bibliotecas OIDC para administrar los tokens de usuarios y mantener una sesión persistente para ese usuario.

La API de grupos de usuarios y las páginas de inicio de sesión administrado admiten una variedad de escenarios, que se describen a lo largo de esta guía. En las secciones siguientes se examina cómo la API de grupos de usuarios se divide a su vez en clases que respaldan los requisitos de registro, inicio de sesión y administración de recursos.

## Lista de operaciones de API agrupadas por modelo de autorización
<a name="user-pool-apis-auth-unauth"></a>

La API de grupos de usuarios de Amazon Cognito, que es a la vez una interfaz de administración de recursos y una interfaz de autenticación y autorización orientada al usuario, combina en sus operaciones los modelos de autorización que se indican a continuación. Según la operación de la API, es posible que tenga que proporcionar autorización con credenciales de IAM, un token de acceso, un token de sesión, un secreto de cliente o una combinación de estos. Para muchas operaciones de autenticación y autorización de usuarios, puede elegir entre versiones autenticadas y no autenticadas de la solicitud. Las operaciones no autenticadas son la práctica recomendada en materia de seguridad para las aplicaciones que distribuye a sus usuarios, como las aplicaciones móviles; no necesita incluir ningún secreto en el código.

Solo puede asignar permisos en las políticas de IAM para [Operaciones de administración autorizadas por IAM](#user-pool-apis-auth-unauth-sigv4-management) y [Operaciones de usuario autorizadas por IAM](#user-pool-apis-auth-unauth-sigv4-user).

### Operaciones de administración autorizadas por IAM
<a name="user-pool-apis-auth-unauth-sigv4-management"></a>

Las operaciones de administración autorizadas por IAM le permiten modificar y visualizar la configuración de sus grupos de usuarios y clientes de aplicación, como lo haría en la Consola de administración de AWS. 

Por ejemplo, para modificar su grupo de usuarios en una solicitud de [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)API, debe presentar AWS las credenciales y los permisos de IAM para actualizar el recurso.

Para autorizar estas solicitudes en el AWS Command Line Interface (AWS CLI) o en un AWS SDK, configura tu entorno con variables de entorno o con una configuración de cliente que añada credenciales de IAM a tu solicitud. Para obtener más información, consulte [Acceder AWS con sus AWS credenciales](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys) en. *Referencia general de AWS* También puede enviar solicitudes directamente a los [puntos de conexión del servicio](https://docs.aws.amazon.com/general/latest/gr/cognito_identity.html) para la API de los grupos de usuarios de Amazon Cognito. Debe autorizar o *firmar* estas solicitudes con las AWS credenciales que inserte en el encabezado de la solicitud. Para obtener más información, consulta [Firmar solicitudes de AWS API](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html).


| Operaciones de administración autorizadas por IAM | 
| --- |
| [AddCustomAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AddCustomAttributes.html) | 
| [CreateGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateGroup.html) | 
| [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html) | 
| [CreateResourceServer](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateResourceServer.html) | 
| [CreateUserImportJob](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserImportJob.html) | 
| [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html) | 
| [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html) | 
| [CreateUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolDomain.html) | 
| [DeleteGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteGroup.html) | 
| [DeleteIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteIdentityProvider.html) | 
| [DeleteResourceServer](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteResourceServer.html) | 
| [DeleteUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUserPool.html) | 
| [DeleteUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUserPoolClient.html) | 
| [DeleteUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUserPoolDomain.html) | 
| [DescribeIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeIdentityProvider.html) | 
| [DescribeResourceServer](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeResourceServer.html) | 
| [DescribeRiskConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeRiskConfiguration.html) | 
| [DescribeUserImportJob](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeUserImportJob.html) | 
| [DescribeUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeUserPool.html) | 
| [DescribeUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeUserPoolClient.html) | 
| [DescribeUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeUserPoolDomain.html) | 
| [Obtenga CSVHeader](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetCSVHeader.html) | 
| [GetGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetGroup.html) | 
| [GetIdentityProviderByIdentifier](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetIdentityProviderByIdentifier.html) | 
| [GetSigningCertificate](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetSigningCertificate.html) | 
| [Consigue UICustomization](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUICustomization.html) | 
| [GetUserPoolMfaConfig](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserPoolMfaConfig.html) | 
| [ListGroups](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListGroups.html) | 
| [ListIdentityProviders](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListIdentityProviders.html) | 
| [ListResourceServers](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListResourceServers.html) | 
| [ListTagsForResource](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListTagsForResource.html) | 
| [ListUserImportJobs](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUserImportJobs.html) | 
| [ListUserPoolClients](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUserPoolClients.html) | 
| [ListUserPools](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUserPools.html) | 
| [ListUsers](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUsers.html) | 
| [ListUsersInGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUsersInGroup.html) | 
| [SetRiskConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetRiskConfiguration.html) | 
| [Set UICustomization](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUICustomization.html) | 
| [SetUserPoolMfaConfig](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserPoolMfaConfig.html) | 
| [StartUserImportJob](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_StartUserImportJob.html) | 
| [StopUserImportJob](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_StopUserImportJob.html) | 
| [TagResource](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_TagResource.html) | 
| [UntagResource](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UntagResource.html) | 
| [UpdateGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateGroup.html) | 
| [UpdateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html) | 
| [UpdateResourceServer](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateResourceServer.html) | 
| [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html) | 
| [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html) | 
| [UpdateUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolDomain.html) | 

### Operaciones de usuario autorizadas por IAM
<a name="user-pool-apis-auth-unauth-sigv4-user"></a>

Las operaciones de usuario autorizadas por IAM permiten el registro, inicio de sesión, administración de credenciales, modificación y visualización de sus usuarios. 

Por ejemplo, puede tener un nivel de aplicación en el servidor que respalde un front-end web. Su aplicación del lado del servidor es un cliente OAuth confidencial en el que puede confiar con acceso privilegiado a sus recursos de Amazon Cognito. Para registrar un usuario en la aplicación, su servidor puede incluir AWS credenciales en una [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html)solicitud de API. Para obtener más información sobre los tipos de OAuth clientes, consulte Tipos de [clientes](https://www.rfc-editor.org/rfc/rfc6749#section-2.1) en *The OAuth 2.0 Authorization Framework*.

Para autorizar estas solicitudes en el SDK AWS CLI o en un AWS SDK, configure el entorno de aplicaciones del lado del servidor con variables de entorno o con una configuración de cliente que añada credenciales de IAM a su solicitud. Para obtener más información, consulte [Acceder AWS con sus AWS credenciales en](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys). *Referencia general de AWS* También puede enviar solicitudes directamente a los [puntos de conexión del servicio](https://docs.aws.amazon.com/general/latest/gr/cognito_identity.html) para la API de los grupos de usuarios de Amazon Cognito. Debe autorizar o *firmar* estas solicitudes con las AWS credenciales que inserte en el encabezado de la solicitud. Para obtener más información, consulta [Firmar solicitudes de AWS API](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html).

Si su cliente de aplicación tiene un secreto de cliente, deberá proporcionar tanto sus credenciales de IAM como, en función de la operación, el parámetro `SecretHash` o el valor `SECRET_HASH` en `AuthParameters`. Para obtener más información, consulte [Cálculo de los valores de hash secretos](signing-up-users-in-your-app.md#cognito-user-pools-computing-secret-hash).


| Operaciones de usuario autorizadas por IAM | 
| --- |
| [AdminAddUserToGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminAddUserToGroup.html) | 
| [AdminConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminConfirmSignUp.html) | 
| [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html) | 
| [AdminDeleteUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminDeleteUser.html) | 
| [AdminDeleteUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminDeleteUserAttributes.html) | 
| [AdminDisableProviderForUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminDisableProviderForUser.html) | 
| [AdminDisableUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminDisableUser.html) | 
| [AdminEnableUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminEnableUser.html) | 
| [AdminForgetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminForgetDevice.html) | 
| [AdminGetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminGetDevice.html) | 
| [AdminGetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminGetUser.html) | 
| [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html) | 
| [AdminLinkProviderForUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminLinkProviderForUser.html) | 
| [AdminListDevices](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminListDevices.html) | 
| [AdminListGroupsForUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminListGroupsForUser.html) | 
| [AdminListUserAuthEvents](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminListUserAuthEvents.html) | 
| [AdminRemoveUserFromGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRemoveUserFromGroup.html) | 
| [AdminResetUserPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminResetUserPassword.html) | 
| [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html) | 
| [AdminSetUserMFAPreference](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserMFAPreference.html) | 
| [AdminSetUserPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserPassword.html) | 
| [AdminSetUserSettings](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserSettings.html) | 
| [AdminUpdateAuthEventFeedback](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateAuthEventFeedback.html) | 
| [AdminUpdateDeviceStatus](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateDeviceStatus.html) | 
| [AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html) | 
| [AdminUserGlobalSignOut](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUserGlobalSignOut.html) | 

### Operaciones de usuario no autenticadas
<a name="user-pool-apis-auth-unauth-unauth"></a>

Operaciones de usuario no autenticadas: registran, inician sesión e inician el restablecimiento de contraseñas para sus usuarios. Utilice operaciones de API no autenticadas, o *públicas*, cuando desee que cualquier usuario de Internet se registre e inicie sesión en su aplicación.

Por ejemplo, para registrar un usuario en tu aplicación, puedes distribuir un cliente OAuth público que no proporcione ningún acceso privilegiado a los secretos. Puedes registrar este usuario con la operación de API no autenticada. [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)

Para enviar estas solicitudes en un cliente público que hayas desarrollado con un AWS SDK, no necesitas configurar ninguna credencial. También puede enviar solicitudes directamente a los [puntos de conexión del servicio](https://docs.aws.amazon.com/general/latest/gr/cognito_identity.html) para la API de grupos de usuarios de Amazon Cognito sin autorización adicional.

Si su cliente de aplicación tiene un secreto de cliente, deberá proporcionar, según la operación, el parámetro `SecretHash` o el valor `SECRET_HASH` en `AuthParameters`. Para obtener más información, consulte [Cálculo de los valores de hash secretos](signing-up-users-in-your-app.md#cognito-user-pools-computing-secret-hash).


| Operaciones de usuario no autenticadas | 
| --- |
| [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html) | 
| [ConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html) | 
| [ResendConfirmationCode](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ResendConfirmationCode.html) | 
| [ForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html) | 
| [ConfirmForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmForgotPassword.html) | 
| [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) | 

### Operaciones de usuario autorizadas por tokens
<a name="user-pool-apis-auth-unauth-token-auth"></a>

Las operaciones de usuario autorizadas por token permiten cerrar la sesión de los usuarios, administrar las credenciales de los usuarios, modificarlos y visualizarlos después de que hayan iniciado sesión o hayan comenzado dicho proceso. Utilice las operaciones de la API autorizadas por token cuando no desee distribuir secretos en la aplicación y desee autorizar las solicitudes con las propias credenciales del usuario. Si el usuario ha completado el inicio de sesión, debe autorizar la solicitud de la API autorizada por token con un token de acceso. Si el usuario se encuentra en medio de un proceso de inicio de sesión, deberá autorizar la solicitud de la API autorizada por token con un token de sesión que Amazon Cognito le haya devuelto en la respuesta a la solicitud anterior.

Por ejemplo, en un cliente público, es posible que desee actualizar el perfil de un usuario de forma que se restrinja el acceso de escritura solo al propio perfil del usuario. Para realizar esta actualización, tu cliente puede incluir el token de acceso del usuario en una solicitud de [UpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserAttributes.html)API.

Para enviar estas solicitudes en un cliente público que hayas desarrollado con un AWS SDK, no necesitas configurar ninguna credencial. Incluya un parámetro `AccessToken` o `Session` en su solicitud. También puede enviar solicitudes directamente a los [puntos de conexión del servicio](https://docs.aws.amazon.com/general/latest/gr/cognito_identity.html) para la API de los grupos de usuarios de Amazon Cognito. Para autorizar una solicitud a un punto de conexión de servicio, incluya el token de acceso o de sesión en el cuerpo POST de la solicitud.

Para firmar una solicitud de la API para una operación autorizada por un token, incluya el token de acceso como un encabezado de `Authorization` en la solicitud, en el formato `Bearer <Base64-encoded access token>`.


| Operaciones de usuario autorizadas por tokens | AccessToken | Session | 
| --- |--- |--- |
| [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html) |  | ✓ | 
| [ChangePassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ChangePassword.html) | ✓ |  | 
| [GetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html) | ✓ |  | 
| [StartWebAuthnRegistration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_StartWebAuthnRegistration.html) | ✓ |  | 
| [CompleteWebAuthnRegistration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CompleteWebAuthnRegistration.html) | ✓ |  | 
| [DeleteWebAuthnCredential](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteWebAuthnCredential.html) | ✓ |  | 
| [ListWebAuthnCredentials](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListWebAuthnCredentials.html) | ✓ |  | 
| [UpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserAttributes.html) | ✓ |  | 
| [DeleteUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUserAttributes.html) | ✓ |  | 
| [DeleteUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUser.html) | ✓ |  | 
| [ConfirmDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmDevice.html) | ✓ |  | 
| [ForgetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgetDevice.html) | ✓ |  | 
| [GetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetDevice.html) | ✓ |  | 
| [ListDevices](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListDevices.html) | ✓ |  | 
| [UpdateDeviceStatus](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateDeviceStatus.html) | ✓ |  | 
| [GetUserAttributeVerificationCode](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserAttributeVerificationCode.html) | ✓ |  | 
| [VerifyUserAttribute](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifyUserAttribute.html) | ✓ |  | 
| [SetUserSettings](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserSettings.html) | ✓ |  | 
| [SetUserMFAPreference](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserMFAPreference.html) | ✓ |  | 
| [GlobalSignOut](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GlobalSignOut.html) | ✓ |  | 
| [UpdateAuthEventFeedback](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateAuthEventFeedback.html) |  | ✓ | 
| [AssociateSoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AssociateSoftwareToken.html) | ✓ | ✓ | 
| [VerifySoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifySoftwareToken.html) | ✓ | ✓ | 
| [RevokeToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RevokeToken.html)¹ |  |  | 
| [GetTokensFromRefreshToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetTokensFromRefreshToken.html)¹ |  |  | 

¹ `RevokeToken` y `GetTokensFromRefreshToken` toman los tokens de actualización como el parámetro de autorización. El token de actualización sirve de token de autorización y de recurso de destino.