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 a grupos 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 Evento
UserMigration_Authentication Migración de usuarios al iniciar sesión.
UserMigration_ForgotPassword Migración de usuarios durante el flujo de recuperación de contraseñas olvidadas.

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.

password

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. Puede transferir estos datos a la función de Lambda mediante el parámetro ClientMetadata en las acciones de la API InitiateAuth y AdminInitiateAuth.

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. Puede transferir estos datos a la función de Lambda mediante el parámetro ClientMetadata en las acciones de la API AdminRespondToAuthChallenge y ForgotPassword.

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 el grupo de usuarios con atributos de alias y el nombre de usuario para iniciar sesión, y si el usuario ha ingresado un valor de alias válido para iniciar sesión. 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 la función debe asignar el parámetro username que recibió a un atributo de alias. Además, la respuesta debe asignar su propio valor al atributo username. 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.

finalUserStatus

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. A continuación, establezca FinalUserStatus en RESET_REQUIRED si la contraseña no cumple con la política.

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.

desiredDeliveryMediums

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.

forceAliasCreation

Si establece este parámetro en TRUE y el número de teléfono o la dirección de correo electrónico que se han especificado en el parámetro UserAttributes ya existen como alias para otro usuario, la llamada a la API migrará 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
const validUsers = { belladonna: { password: "Test123", emailAddress: "bella@example.com" }, }; // Replace this mock with a call to a real authentication service. const authenticateUser = (username, password) => { if (validUsers[username] && validUsers[username].password === password) { return validUsers[username]; } else { return null; } }; const lookupUser = (username) => { const user = validUsers[username]; if (user) { return { emailAddress: user.emailAddress }; } else { return null; } }; const handler = async (event) => { if (event.triggerSource == "UserMigration_Authentication") { // Authenticate the user with your existing user directory service const 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"; } } else if (event.triggerSource == "UserMigration_ForgotPassword") { // Look up the user in your existing user directory service const 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"; } } return event; }; export { handler };