View a markdown version of this page

Migración del desencadenador de Lambda del usuario - Amazon Cognito

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.

Migración del desencadenador de Lambda del usuario

Amazon Cognito llama a este desencadenador si un usuario no aparece en el grupo de usuarios en el momento del inicio de sesión con una contraseña o en el flujo de recuperación de contraseñas olvidadas. Cuando la función de Lambda finaliza responde con éxito, Amazon Cognito crea el usuario en el grupo de usuarios. Para obtener información detallada sobre el flujo de autenticación con el desencadenador de Lambda para migrar usuarios, consulte Importación de usuarios con un desencadenador de Lambda para la migración de usuarios.

Con este desencadenador de Lambda, se pueden migrar usuarios desde el directorio de usuarios actual a grupos de usuarios de Amazon Cognito en el momento del inicio de sesión o durante el flujo de recuperación de contraseñas olvidadas.

Fuentes del desencadenador de Lambda para migrar usuarios

Valor de triggerSource Event
UserMigration_Authentication1 Migración de usuarios al iniciar sesión.
UserMigration_ForgotPassword Migración de usuarios durante el flujo de recuperación de contraseñas olvidadas.

1 Amazon Cognito no invoca este desencadenador cuando los usuarios se autentican con un inicio de sesión sin contraseña.

Parámetros del desencadenador de Lambda para migrar usuarios

La solicitud que Amazon Cognito envía a esta función de Lambda es una combinación de los parámetros que se indican a continuación y los parámetros comunes que Amazon Cognito agrega a todas las solicitudes.

JSON
{ "userName": "string", "request": { "password": "string", "validationData": { "string": "string", . . . }, "clientMetadata": { "string": "string", . . . } }, "response": { "userAttributes": { "string": "string", . . . }, "finalUserStatus": "string", "messageAction": "string", "desiredDeliveryMediums": [ "string", . . .], "forceAliasCreation": boolean, "enableSMSMFA": boolean } }

Parámetros de la solicitud para la migración de usuarios

userName

Nombre de usuario que ingresa el usuario al iniciar sesión.

contraseña

Contraseña que ingresa el usuario al iniciar sesión. Amazon Cognito no envía este valor en una solicitud iniciada por un flujo de recuperación de contraseñas olvidadas.

validationData

Uno o varios pares de clave-valor que contienen los datos de validación de la solicitud de inicio de sesión del usuario. Para pasar estos datos a la función Lambda, puede usar el ClientMetadata parámetro en las acciones InitiateAuthy de la AdminInitiateAuthAPI.

clientMetadata

Uno o varios pares de clave-valor que puede proporcionar como datos de entrada personalizados a la función de Lambda para el desencadenador para migrar usuarios. Para pasar estos datos a la función Lambda, puede usar el ClientMetadata parámetro en las acciones AdminRespondToAuthChallengey de la ForgotPasswordAPI.

Parámetros de la respuesta para la migración de usuarios

userAttributes

Este campo es obligatorio.

Este campo debe contener uno o varios pares de nombre-valor que Amazon Cognito almacena en el perfil del usuario del grupo de usuarios y utiliza como atributos del usuario. Puede incluir atributos de usuario estándar y personalizados. Los atributos personalizados deben tener el prefijo custom: para distinguirlos de los atributos estándar. Para obtener más información, consulte Atributos personalizados.

nota

Para que los usuarios puedan restablecer sus contraseñas en el flujo de recuperación de contraseñas olvidadas, deben disponer de una dirección de correo electrónico o un número de teléfono verificados. Amazon Cognito envía un mensaje con el código de restablecimiento de la contraseña a la dirección de correo electrónico o al número de teléfono de los atributos del usuario.

Atributos Requisito
Todos los atributos que ha marcado como obligatorios al crear el grupo de usuarios Si faltan atributos obligatorios durante la migración, Amazon Cognito usará los valores predeterminados.
username

Es obligatorio si ha configurado su grupo de usuarios con atributos de alias además del nombre de usuario para iniciar sesión y el usuario ha introducido un valor de alias válido como nombre de usuario. Este valor del alias puede ser una dirección de correo electrónico, un nombre de usuario preferido o un número de teléfono.

Si la solicitud y el grupo de usuarios cumplen los requisitos de alias, la respuesta de su función debe asignar el username parámetro que recibió a un atributo de alias. Además, la respuesta debe asignar su propio valor al username atributo. Si el grupo de usuarios no cumple las condiciones requeridas para asignar el grupo recibido username a un alias, entonces el parámetro username en la respuesta debe coincidir exactamente con la solicitud u omitirse.

nota

El username debe ser único en el grupo de usuarios.

final UserStatus

Puede establecer este parámetro en CONFIRMED para confirmar automáticamente a los usuarios que pueden iniciar sesión con sus contraseñas anteriores. Al configurar un usuario en CONFIRMED, este no debe tomar medidas adicionales para poder iniciar sesión. Si no establece este atributo en CONFIRMED, se establece en RESET_REQUIRED.

Un finalUserStatus de RESET_REQUIRED significa que el usuario debe cambiar su contraseña inmediatamente después de la migración al iniciar sesión y que la aplicación cliente debe gestionar la PasswordResetRequiredException durante el flujo de autenticación.

nota

Amazon Cognito no aplica la política de seguridad de contraseñas que configuró para el grupo de usuarios durante la migración mediante el desencadenador de Lambda. Si la contraseña no cumple con la política de contraseñas configurada, Amazon Cognito seguirá aceptando la contraseña para que pueda seguir migrando al usuario. Para aplicar la política de seguridad de la contraseña y rechazar contraseñas que no cumplan con la política, valide la seguridad de la contraseña del código. Luego, si la contraseña no cumple con la política, UserStatus defina final enRESET_REQUIRED.

messageAction

Puede establecer este parámetro en SUPPRESS para rechazar el envío del mensaje de bienvenida que Amazon Cognito suele enviar a los usuarios nuevos. Si la función no devuelve este parámetro, Amazon Cognito envía el mensaje de bienvenida.

deseado DeliveryMediums

Este parámetro puede establecerse en EMAIL para enviar el mensaje de bienvenida por correo electrónico o en SMS para enviar el mensaje de bienvenida por SMS. Si la función no devuelve este parámetro, Amazon Cognito envía el mensaje de bienvenida por SMS.

fuerza AliasCreation

Si estableces este parámetro en, TRUE y el número de teléfono o la dirección de correo electrónico del UserAttributes parámetro ya existen como alias con un usuario diferente, la llamada a la API migra el alias del usuario anterior al usuario recién creado. El usuario anterior ya no podrá iniciar sesión con ese alias.

Si define este parámetro en FALSE y el alias existe, Amazon Cognito no migrará al usuario y devolverá un error a la aplicación cliente.

Si no devuelve este parámetro, Amazon Cognito asume que su valor es “false”.

enableSMSMFA

Establezca este parámetro en true para solicitar que el usuario migrado complete la autenticación multifactor (MFA) de mensajes de texto SMS para iniciar sesión. El grupo de usuarios debe tener habilitada la MFA. Los atributos del usuario en los parámetros de la solicitud deben incluir un número de teléfono o, de lo contrario, la migración de ese usuario producirá un error.

Ejemplo: Migrar un usuario con una contraseña existente

Con esta función de Lambda de ejemplo, se migra el usuario con una contraseña existente y se suprime el mensaje de bienvenida de Amazon Cognito.

Node.js
exports.handler = (event, context, callback) => { var user; if (event.triggerSource == "UserMigration_Authentication") { // authenticate the user with your existing user directory service user = authenticateUser(event.userName, event.request.password); if (user) { event.response.userAttributes = { email: user.emailAddress, email_verified: "true", }; event.response.finalUserStatus = "CONFIRMED"; event.response.messageAction = "SUPPRESS"; context.succeed(event); } else { // Return error to Amazon Cognito callback("Bad password"); } } else if (event.triggerSource == "UserMigration_ForgotPassword") { // Lookup the user in your existing user directory service user = lookupUser(event.userName); if (user) { event.response.userAttributes = { email: user.emailAddress, // required to enable password-reset code to be sent to user email_verified: "true", }; event.response.messageAction = "SUPPRESS"; context.succeed(event); } else { // Return error to Amazon Cognito callback("Bad password"); } } else { // Return error to Amazon Cognito callback("Bad triggerSource " + event.triggerSource); } };

Solución de problemas del desencadenante de la migración del usuario

Si la migración no funciona según lo esperado aunque la función devuelva la respuesta documentada, compruebe las siguientes causas comunes.

No se invoca el disparador

Amazon Cognito invoca el activador de migración de usuarios solo cuando el usuario no existe aún en el grupo de usuarios. Solo se aplica a los flujos de inicio de sesión USER_PASSWORD_AUTHADMIN_USER_PASSWORD_AUTH, y USER_AUTH (con contraseña) y al flujo de contraseña olvidada. No se invoca para iniciar sesión con SRP (USER_SRP_AUTH), porque la contraseña del usuario nunca llega a tu función en ese flujo, ni para iniciar sesión sin contraseña. Si el activador no se activa, confirma que el cliente de la aplicación permite uno de estos flujos y que el usuario aún no está presente en el grupo.

Amazon Cognito no puede invocar la función

Si configura el activador con una política basada en recursos en la función y no a través de la consola de Amazon Cognito, la política debe permitir que el director cognito-idp.amazonaws.com del servicio lambda:InvokeFunction llame, según el ARN de su grupo de usuarios. La consola le añade este permiso; una función conectada con la infraestructura como código o la API de Lambda necesita que se añada de forma explícita. Sin él, la migración falla porque Amazon Cognito no puede invocar el desencadenador.

El usuario inicia sesión pero no se crea ningún perfil

Amazon Cognito crea el usuario migrado solo cuando la función devuelve la respuesta con la forma exacta que esperaba: el userAttributes campo debe estar presente e incluir todos los atributos marcados como obligatorios en el grupo de usuarios. Una función que autentica al usuario pero devuelve un response objeto vacío o con un formato incorrecto, u omite un atributo obligatorio, completa la llamada de inicio de sesión sin conservar un perfil. Vuelva userAttributes con todos los atributos necesarios y establezca y según sea necesario. finalUserStatus messageAction