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
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.
Autres articles
- Auth0 et OAuth 2.0 : architecture complète pour comprendre les flux d'autorisation
- OpenID Connect sur Auth0 : ID Token, UserInfo et discovery endpoint expliqués
- Configurer SAML 2.0 avec Auth0 : guide complet pour l'entreprise
- Migrer des Rules vers les Auth0 Actions : guide pas à pas
- Architecture multi-tenant avec Auth0 : organisations, isolation et bonnes pratiques
- Validation des JWT Auth0 : RS256 vs HS256, JWKS et pièges communs
- Concevoir son architecture de tenants Auth0 : dev, staging, prod
- Configurer un domaine personnalisé Auth0 : login.votredomaine.com étape par étape