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
Amazon Cognito incluye varios métodos para autenticar a los usuarios. Los usuarios pueden iniciar sesión con contraseñas y claves de acceso de WebAuthn. 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; luego, emite tokens web JSON (JWT) 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 usar las páginas de inicio de sesión alojadas del inicio de sesión administrado y para crear su propia lógica y interfaz en un AWS SDK.
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. 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.
Temas
Implementación de flujos de autenticación
Tanto si está implementando un inicio de sesión administrado como un frontend de aplicación personalizada con un AWS SDK para la autenticación, debe configurar el cliente de 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 y en la aplicación.
Factores que debe tener en cuenta sobre la autenticación con grupos de usuarios
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 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 del AWS SDK
-
No puede realizar flujos de autenticación personalizados ni autenticaciones personalizadas con activadores Lambda 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 SDK.
- Inicio de sesión administrado para un proveedor de identidades (IdP) externo
-
No puede iniciar sesión para los usuarios mediante IdP de terceros en la autenticación con AWS SDK. Debe implementar el inicio de sesión administrado o la interfaz de usuario alojada clásica, redirigir a los IdP y, a continuación, procesar el objeto de autenticación resultante con las bibliotecas de OIDC en 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.
- 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 o claves de acceso 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:
-
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. -
Para las operaciones SignUp basadas en SDK, los usuarios no tienen que poner una contraseña cuando se registran. 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.
-
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.
-
La autenticación sin contraseña no invoca el activador Lambda de migración de usuarios.
-
Los usuarios que inicien sesión con un factor inicial sin contraseña no pueden añadir un factor de autenticación multifactor (MFA) a su sesión. Solo los flujos de autenticación basados en contraseña admiten la MFA.
-
- Las URL de los actores de confianza de las clave de acceso no pueden 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, 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.
Temas
Duración del flujo de la sesión de autenticación
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.
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.
Comportamiento de bloqueo por intentos de inicio de sesión con error
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
El siguiente diagrama y la guía paso a paso 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.
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.
-
Solicitud de inicio de sesión: la aplicación muestra una pantalla de inicio con un botón Iniciar sesión.
-
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.
-
Opciones de solicitud: su aplicación solicita las opciones de inicio de sesión del usuario mediante una solicitud de API
InitiateAuthcon el flujoUSER_AUTH, en la que se solicitan los métodos de inicio de sesión disponibles para el usuario. -
Envío de opciones de inicio de sesión: Amazon Cognito responde con
PASSWORD,EMAIL_OTPyWEB_AUTHN. La respuesta incluye un identificador de sesión para que lo reproduzca en la siguiente respuesta. -
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.
-
Seleccionar opción/introducir credenciales: el usuario introduce su nombre de usuario y contraseña.
-
Inicio de la autenticación: su aplicación proporciona la información de inicio de sesión del usuario con una solicitud de API
RespondToAuthChallengeque confirma el inicio de sesión con nombre de usuario y contraseña y proporciona el nombre de usuario y la contraseña. -
Validación de las credenciales: Amazon Cognito confirma las credenciales del usuario.
-
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. -
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.
-
Respuesta al desafío: el usuario envía la TOTP.
-
Responder al desafío: en otra solicitud
RespondToAuthChallenge, su aplicación proporciona la TOTP del usuario. -
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.
-
Emisión de tokens: Amazon Cognito devuelve los tokens web JSON (JWT) de ID, acceso y actualización. La autenticación inicial del usuario está completa.
-
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.
-
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.
-
Acceso al contenido: el usuario ha iniciado sesión y comienza a usar la aplicación.
-
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.
-
Tokens de actualización: su aplicación hace una solicitud
InitiateAuthcon el token de actualización guardado por el usuario. -
Emisión de tokens: Amazon Cognito devuelve un nuevo ID y accede a JWT. La sesión del usuario se actualiza de forma segura sin solicitar credenciales adicionales.
Puede usar activadores AWS Lambda 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 para permitir la migración de usuarios sin necesidad de que estos restablezcan sus contraseñas.