Acciones
Las Acciones de Logto te permiten ejecutar JavaScript confiable en puntos específicos del flujo de autenticación. Una acción se ejecuta de forma sincrónica: la solicitud de autenticación espera el script, y el resultado del script puede actualizar al usuario o determinar si el flujo continúa.
Las acciones son útiles cuando la decisión debe ocurrir dentro del flujo de autenticación. Los casos de uso comunes incluyen:
- Migrar usuarios y contraseñas desde un sistema de identidad heredado cuando inician sesión por primera vez.
- Actualizar el perfil del usuario o datos específicos de la aplicación antes de que Logto complete un inicio de sesión.
- Llamar a un servicio externo y aplicar su resultado al usuario de Logto.
Las acciones están disponibles en los planes Enterprise de Logto Cloud.
Los scripts de acción pueden afectar la autenticación y modificar los datos del usuario. Solo los administradores de confianza deben poder ver, crear, editar, probar, habilitar o eliminarlos.
En implementaciones autogestionadas, los scripts de acción se ejecutan dentro del proceso del servidor Logto con sus privilegios. Conceder acceso para editar o probar scripts equivale a conceder ejecución de código en el host de Logto, por lo que la Consola de Administración no debe compartirse con usuarios no confiables. Trata los scripts como código de servidor confiable; el entorno de ejecución limita el tiempo y la memoria de un script, pero no es un límite de seguridad para código no confiable.
Cómo encajan las Acciones en el inicio de sesión
Actualmente, Logto proporciona dos tipos de acción:
| Tipo de acción | Cuándo se ejecuta | Qué puede hacer |
|---|---|---|
| Después de la verificación del primer factor | Durante un inicio de sesión con contraseña, solo después de que falle la verificación de la contraseña local de Logto. No se ejecuta si la contraseña local es válida. | Verificar las credenciales enviadas contra un sistema heredado, luego crear un nuevo usuario de Logto o actualizar uno existente y migrar la contraseña enviada. |
| Después del inicio de sesión | Después de que el usuario haya completado todos los factores de autenticación, incluido MFA si es requerido, y antes de que Logto complete el inicio de sesión y emita tokens. | Actualizar y enriquecer el usuario existente de Logto usando el contexto final del inicio de sesión. |
Ambos tipos de acción se ejecutan solo para interacciones SignIn en la Experience API. La acción después de la verificación del primer factor aplica solo al inicio de sesión con contraseña; la acción después del inicio de sesión es independiente del método de autenticación.
Modelo de script
Cada tipo de acción tiene una configuración y una función de entrada JavaScript llamada runAction:
const runAction = async ({ event, environmentVariables = {} }) => {
// Inspecciona el evento, opcionalmente obtiene datos externos y retorna
// un resultado compatible con este tipo de acción.
};
La carga útil contiene:
event: El evento de autenticación en producción. Su forma depende del tipo de acción.environmentVariables: Los valores de cadena configurados para esta acción. Estos valores se pasan a través de la carga útil de la función; no están disponibles a través deprocess.env.
El editor proporciona información de tipos, pero el script guardado se ejecuta como JavaScript. El script puede ser asíncrono y puede usar estas APIs Web estándar tanto en Logto Cloud como en Logto autogestionado:
fetch,Request,ResponseyHeaders- Web Crypto a través de
cryptoycrypto.subtle TextEncoderyTextDecoderURLyURLSearchParams
Los scripts no pueden importar paquetes. Evita los globales y módulos específicos de Node.js porque no son portables entre Logto autogestionado y Logto Cloud y no forman parte del contrato de script soportado.
El resultado soportado es diferente para cada tipo de acción; consulta la página de referencia correspondiente antes de habilitar una Acción.
Acciones y Webhooks
Las acciones y los Webhooks tienen propósitos diferentes:
| Acciones | Webhooks | |
|---|---|---|
| Ejecución | Sincrónica y en línea con la autenticación | Asíncrona y fuera de la solicitud de autenticación |
| ¿Puede afectar el flujo de autenticación actual? | Sí | No |
| ¿Puede modificar un usuario desde su resultado? | Sí, usando el parche de usuario soportado | No directamente; el receptor puede llamar a la Management API por separado |
| Cobertura de eventos | Puntos de autenticación seleccionados | Un conjunto amplio de eventos de interacción y cambio de datos |
| Uso típico | Migración de credenciales, enriquecimiento de perfil antes del token | Notificaciones, sincronización descendente, analítica |
Mantén el trabajo asíncrono en los Webhooks. Usa una Acción solo cuando Logto necesite el resultado antes de que la autenticación pueda continuar.