Auth0-kobling
Koblingsstatus: Planlagt Ikke bygget ennå. Tajo kjører ikke denne koblingen i dag.
Illustrasjon · eksempeldata
Eksempel på synkronisering
Kilde
Auth0
Koblingsstatus: Planlagt
Mål
Det andre verktøyet ditt
Koblingsstatus: Eget verktøy
Feltkobling
| Kildefelt | Målfelt | Eksempelverdi |
|---|---|---|
record.id | source_id | record_1042 |
record.updated_at | updated_at | 2026-10-18T08:00:00Z |
record.value | value | sample_value |
- Utkast
- Se gjennom én oppføring
- Godkjenn denne versjonen
Status gjelder hver enkelt kobling og garanterer ikke at denne synkroniseringen er klar. Feltene er illustrative. Kontroller faktisk skjema og tillatelser før synkroniseringen kjører.
Koble Auth0 til Brevo via Tajo for å synkronisere autentiserte brukerprofiler som markedsføringskontakter, utløse automatiseringer basert på autentiseringshendelser og berike kundedataene dine med identitets- og tilgangsinnsikt.
Oversikt
| Egenskap | Verdi |
|---|---|
| Plattform | Auth0 (av Okta) |
| Kategori | Identitet og tilgang (Custom) |
| Oppsettskompleksitet | Middels |
| Offisiell integrasjon | Nei |
| Synkroniserte data | Brukere, hendelser, roller, identiteter |
| Autentiseringsmetode | Machine-to-Machine OAuth 2.0 |
Funksjoner
- Synkronisering av brukerprofil - Synkroniser Auth0-brukerprofiler til Brevo-kontakter
- Autentiseringshendelser - Utløs automatiseringer ved innlogging, registrering og tilbakestilling av passord
- Rollebasert segmentering - Segmenter kontakter basert på Auth0-roller og -tillatelser
- Data fra sosiale identiteter - Berik kontakter med profilinformasjon fra sosiale innlogginger
- Sporing av innloggingsaktivitet - Spor siste innlogging, antall innlogginger og enhetsdata
- Multi-tenant-støtte - Synkroniser brukere på tvers av flere Auth0-tenants
Forutsetninger
Før du begynner, sørg for at du har:
- En Auth0-konto med API-tilgang
- En Machine-to-Machine-applikasjon registrert i Auth0
- Management API-tillatelser gitt til M2M-applikasjonen
- En Brevo-konto med API-tilgang
- En Tajo-konto med koblingstillatelser
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-tillatelser
Gi kun nødvendige scopes til M2M-applikasjonen din: read:users, read:user_idp_tokens, read:roles og read:logs. Unngå å gi skrivetillatelser med mindre det er nødvendig.
Konfigurasjon
Grunnleggende oppsett
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: 22Feltmapping
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-endepunkter
| Endepunkt | Metode | Beskrivelse |
|---|---|---|
https://{domain}/api/v2/users | GET | List eller søk brukere |
https://{domain}/api/v2/users/{id} | GET | Hent en bruker |
https://{domain}/api/v2/users/{id} | PATCH | Oppdater brukermetadata |
https://{domain}/api/v2/users/{id}/roles | GET | Hent brukerroller |
https://{domain}/api/v2/roles | GET | List alle roller |
https://{domain}/api/v2/logs | GET | Hent logghendelser |
https://{domain}/api/v2/stats/active-users | GET | Hent antall aktive brukere |
https://{domain}/api/v2/stats/daily | GET | Hent daglig statistikk |
https://{domain}/oauth/token | POST | Hent access token |
Kodeeksempler
Initialiser kobling
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});Synkroniser brukere til 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;}Spor autentiseringshendelser 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');});Rollebasert 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') }});Hastighetsgrenser
| Endepunktskategori | Grense | Merknader |
|---|---|---|
| Management API | 50 req/sek (Free) | Per tenant |
| Management API | 100 req/sek (Paid) | Per tenant |
| Authentication API | Varierer | Basert på plan |
| Log Streams | Sanntid | Ingen hastighetsgrense på levering |
| Paginering | Maks 50 elementer/side | Bruk page- og per_page-parametere |
Paginering påkrevd
Auth0 Management API returnerer maksimalt 50 resultater per side. Implementer alltid paginering med parametrene page og per_page. Inkluder include_totals=true for å få totalantallet.
Feilsøking
| Problem | Årsak | Løsning |
|---|---|---|
| 401 Unauthorized | Token utløpt | Be om ny M2M-token (24t utløp) |
| 403 Forbidden | Manglende scopes | Gi påkrevde tillatelser til M2M-app |
| Tom brukerliste | Feil i søkespørringen | Bruk Lucene-spørresyntaks for v3-motor |
| Manglende metadata | Metadata ikke satt | Sjekk user_metadata og app_metadata |
| Hastighetsgrense 429 | For mange forespørsler | Implementer backoff med retry-headere |
Feilsøkingsmodus
connectors: auth0: debug: true log_level: verbose log_sync: trueBeste praksis
- Bruk Log Streams - Sanntids hendelses-streaming i stedet for polling av Logs API
- Implementer paginering - Paginér alltid brukerlistespørringer for store tenants
- Cache M2M-tokens - Gjenbruk tokens til nær utløp (24t standard levetid)
- Bruk search engine v3 - Bruk Lucene-spørresyntaks for effektive brukersøk
- Synkroniser kun verifiserte brukere - Filtrer på
email_verified:truefor å unngå ubekreftede kontakter - Utnytt brukermetadata - Lagre egendefinerte attributter i Auth0 user_metadata for synkronisering
Sikkerhet
- Machine-to-Machine OAuth - Client credentials grant for server-til-server-autentisering
- Scopede tillatelser - Gi minimum nødvendige Management API-scopes
- Token-rotering - M2M-tokens utløper etter 24 timer som standard
- Log Stream-autentisering - Bruk bearer token-verifisering for webhook-endepunkter
- Tenant-isolasjon - Separate konfigurasjoner per Auth0-tenant
- Kryptert transport - TLS 1.2+ for all API-kommunikasjon