Saltar al contenido principal
Al suscribirse a eventos y entregarlos a un destino de su elección mediante flujos de eventos, puede habilitar varios casos de uso relacionados, entre ellos:
  • Enviar correos electrónicos a nuevos clientes para darles la bienvenida o pedirles que verifiquen su dirección de correo electrónico.
  • Supervisar los cambios en el ciclo de vida del usuario para poder actualizar los sistemas de CRM (gestión de relaciones con clientes) o de facturación.
Puede crear un flujo de eventos con AWS EventBridge o webhooks. En las secciones siguientes se describe el proceso de configuración para ambas opciones.

Acceso a la Management API (opcional)

Los flujos de eventos se pueden aprovisionar mediante el o la Auth0 Management API. Si usa la , antes de poder configurar un flujo de eventos, debe crear una aplicación de máquina a máquina (M2M) y autenticarse con un token de acceso de la Management API. Para obtener más información, consulte Tokens de acceso de la Management API.
  1. Vaya a Dashboard > Applications > Applications y seleccione Create Application.
  2. Introduzca un nombre descriptivo para su aplicación y elija Machine to Machine Applications. Luego, seleccione Create.
  3. Seleccione la API a la que desea llamar desde su aplicación. En este caso, use Auth0 Management API.
  4. Elija los permisos que quiere que se incluyan en el token de acceso de su aplicación y luego seleccione Authorize. Para fines de prueba, seleccione:
    • read:event_streams
    • create:event_streams
    • update:event_streams
    • delete:event_streams
    • read:event_deliveries
    • update:event_deliveries
    • create:users
  5. Vaya a la pestaña Settings para obtener su Client ID, Client Secret y Domain.
  6. Revise Obtener tokens de acceso para la Management API para recuperar y almacenar su token de acceso.

AWS EventBridge

La siguiente información describe cómo crear y habilitar un flujo de eventos con AWS EventBridge.

Requisitos previos de EventBridge

Para usar AWS EventBridge para los flujos de eventos, necesitará lo siguiente:
  • Cuenta de AWS
  • Permisos de AWS IAM
  • Bus de eventos de AWS EventBridge
  • ID y región de la cuenta de AWS

Crear un flujo de eventos (EventBridge)

Los flujos de eventos le permiten capturar cambios en tiempo real dentro de su inquilino de Auth0 y enviarlos a un sistema externo para su procesamiento.Antes de configurar un flujo de eventos, debe identificar los tipos de eventos que desea supervisar. Luego, usará el ID y la región de su cuenta de AWS para configurar el flujo de eventos, como se muestra a continuación.Este ejemplo usa la CLI de Auth0 para crear un flujo de eventos que se suscribe al evento user.created, el cual se activa cada vez que se registra un nuevo usuario en su inquilino.
auth0 events create --name ng-demo-eventbridge --type eventbridge --subscriptions "user.created" --configuration '{"aws_account_id":"<your-aws-account-id>","aws_region":"<your-aws-region>"}'
Si la llamada se realiza correctamente, devuelve el siguiente JSON con el id de tu flujo de eventos. Los flujos de eventos nuevos se habilitan de forma predeterminada.
{
  "id": "est_8of6RXoM1997qikH7NS11h",
  "status": "enabled",
  "name": "ng-demo-eventbridge",
  "subscriptions": [
    {
      "event_type": "user.created"
    }
  ],
  "created_at": "2025-01-29T18:08:43.440Z",
  "updated_at": "2025-01-29T18:08:43.440Z",
  "destination": {
    "type": "eventbridge",
    "configuration": {
      "aws_account_id": "<your-aws-account-id>",
      "aws_region": "<your-aws-region>",
      "aws_partner_event_source": "default"
    }
  }
}

Webhooks

Como alternativa a AWS EventBridge, puede usar webhooks para implementar flujos de eventos. Para comenzar, primero configure un controlador de webhook para recibir notificaciones en tiempo real cuando se produzca un evento específico. Luego, podrá crear su flujo de eventos. Puede crear un controlador de webhook básico siguiendo las instrucciones que aparecen a continuación, o usar un servicio existente, como:
  • Vercel
  • Inngest
Si decide usar un servicio existente, puede continuar con Crear un flujo de eventos (webhook). De lo contrario, siga las instrucciones que aparecen a continuación para crear su propio controlador de webhook básico.

Requisitos previos del webhook

Asegúrate de tener instalados los siguientes elementos para escribir correctamente el controlador del webhook:
  • node.js
  • jq
  • npm
  • ngrok

Escribe el controlador de webhook

  1. Instala express en la carpeta node_modules y agrégalo a las dependencias de tu package.json.
  2. Instala dotenv en el directorio raíz para usar un archivo .env con el que almacenar variables de entorno.
  3. Crea un archivo webhook.js para recibir el evento user.created y almacenarlo en una base de datos.
    const express = require('express');
    const app = express();
    
    // Middleware de autorización
    app.use((req, res, next) => {
      const token = req.headers["authorization"];
      if (token !== `Bearer ${API_TOKEN}`) {
        return res.status(401).json({ error: "Unauthorized" });
      }
      next();
    });
    
    // Endpoint del webhook
    app.post("/webhook", async (req, res) => {
      console.log("Webhook received:", JSON.stringify(req.body, null, 2));
    
      const eventData = req.body;
      const { id, type, time, data } = eventData;
      const user = data.object;
    
      try {
        switch (type) {
          case "user.created":
            await handleUserCreated(user, time);
            break;
          case "user.updated":
            await handleUserUpdated(user, time);
            break;
          case "user.deleted":
            await handleUserDeleted(user, time);
            break;
          default:
            await handleDefaultEvent(id, type, time, data);
        }
    
        console.log(`Webhook event of type '${type}' committed to the database.`);
        res.sendStatus(204);
      } catch (err) {
        console.error("Error processing webhook:", err);
        res.status(500).json({ error: "Internal server error" });
      }
    });
    
    // Función específica para manejar el evento de creación de usuario
    // En este ejemplo, nos aseguramos de que los usuarios también se creen en nuestra propia base de datos
    async function handleUserCreated(user, time) {
      const { user_id, email, name, nickname, created_at, updated_at } = user;
    
      const query = `
        INSERT INTO users (user_id, email, name, nickname, created_at, updated_at, raw_user, last_event_processed)
        VALUES ($1, $2, $3, $4, $5, $6, $7, $8)
      `;
      const values = [
        user_id,
        email,
        name,
        nickname,
        created_at,
        updated_at,
        user,
        time,
      ];
    
      try {
        await getPool().query(query, values);
      } catch (err) {
        if (err.code === "23505") {
          console.error(`Duplicate user_id=${user_id}, skipping insert.`);
        } else {
          console.error(`Database error while creating user_id=${user_id}:`, err);
          throw err;
        }
      }
    }
    
  4. En la raíz de tu proyecto, crea un archivo .env y agrega tu token de API con lo siguiente:
    API_TOKEN=`openssl rand -hex 32`
    echo "API_TOKEN=$API_TOKEN" > .env
    
  5. Inicia el servidor:
    node webhook.js
    
  6. Para probar el webhook, expón tu controlador de webhook con una herramienta como ngrok:
    ngrok http 3000
    
    Esto proporciona una URL pública para tu controlador de webhook local, por ejemplo:
    http://localhost:3000
    

Crear un flujo de eventos (webhooks)

Los flujos de eventos le permiten capturar cambios en tiempo real en su inquilino de Auth0 y enviarlos a un sistema externo para su procesamiento. Antes de configurar un flujo de eventos, debe identificar los tipos de eventos que desea supervisar. Luego, usará su controlador de webhook para crear un flujo de eventos, como se muestra a continuación.
Este ejemplo utiliza la CLI de Auth0 para crear un flujo de eventos que se suscribe al evento user.created, que se produce cada vez que se registra un nuevo usuario en tu inquilino. Después, los datos del evento se reenvían a un endpoint de webhook para su procesamiento posterior.
source .env # Asegúrate de estar en el directorio del webhook donde creaste tu archivo .env
WEBHOOK_URL="<ngrok URL>/webhook"

auth0 events create -n my-event1 -t webhook -s "user.created" -c '{"webhook_endpoint":"'"${WEBHOOK_URL}"'","webhook_authorization":{"method":"bearer","token":'"${API_TOKEN}"'"}}'
Si la operación se realiza correctamente, se devuelve el siguiente JSON con el id de tu flujo de eventos. Los flujos de eventos nuevos se habilitan de forma predeterminada.
{
  "id": "est_8of6RXoM1997qikH7NS11h",
  "status": "enabled",
  "name": "ng-demo-2",
  "subscriptions": [
    {
      "event_type": "user.created"
    }
  ],
  "created_at": "2025-01-29T18:08:43.440Z",
  "updated_at": "2025-01-29T18:08:43.440Z",
  "destination": {
    "type": "webhook",
    "configuration": {
      "webhook_endpoint": "https://example.com/webhook",
      "webhook_authorization": {
        "method": "bearer"
      }
    }
  }
}

Verifique el flujo de eventos

Después de crear un flujo de eventos, puede comprobar que existe con el siguiente comando:
auth0 events show <EVENT_STREAM_ID>
Una vez que el flujo esté activo, puede probar el flujo de eventos. Para obtener más información, consulte Pruebas de eventos, observabilidad y recuperación ante fallos.

Auth0 Actions

A continuación, se describe cómo puede crear y habilitar un flujo de eventos con Auth0 Actions.

Crear un flujo de eventos (Actions)

Los flujos de eventos le permiten capturar cambios en tiempo real dentro de su inquilino de Auth0 y enviarlos a un sistema externo para procesarlos.Antes de configurar un flujo de eventos, debe identificar los tipos de eventos que desea supervisar. En este ejemplo, se usa Auth0 CLI para crear un flujo de eventos que se suscribe al evento user.created, que se activa cada vez que su inquilino registra un nuevo usuario.
auth0 event-streams create \
  --name actions-1 \
  --type action \
  --subscriptions "user.created,user.updated,user.deleted" \
  --configuration '{"action_id":"385db79f-28a4-43d9-909d-6f5511dd6632"}'
Si la operación se realiza correctamente, esta llamada devuelve el siguiente JSON con el id de su flujo de eventos. Los nuevos flujos de eventos están habilitados de forma predeterminada.
{
    "configuration": {
      "action_id": "act_xyz789...",
      "status": "enabled"
  }
}

Más información