Personalización de flujos de trabajo de grupos de usuarios con desencadenadores de Lambda - Amazon Cognito

Personalización de flujos de trabajo de grupos de usuarios con desencadenadores de Lambda

Puede crear una función de Lambda y, a continuación, activarla durante las operaciones del grupo de usuarios, como el registro de usuario, la confirmación y el inicio de sesión (autenticación) con un desencadenador de Lambda. Puede agregar los desafíos de autenticación, migrar usuarios, y personalizar los mensajes de verificación.

En la siguiente tabla se resumen algunas formas de utilizar los desencadenadores de Lambda para personalizar las operaciones del grupo de usuarios:

Flujo del grupo de usuarios Operación Descripción

Flujo de autenticación personalizado

Definición de desafíos de autenticación Determina el siguiente desafío en un flujo de autenticación personalizado
Creación de desafíos de autenticación Crea un desafío en un flujo de autenticación personalizado
Verificación de la respuesta al desafío de autenticación Determina si una respuesta es correcta en un flujo de autenticación personalizado
Eventos de autenticación Desencadenador de Lambda anterior a la autenticación Validación personalizada para aceptar o denegar la solicitud de inicio de sesión
Desencadenador de Lambda posterior a la autenticación. Registra eventos para los análisis personalizados
Desencadenador de Lambda de pregeneración de tokens. Aumenta o suprime las notificaciones de tokens
Registro Desencadenador de Lambda de prerregistro. Realiza una validación personalizada que acepta o rechaza la solicitud de inscripción
Desencadenador de Lambda de posconfirmación. Agrega mensajes de bienvenida personalizados o el registro de eventos para los análisis personalizados
Migración del desencadenador de Lambda del usuario Migra un usuario desde un directorio de usuarios existente a los grupos de usuarios
Mensajes Desencadenador de Lambda para mensajes personalizados Realiza una personalización avanzada y localiza mensajes
Creación de tokens Desencadenador de Lambda de pregeneración de tokens. Agrega o elimina atributos en tokens de identificación
Proveedores externos de correo electrónico y SMS Desencadenadores de Lambda para remitentes personalizados Usa un proveedor de terceros para enviar mensajes SMS y de correo electrónico

Consideraciones importantes

Antes de trabajar con funciones Lambda, tenga en cuenta lo siguiente:

  • A excepción de los desencadenadores de Lambda para remitentes personalizados, Amazon Cognito llama a las funciones de Lambda de forma sincrónica. Cuando Amazon Cognito llama a la función de Lambda, esta debe responder en un plazo de 5 segundos. Si no lo hace, Amazon Cognito vuelve a llamar. Después de tres intentos fallidos, la función agota el tiempo de espera. No puede cambiar ese valor de tiempo de espera de cinco segundos. Para obtener más información, consulte el modelo de programación de Lambda.

  • Si elimina un desencadenador de Lambda, deberá actualizar el desencadenador correspondiente en el grupo de usuarios. Por ejemplo, si elimina el desencadenador posterior a la autenticación, deberá establecer el desencadenador Posterior a la autenticación del grupo de usuarios correspondiente en none (ninguno).

  • Si los usuarios utilizan la interfaz de usuario alojada de Amazon Cognito, pueden ver los errores que generan los desenecadenadores de Lambda en los parámetros de consulta que Amazon Cognito agrega a la URL de devolución de llamada, excepto los desencadenadores de Lambda de remitente personalizado. Recomendamos que los desencadenadores de Lambda solo generen errores que quiera que vean los usuarios. Registre toda la información confidencial o de depuración en el propio desencadenador de Lambda.

  • Cuando crea un desencadenador de Lambda fuera de la consola de Amazon Cognito, debe agregar permisos a la función Lambda. Al agregar permisos, Amazon Cognito puede llamar a la función en nombre de su grupo de usuarios. Puede agregar permisos desde la consola Lambda o usar la operación AddPermission de Lambda.

    Ejemplo de política basada en recursos de Lambda

    En el siguiente ejemplo de política basada en recursos de Lambda otorga a Amazon Cognito una capacidad limitada para invocar una función Lambda. Amazon Cognito solo puede invocar la función cuando lo hace en nombre del grupo de usuarios en la condición aws:SourceArn y en la cuenta en la condición aws:SourceAccount.

    { "Version": "2012-10-17", "Id": "default", "Statement": [ { "Sid": "lambda-allow-cognito", "Effect": "Allow", "Principal": { "Service": "cognito-idp.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "<your Lambda function ARN>", "Condition": { "StringEquals": { "AWS:SourceAccount": "<your account number>" }, "ArnLike": { "AWS:SourceArn": "<your user pool ARN>" } } } ] }

Desencadenadores de Lambda para usuarios federados

Puede utilizar los siguientes desencadenadores de Lambda para personalizar los flujos de trabajo del grupo de usuarios para los usuarios que inician sesión con un proveedor federado.

nota
  • Los usuarios federados deben utilizar la interfaz de usuario alojada de Amazon Cognito para iniciar sesión.

  • Para algunas acciones, los usuarios federados llaman a más de una función de Lambda.

Orígenes de los desencadenadores de usuarios federados
Desencadenador Valor de triggerSource Evento desencadenante
Anterior a la inscripción PreSignUp_ExternalProvider Un usuario federado inicia sesión por primera vez desde la página de inicio de sesión de la IU alojada de Amazon Cognito.
Posterior a la confirmación PostConfirmation_ConfirmSignUp Un usuario federado inicia sesión por primera vez desde la página de inicio de sesión de la IU alojada de Amazon Cognito.
Anterior a la autenticación PreAuthentication_Authentication Un usuario federado inicia sesión desde la página de inicio de sesión de la IU alojada de Amazon Cognito, excepto en el primer inicio de sesión.
Posterior a la autenticación PostAuthentication_Authentication Un usuario federado se autentica correctamente desde la página de inicio de sesión de la IU alojada de Amazon Cognito, excepto en el primer inicio de sesión.
Anterior a la generación del token TokenGeneration_HostedAuth Un usuario federado se autentica correctamente desde la página de inicio de sesión de la IU alojada de Amazon Cognito y está a punto de emitir tokens, excepto en el primer inicio de sesión.

El inicio de sesión federado no llama a ningún Desencadenadores de Lambda de desafío de autenticación personalizado, Migración del desencadenador de Lambda del usuario, Desencadenador de Lambda para mensajes personalizados o Desencadenadores de Lambda para remitentes personalizados en el grupo de usuarios.

Adición de un desencadenador de Lambda a un grupo de usuarios

Original console

Para agregar un desencadenador de Lambda a un grupo de usuarios con la consola, siga estos pasos:

  1. Use la consola de Lambda para crear una función de Lambda. Para obtener más información sobre las funciones de Lambda, consulte la Guía para desarrolladores de AWS Lambda.

  2. Diríjase a la consola de Amazon Cognito. Y elija Manage User Pools (Administrar grupos de usuarios).

  3. Elija un grupo de usuarios existente en la lista o cree un grupo de usuarios.

  4. En el grupo de usuarios, elija la pestaña Triggers (Disparadores) en la barra de navegación.

  5. Elija un desencadenador de Lambda, como Anterior a la inscripción o Anterior a la autenticación. A continuación, elija su función de Lambda en la lista desplegable Lambda function (Función de Lambda).

  6. Elija Save changes (Guardar cambios).

  7. En la consola de Lambda, puede registrar la función de Lambda con CloudWatch. Para obtener más información, consulte Acceso a CloudWatch Logs para Lambda.

New console

Para agregar un desencadenador de Lambda a un grupo de usuarios con la consola, siga estos pasos:

  1. Use la consola de Lambda para crear una función de Lambda. Para obtener más información sobre las funciones de Lambda, consulte la Guía para desarrolladores de AWS Lambda.

  2. Diríjase a la consola de Amazon Cognito y luego elija User Pools (Grupos de usuarios).

  3. Elija un grupo de usuarios existente en la lista o cree un grupo de usuarios.

  4. Elija la pestaña User pool properties (Propiedades del grupo de usuarios) y localice Lambda triggers (Desencadenadores Lambda).

  5. Elija Add a Lambda trigger (Agregar un desencadenador Lambda).

  6. Seleccione una Category (Categoría) de desencadenador de Lambda en función de la fase de autenticación que desee personalizar.

  7. Seleccione Assign Lambda function (Asignar función Lambda) y seleccione una función en la misma Región de AWS que el grupo de usuarios.

    nota

    Si las credenciales de AWS Identity and Access Management (IAM) tienen permiso para actualizar la función de Lambda, Amazon Cognito agrega una política basada en recursos de Lambda. Con esta política, Amazon Cognito puede llamar a la función que seleccione. Si las credenciales de sesión iniciada no tienen permisos de IAM suficientes, debe actualizar la política basada en recursos por separado. Para obtener más información, consulte Consideraciones importantes .

  8. Elija Save changes (Guardar cambios).

  9. En la consola de Lambda, puede registrar la función de Lambda con CloudWatch. Para obtener más información, consulte Acceso a CloudWatch Logs para Lambda.

Evento desencadenador de Lambda para un grupo de usuarios

Amazon Cognito transfiere la información del evento a la función de Lambda. A continuación, la función de Lambda devuelve el mismo objeto de evento a Amazon Cognito con los cambios en la respuesta. Con este evento, se muestran los parámetros comunes del desencadenador de Lambda.

JSON
{ "version": "string", "triggerSource": "string", "region": AWSRegion, "userPoolId": "string", "userName": "string", "callerContext": { "awsSdkVersion": "string", "clientId": "string" }, "request": { "userAttributes": { "string": "string", .... } }, "response": {} }

Parámetros comunes del desencadenador de Lambda para un grupo de usuarios

version

El número de versión de la función de Lambda.

triggerSource

El nombre del evento que desencadenó la función de Lambda. Consulte Fuentes del desencadenador de Lambda para un grupo de usuarios para ver una descripción del origen de cada disparador (triggerSource).

region

Región de AWS como instancia AWSRegion.

userPoolId

El ID del grupo de usuarios.

userName

Nombre del usuario actual.

callerContext

Contexto de la persona que llama. Consta de los elementos siguientes:

awsSdkVersion

El número de la versión de AWS SDK.

clientId

ID de cliente de la aplicación del grupo de usuarios.

request

La solicitud del servicio de Amazon Cognito. Esta solicitud debe incluir lo siguiente:

userAttributes

Uno o varios pares de nombres y valores de atributos de usuario. Cada par se indica de la forma siguiente: “nombre”: “valor”.

response

La respuesta del desencadenador de Lambda. Los parámetros de retorno de la respuesta dependen del evento disparador.

Fuentes del desencadenador de Lambda para un grupo de usuarios

En esta sección, se describe cada parámetro triggerSource de Lambda en Amazon Cognito y el evento desencadenador correspondiente.

Disparadores de inscripción, confirmación e inicio de sesión (autenticación)
Desencadenador Valor de triggerSource Evento desencadenante
Anterior a la inscripción PreSignUp_SignUp Anterior a la inscripción.
Anterior a la inscripción PreSignUp_AdminCreateUser Anterior a la inscripción cuando un administrador crea un nuevo usuario.
Anterior a la inscripción PreSignUp_ExternalProvider Prerregistro para proveedores de identidad externos.
Posterior a la confirmación PostConfirmation_ConfirmSignUp Posterior a la confirmación de la inscripción.
Posterior a la confirmación PostConfirmation_ConfirmForgotPassword Posterior a la confirmación de la contraseña olvidada.
Anterior a la autenticación PreAuthentication_Authentication Anterior a la autenticación.
Posterior a la autenticación PostAuthentication_Authentication Posterior a la autenticación.
Disparadores de desafío de autenticación personalizados
Desencadenador Valor de triggerSource Evento desencadenante
Definición de desafíos de autenticación DefineAuthChallenge_Authentication Definición de desafíos de autenticación.
Creación de desafíos de autenticación CreateAuthChallenge_Authentication Creación de desafíos de autenticación.
Verificación de desafío de autenticación VerifyAuthChallengeResponse_Authentication Verificación de la respuesta a los desafíos de autenticación.
Disparadores anteriores a la generación del token
Desencadenador Valor de triggerSource Evento desencadenante
Anterior a la generación del token TokenGeneration_HostedAuth Amazon Cognito autentica el usuario desde su página de inicio de sesión de la IU alojada.
Anterior a la generación del token TokenGeneration_Authentication Flujos de autenticación de usuarios completos.
Anterior a la generación del token TokenGeneration_NewPasswordChallenge El administrador crea el usuario. Amazon Cognito lo llama cuando el usuario debe cambiar una contraseña temporal.
Anterior a la generación del token TokenGeneration_AuthenticateDevice Fin de la autenticación de un dispositivo de usuario.
Anterior a la generación del token TokenGeneration_RefreshTokens Un usuario intenta actualizar los tokens de identidad y acceso.
Disparadores de migración de usuarios
Desencadenador Valor de triggerSource Evento desencadenante
Migración de usuario UserMigration_Authentication Migración de usuarios durante el inicio de sesión.
Migración de usuario UserMigration_ForgotPassword Migración de usuarios durante el flujo de recuperación de contraseñas olvidadas.
Disparadores de mensaje personalizado
Desencadenador Valor de triggerSource Evento desencadenante
Mensaje personalizado CustomMessage_SignUp Mensaje personalizado cuando un usuario se registra en el grupo de usuarios.
Mensaje personalizado CustomMessage_AdminCreateUser Mensaje personalizado al crear un usuario como administrador y Amazon Cognito le envía una contraseña temporal.
Mensaje personalizado CustomMessage_ResendCode Mensaje personalizado cuando el usuario actual solicita un nuevo código de confirmación.
Mensaje personalizado CustomMessage_ForgotPassword Mensaje personalizado cuando el usuario solicita un restablecimiento de contraseña.
Mensaje personalizado CustomMessage_UpdateUserAttribute Mensaje personalizado cuando un usuario cambia su dirección de correo electrónico o número de teléfono y Amazon Cognito envía un código de verificación.
Mensaje personalizado CustomMessage_VerifyUserAttribute Mensaje personalizado cuando un usuario agrega una dirección de correo electrónico o un número de teléfono y Amazon Cognito envía un código de verificación.
Mensaje personalizado CustomMessage_Authentication Mensaje personalizado cuando un usuario que ha configurado la MFA por SMS inicia sesión.