Auth0 Log Streaming et Webhooks : monitorer les événements d'authentification

Exportez en temps réel vos logs Auth0 vers Datadog, Splunk, AWS EventBridge ou vos propres systèmes. Configuration, filtres et alertes.

Par Auth0.Expert · 2025-04-05 · 9 min de lecture

Monitoring Log Streaming Observabilité

Auth0 Log Streaming : monitoring en temps réel

TL;DR

Auth0 conserve vos logs 7 jours (plan Developer) ou 30 jours (Enterprise). Log Streaming exporte en temps réel vers Datadog, Splunk, AWS S3, Azure Event Hubs ou un webhook custom. Indispensable pour la conformité et la détection d'intrusions.

---

Types d'événements Auth0

Le tableau ci-dessous recense les types d’événements générés par Auth0, utiles pour monitorer l’activité et détecter des anomalies de sécurité.

| Code | Événement | Criticité | |------|-----------|-----------| | s | Succès de login | Info | | f | Échec de login | Warning | | fp | Mauvais mot de passe | Warning | | fu | Utilisateur inconnu | Warning | | frd | Règle rejetée | Error | | limit_wc | Trop de tentatives | Critical | | slo | Single Log Out | Info | | ss | Signup réussi | Info | | sce | Client Credentials échange | Info | | pwd_leak | Mot de passe compromis détecté | Critical |

---

Configurer Log Streaming

Cette section explique comment configurer une exportation temps réel des logs Auth0 vers une solution tierce pour un monitoring avancé.

Dashboard → Monitoring → Streams → Create Stream

Vers Datadog

Ce bloc JSON configure un stream Auth0 pour exporter les logs filtrés vers Datadog, afin de surveiller les tentatives de login à risque et les compromissions.

{
  "name": "Datadog Production",
  "type": "datadog",
  "sink": {
    "datadogRegion": "EU",
    "datadogApiKey": "YOUR_DATADOG_API_KEY"
  },
  "filters": [
    {"type": "f"},
    {"type": "fp"},
    {"type": "limit_wc"},
    {"type": "pwd_leak"}
  ]
}

Vers un Webhook personnalisé

Ce code JSON permet d'envoyer les événements Auth0 directement sur un endpoint webhook personnalisé, pratique pour intégrer avec un SIEM interne ou automatiser des réactions.

{
  "name": "Custom SIEM",
  "type": "http",
  "sink": {
    "httpEndpoint": "https://siem.yourcompany.com/auth0/events",
    "httpContentType": "application/json",
    "httpAuthorization": "Bearer YOUR_WEBHOOK_SECRET",
    "httpContentFormat": "JSONLINES"
  }
}

---

Recevoir et traiter les événements

Voici un exemple de serveur FastAPI qui reçoit les événements Auth0 via un webhook, vérifie la signature et traite chaque événement selon son type (alerte Slack, reset password, blocklist IP).

# FastAPI webhook receiver
from fastapi import FastAPI, Request, Header, HTTPException
import hmac
import hashlib
import json

app = FastAPI()
WEBHOOK_SECRET = os.environ["AUTH0_WEBHOOK_SECRET"]

@app.post("/auth0/events")
async def receive_auth0_events(
    request: Request,
    x_auth0_signature: str = Header(None),
):
    body = await request.body()

    # Vérifier la signature (si Auth0 l'envoie)
    if x_auth0_signature:
        expected = hmac.new(
            WEBHOOK_SECRET.encode(), body, hashlib.sha256
        ).hexdigest()
        if not hmac.compare_digest(expected, x_auth0_signature):
            raise HTTPException(status_code=401)

    # Traiter chaque ligne (JSONLINES)
    events = [json.loads(line) for line in body.decode().splitlines() if line]

    for event in events:
        await process_event(event)

    return {"received": len(events)}

async def process_event(event: dict):
    event_type = event.get("type")

    if event_type in ["f", "fp", "fu"]:
        # Alerter Slack sur échec de login
        await send_slack_alert(
            f"🚨 Échec login: {event.get('user_name')} depuis {event.get('ip')}"
        )
    elif event_type == "pwd_leak":
        # Forcer reset de mot de passe
        await force_password_reset(event.get("user_id"))
    elif event_type == "limit_wc":
        # Ajouter l'IP au blocklist
        await block_ip(event.get("ip"))

Ce script permet de détecter automatiquement des incidents Auth0 critiques et d’engager des actions de sécurité en temps réel.

---

Alertes Datadog : détection d'anomalies

Cette configuration Datadog lance une alerte si le nombre d'échecs de login dépasse un seuil en 5 minutes, utile pour détecter une attaque brute force.

# Moniteur Datadog : trop d'échecs de login
{
  "query": "sum(last_5m):sum:auth0.events{type:f} > 100",
  "message": "⚠️ Auth0 : plus de 100 échecs de login en 5 minutes. Possible attaque brute force.",
  "notify": ["@slack-security-alerts"]
}

---

Dashboard Auth0 : requêtes Lucene

L’interface de logs Auth0 permet de filtrer les événements avec des requêtes Lucene puissantes pour investiguer ou créer des alertes personnalisées.

# Tous les logins échoués aujourd'hui
type:f AND date:[now-1d TO *]

# Logins depuis un pays spécifique
type:s AND _exists_:location_info.country_code AND location_info.country_code:"RU"

# Tous les events pour un utilisateur
user_name:"[email protected]"

# Détections de compromission
type:pwd_leak

---

Conformité : rétention des logs

Voici un tableau récapitulant la rétention des logs Auth0 selon le plan, très utile pour exigences RGPD/SOC2.

| Plan | Rétention | Export | |------|-----------|--------| | Free | 3 jours | ❌ | | Developer | 7 jours | Log Streaming | | Enterprise | 30 jours | Log Streaming + Archive |

Pour RGPD/SOC2 nécessitant 1 an : utilisez Log Streaming → S3/Azure Blob → Glacier.

---

> 📊 Mise en place monitoring Auth0 : nous configurons votre stack d'observabilité (Datadog/Splunk/ELK) avec des alertes préconfigurées pour les attaques brute force, account takeover et anomalies.

📧 [email protected]


Autres articles