Auth0-connector
Connectorstatus: Gepland Nog niet gebouwd. Tajo draait deze connector vandaag niet.
Illustratie · voorbeelddata
Voorbeeld van synchronisatie
Bron
Auth0
Connectorstatus: Gepland
Bestemming
Je andere tool
Connectorstatus: Eigen tool
Veldtoewijzing
| Bronveld | Doelveld | Voorbeeldwaarde |
|---|---|---|
record.id | source_id | record_1042 |
record.updated_at | updated_at | 2026-10-18T08:00:00Z |
record.value | value | sample_value |
- Opstellen
- Eén record controleren
- Deze versie goedkeuren
Statussen gelden per connector en garanderen niet dat deze synchronisatie klaar is. De velden zijn illustratief. Controleer het echte schema en de rechten voordat een synchronisatie draait.
Verbind Auth0 met Brevo via Tajo om geauthenticeerde gebruikersprofielen te synchroniseren als marketingcontacten, automatiseringen te triggeren op basis van authenticatie-events en je klantdata te verrijken met identity- en access management-inzichten.
Overzicht
| Eigenschap | Waarde |
|---|---|
| Platform | Auth0 (by Okta) |
| Categorie | Identity & Access (Custom) |
| Setupcomplexiteit | Gemiddeld |
| Officiële integratie | Nee |
| Gesynchroniseerde data | Gebruikers, Events, Rollen, Identiteiten |
| Auth-methode | Machine-to-Machine OAuth 2.0 |
Functies
- Gebruikersprofiel-sync - Synchroniseer Auth0-gebruikersprofielen naar Brevo-contacten
- Authenticatie-events - Trigger automatiseringen bij login, signup en password reset
- Rolgebaseerde segmentatie - Segmenteer contacten op basis van Auth0-rollen en -permissies
- Social identity-data - Verrijk contacten met profielinformatie uit social logins
- Logintracking - Track laatste login, aantal logins en apparaatdata
- Multi-tenant-ondersteuning - Synchroniseer gebruikers over meerdere Auth0-tenants
Vereisten
Voordat je begint, zorg dat je beschikt over:
- Een Auth0-account met API-toegang
- Een Machine-to-Machine-applicatie geregistreerd in Auth0
- Management API-rechten toegekend aan de M2M-applicatie
- Een Brevo-account met API-toegang
- Een Tajo-account met connector-rechten
Authenticatie
Machine-to-Machine OAuth 2.0
# Create an M2M application in Auth0 Dashboardexport AUTH0_DOMAIN=your-tenant.auth0.comexport AUTH0_CLIENT_ID=your_client_idexport AUTH0_CLIENT_SECRET=your_client_secretexport AUTH0_AUDIENCE=https://your-tenant.auth0.com/api/v2/// Get Management API access tokenconst tokenResponse = await fetch( `https://${process.env.AUTH0_DOMAIN}/oauth/token`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ client_id: process.env.AUTH0_CLIENT_ID, client_secret: process.env.AUTH0_CLIENT_SECRET, audience: process.env.AUTH0_AUDIENCE, grant_type: 'client_credentials' }) });
const { access_token } = await tokenResponse.json();// Token is valid for 24 hours by defaultAPI-rechten
Geef je M2M-applicatie alleen de benodigde scopes: read:users, read:user_idp_tokens, read:roles en read:logs. Geef geen schrijfrechten tenzij nodig.
Configuratie
Basisinstelling
connectors: auth0: enabled: true domain: "${AUTH0_DOMAIN}" client_id: "${AUTH0_CLIENT_ID}" client_secret: "${AUTH0_CLIENT_SECRET}" audience: "https://${AUTH0_DOMAIN}/api/v2/"
sync: users: true events: true roles: true schedule: "0 */4 * * *" # Every 4 hours
lists: all_users: 20 verified_users: 21 social_login: 22Veldmapping
field_mapping: email: email given_name: FIRSTNAME family_name: LASTNAME nickname: NICKNAME picture: AVATAR_URL email_verified: EMAIL_VERIFIED logins_count: LOGIN_COUNT last_login: LAST_LOGIN_DATE created_at: SIGNUP_DATE user_metadata.phone: SMS user_metadata.company: COMPANY app_metadata.plan: SUBSCRIPTION_PLAN app_metadata.role: USER_ROLEAPI-endpoints
| Endpoint | Method | Beschrijving |
|---|---|---|
https://{domain}/api/v2/users | GET | Lijst of zoek gebruikers |
https://{domain}/api/v2/users/{id} | GET | Haal een gebruiker op |
https://{domain}/api/v2/users/{id} | PATCH | Werk gebruikersmetadata bij |
https://{domain}/api/v2/users/{id}/roles | GET | Haal gebruikersrollen op |
https://{domain}/api/v2/roles | GET | Lijst alle rollen |
https://{domain}/api/v2/logs | GET | Haal log-events op |
https://{domain}/api/v2/stats/active-users | GET | Haal aantal actieve gebruikers op |
https://{domain}/api/v2/stats/daily | GET | Haal dagelijkse stats op |
https://{domain}/oauth/token | POST | Haal access token op |
Codevoorbeelden
Connector initialiseren
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
await tajo.connectors.connect('auth0', { domain: process.env.AUTH0_DOMAIN, clientId: process.env.AUTH0_CLIENT_ID, clientSecret: process.env.AUTH0_CLIENT_SECRET});Gebruikers synchroniseren naar Brevo
// Paginate through Auth0 userslet page = 0;const perPage = 50;let hasMore = true;
while (hasMore) { const response = await fetch( `https://${domain}/api/v2/users?` + new URLSearchParams({ page: page.toString(), per_page: perPage.toString(), include_totals: 'true', search_engine: 'v3', q: 'email_verified:true' }), { headers: { 'Authorization': `Bearer ${accessToken}` } } );
const { users, total } = await response.json();
for (const user of users) { await tajo.contacts.sync({ email: user.email, attributes: { FIRSTNAME: user.given_name, LASTNAME: user.family_name, LOGIN_COUNT: user.logins_count, LAST_LOGIN_DATE: user.last_login, SIGNUP_DATE: user.created_at, EMAIL_VERIFIED: user.email_verified }, listIds: [20] }); }
page++; hasMore = (page * perPage) < total;}Authenticatie-events tracken via Log Streams
// Set up Auth0 Log Stream webhook// Configure in Auth0 Dashboard > Monitoring > Streams
app.post('/webhooks/auth0', async (req, res) => { // Verify authorization header const authHeader = req.headers.authorization; if (authHeader !== `Bearer ${process.env.AUTH0_WEBHOOK_TOKEN}`) { return res.status(401).send('Unauthorized'); }
const logs = req.body;
for (const log of logs) { switch (log.data.type) { case 's': // Successful login await tajo.events.track({ email: log.data.details.email, event: 'user_login', properties: { ip: log.data.ip, user_agent: log.data.user_agent, connection: log.data.connection } }); break; case 'ss': // Successful signup await tajo.contacts.sync({ email: log.data.details.email, attributes: { SIGNUP_DATE: log.data.date }, listIds: [20] }); break; case 'sp': // Successful password change await tajo.events.track({ email: log.data.details.email, event: 'password_changed' }); break; } }
res.status(200).send('OK');});Rolgebaseerde segmentatie
// Sync user roles for segmentationconst rolesResponse = await fetch( `https://${domain}/api/v2/users/${userId}/roles`, { headers: { 'Authorization': `Bearer ${accessToken}` } });
const roles = await rolesResponse.json();const roleNames = roles.map(r => r.name).join(', ');
await tajo.contacts.update(userEmail, { attributes: { USER_ROLE: roleNames, IS_ADMIN: roles.some(r => r.name === 'admin') }});Rate limits
| Endpointcategorie | Limiet | Opmerkingen |
|---|---|---|
| Management API | 50 req/sec (Free) | Per tenant |
| Management API | 100 req/sec (Paid) | Per tenant |
| Authentication API | Variabel | Afhankelijk van plan |
| Log Streams | Realtime | Geen rate limit op delivery |
| Paginering | Max. 50 items/pagina | Gebruik page- en per_page-params |
Paginering vereist
De Auth0 Management API retourneert maximaal 50 resultaten per pagina. Implementeer altijd paginering met de parameters page en per_page. Voeg include_totals=true toe om het totaal op te halen.
Probleemoplossing
| Probleem | Oorzaak | Oplossing |
|---|---|---|
| 401 Unauthorized | Token verlopen | Vraag nieuw M2M-token aan (verloopt na 24 uur) |
| 403 Forbidden | Ontbrekende scopes | Geef de benodigde rechten aan je M2M-app |
| Lege gebruikerslijst | Fout in zoekquery | Gebruik Lucene query-syntaxis voor v3 engine |
| Ontbrekende metadata | Metadata niet ingesteld | Controleer user_metadata en app_metadata |
| Rate limit 429 | Te veel requests | Implementeer backoff met retry-headers |
Debugmodus
connectors: auth0: debug: true log_level: verbose log_sync: trueBest practices
- Gebruik Log Streams - Realtime event-streaming in plaats van de Logs API te pollen
- Implementeer paginering - Pagineer altijd gebruikerslijst-queries voor grote tenants
- Cache M2M-tokens - Hergebruik tokens tot ze bijna verlopen (24 uur default lifetime)
- Gebruik search engine v3 - Gebruik Lucene query-syntaxis voor efficiënte gebruikerszoekopdrachten
- Synchroniseer alleen geverifieerde gebruikers - Filter op
email_verified:trueom niet-geverifieerde contacten te vermijden - Benut user metadata - Sla custom attributen op in Auth0 user_metadata voor synchronisatie
Beveiliging
- Machine-to-Machine OAuth - Client credentials grant voor server-naar-server auth
- Scoped permissions - Geef minimaal benodigde Management API-scopes
- Token-rotatie - M2M-tokens verlopen standaard na 24 uur
- Log Stream-auth - Gebruik bearer token-verificatie voor webhook-endpoints
- Tenant-isolatie - Aparte configuraties per Auth0-tenant
- Versleuteld transport - TLS 1.2+ voor alle API-communicatie