Auth0-koppling
Kopplingens status: Planerad Inte byggd än. Tajo kör inte den här kopplingen i dag.
Illustration · exempeldata
Exempel på synkronisering
Källa
Auth0
Kopplingens status: Planerad
Mål
Ditt andra verktyg
Kopplingens status: Eget verktyg
Fältmappning
| Källfält | Målfält | Exempelvärde |
|---|---|---|
record.id | source_id | record_1042 |
record.updated_at | updated_at | 2026-10-18T08:00:00Z |
record.value | value | sample_value |
- Utkast
- Granska en post
- Godkänn den här versionen
Status gäller varje enskild koppling och garanterar inte att den här synkroniseringen är klar. Fälten är illustrativa. Kontrollera det faktiska schemat och behörigheterna innan synkronisering körs.
Anslut Auth0 till Brevo via Tajo för att synka autentiserade användarprofiler som marknadsföringskontakter, utlösa automationer baserade på autentiseringshändelser och berika din kunddata med insikter om identitet och åtkomsthantering.
Översikt
| Egenskap | Värde |
|---|---|
| Plattform | Auth0 (by Okta) |
| Kategori | Identitet & åtkomst (Anpassad) |
| Installationskomplexitet | Medel |
| Officiell integration | Nej |
| Data som synkas | Användare, händelser, roller, identiteter |
| Autentiseringsmetod | Machine-to-Machine OAuth 2.0 |
Funktioner
- Synkronisering av användarprofiler - Synka Auth0-användarprofiler till Brevo-kontakter
- Autentiseringshändelser - Utlös automationer vid inloggning, registrering och lösenordsåterställning
- Rollbaserad segmentering - Segmentera kontakter baserat på Auth0-roller och behörigheter
- Data från sociala identiteter - Berika kontakter med profildata från social inloggning
- Spårning av inloggningsaktivitet - Följ senaste inloggning, antal inloggningar och enhetsdata
- Stöd för flera tenanter - Synka användare över flera Auth0-tenanter
Förutsättningar
Innan du börjar, se till att du har:
- Ett Auth0-konto med API-åtkomst
- En Machine-to-Machine-applikation registrerad i Auth0
- Management API-behörigheter beviljade till M2M-applikationen
- Ett Brevo-konto med API-åtkomst
- Ett Tajo-konto med kopplingsbehörigheter
Autentisering
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-behörigheter
Bevilja endast nödvändiga scopes till din M2M-applikation: read:users, read:user_idp_tokens, read:roles och read:logs. Undvik att ge skrivbehörigheter om det inte behövs.
Konfiguration
Grundinställning
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: 22Fältmappning
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 | Metod | Beskrivning |
|---|---|---|
https://{domain}/api/v2/users | GET | Lista eller sök användare |
https://{domain}/api/v2/users/{id} | GET | Hämta en användare |
https://{domain}/api/v2/users/{id} | PATCH | Uppdatera användarmetadata |
https://{domain}/api/v2/users/{id}/roles | GET | Hämta användarroller |
https://{domain}/api/v2/roles | GET | Lista alla roller |
https://{domain}/api/v2/logs | GET | Hämta logghändelser |
https://{domain}/api/v2/stats/active-users | GET | Hämta antal aktiva användare |
https://{domain}/api/v2/stats/daily | GET | Hämta daglig statistik |
https://{domain}/oauth/token | POST | Hämta åtkomsttoken |
Kodexempel
Initiera kopplingen
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});Synka användare till 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;}Följ autentiseringshändelser 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');});Rollbaserad segmentering
// 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') }});Hastighetsbegränsningar
| Endpoint-kategori | Gräns | Noteringar |
|---|---|---|
| Management API | 50 förfr./sek (Free) | Per tenant |
| Management API | 100 förfr./sek (Paid) | Per tenant |
| Authentication API | Varierar | Baserat på plan |
| Log Streams | Realtid | Ingen hastighetsbegränsning vid leverans |
| Paginering | Max 50 objekt/sida | Använd parametrarna page och per_page |
Paginering krävs
Auth0 Management API returnerar högst 50 resultat per sida. Implementera alltid paginering med parametrarna page och per_page. Inkludera include_totals=true för att få totalantalet.
Felsökning
| Problem | Orsak | Lösning |
|---|---|---|
| 401 Unauthorized | Token utgången | Begär ny M2M-token (24h giltighet) |
| 403 Forbidden | Saknar scopes | Bevilja nödvändiga behörigheter till M2M-appen |
| Tom användarlista | Fel i sökfråga | Använd Lucene-frågesyntax för v3-motorn |
| Saknad metadata | Metadata ej inställd | Kontrollera user_metadata och app_metadata |
| Hastighetsbegränsning 429 | För många förfrågningar | Implementera backoff med retry-headers |
Felsökningsläge
connectors: auth0: debug: true log_level: verbose log_sync: trueBästa praxis
- Använd Log Streams - Händelsestreaming i realtid istället för att polla Logs-API:et
- Implementera paginering - Paginera alltid användarlistfrågor för stora tenanter
- Cacha M2M-tokens - Återanvänd tokens tills de närmar sig utgång (24h standardlivstid)
- Använd sökmotor v3 - Använd Lucene-frågesyntax för effektiva användarsökningar
- Synka endast verifierade användare - Filtrera på
email_verified:trueför att undvika overifierade kontakter - Utnyttja user_metadata - Lagra anpassade attribut i Auth0 user_metadata för synk
Säkerhet
- Machine-to-Machine OAuth - Client credentials grant för server-till-server-autentisering
- Scopade behörigheter - Bevilja minsta nödvändiga Management API-scopes
- Tokenrotation - M2M-tokens går ut efter 24 timmar som standard
- Log Stream-autentisering - Använd bearer token-verifiering för webhook-endpoints
- Tenantisolering - Separata konfigurationer per Auth0-tenant
- Krypterad transport - TLS 1.2+ för all API-kommunikation