Auth0 Konektor

Povežite Auth0 s Brevom putem Taja kako biste sinkronizirali autentificirane korisničke profile kao marketinške kontakte, pokretali automatizacije na temelju događaja autentifikacije i obogatili korisničke podatke uvidima u upravljanje identitetom i pristupom.

Pregled

SvojstvoVrijednost
PlatformaAuth0 (by Okta)
KategorijaIdentitet i pristup (Prilagođeno)
Složenost postavljanjaSrednje
Službena integracijaNe
Sinkronizirani podaciKorisnici, Događaji, Uloge, Identiteti
Metoda autentifikacijeMachine-to-Machine OAuth 2.0

Značajke

  • Sinkronizacija korisničkih profila - Sinkronizirajte Auth0 korisničke profile s Brevo kontaktima
  • Događaji autentifikacije - Pokrećite automatizacije pri prijavi, registraciji i resetiranju lozinke
  • Segmentacija temeljena na ulogama - Segmentirajte kontakte na temelju Auth0 uloga i dozvola
  • Podaci o društvenom identitetu - Obogatite kontakte informacijama profila društvene prijave
  • Praćenje aktivnosti prijave - Pratite zadnju prijavu, broj prijava i podatke o uređaju
  • Podrška za više stanara - Sinkronizirajte korisnike kroz više Auth0 stanara

Preduvjeti

Prije nego što počnete, osigurajte da imate:

  1. Auth0 račun s API pristupom
  2. Machine-to-Machine aplikaciju registriranu u Auth0
  3. Management API dozvole dodijeljene M2M aplikaciji
  4. Brevo račun s API pristupom
  5. Tajo račun s dozvolama konektora

Autentifikacija

Machine-to-Machine OAuth 2.0

Terminal window
# Stvorite M2M aplikaciju u Auth0 nadzornoj ploči
export AUTH0_DOMAIN=your-tenant.auth0.com
export AUTH0_CLIENT_ID=your_client_id
export AUTH0_CLIENT_SECRET=your_client_secret
export AUTH0_AUDIENCE=https://your-tenant.auth0.com/api/v2/
// Dobivanje Management API tokena za pristup
const 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 je prema zadanim postavkama važeći 24 sata

API dozvole

Dodijelite samo potrebne opsege vašoj M2M aplikaciji: read:users, read:user_idp_tokens, read:roles i read:logs. Izbjegavajte dodjeljivanje dozvola za pisanje osim ako nije potrebno.

Konfiguracija

Osnovna konfiguracija

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 * * *" # Svakih 4 sata
lists:
all_users: 20
verified_users: 21
social_login: 22

Mapiranje polja

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_ROLE

API krajnje točke

Krajnja točkaMetodaOpis
https://{domain}/api/v2/usersGETPopis ili pretraživanje korisnika
https://{domain}/api/v2/users/{id}GETDohvaćanje korisnika
https://{domain}/api/v2/users/{id}PATCHAžuriranje korisničkih metapodataka
https://{domain}/api/v2/users/{id}/rolesGETDohvaćanje korisničkih uloga
https://{domain}/api/v2/rolesGETPopis svih uloga
https://{domain}/api/v2/logsGETDohvaćanje zapisnih događaja
https://{domain}/api/v2/stats/active-usersGETDohvaćanje broja aktivnih korisnika
https://{domain}/api/v2/stats/dailyGETDohvaćanje dnevnih statistika
https://{domain}/oauth/tokenPOSTDobivanje tokena za pristup

Primjeri koda

Inicijalizacija konektora

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
});

Sinkronizacija korisnika s Brevom

// Paginacija kroz Auth0 korisnike
let 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;
}

Praćenje događaja autentifikacije putem Log Streamova

// Postavljanje Auth0 Log Stream webhookova
// Konfigurirajte u Auth0 Nadzorna ploča > Praćenje > Streamovi
app.post('/webhooks/auth0', async (req, res) => {
// Provjera zaglavlja autorizacije
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': // Uspješna prijava
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': // Uspješna registracija
await tajo.contacts.sync({
email: log.data.details.email,
attributes: { SIGNUP_DATE: log.data.date },
listIds: [20]
});
break;
case 'sp': // Uspješna promjena lozinke
await tajo.events.track({
email: log.data.details.email,
event: 'password_changed'
});
break;
}
}
res.status(200).send('OK');
});

Segmentacija temeljena na ulogama

// Sinkronizacija korisničkih uloga za segmentaciju
const 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')
}
});

Ograničenja brzine

Kategorija krajnje točkeOgraničenjeNapomene
Management API50 zah./sek (Besplatni)Po stanaru
Management API100 zah./sek (Plaćeni)Po stanaru
Authentication APIVariraNa temelju plana
Log StreamsU stvarnom vremenuNema ograničenja brzine isporuke
PaginacijaMaks. 50 stavki/stranicaKoristite parametre page i per_page

Paginacija je obavezna

Auth0 Management API vraća maksimalno 50 rezultata po stranici. Uvijek implementirajte paginaciju koristeći parametre page i per_page. Uključite include_totals=true za dobivanje ukupnog broja.

Rješavanje problema

ProblemUzrokRješenje
401 UnauthorizedToken je istekaoZatražite novi M2M token (istek 24h)
403 ForbiddenNedostaju opseziDodijelite potrebne dozvole M2M aplikaciji
Prazan popis korisnikaGreška u upitu pretrageKoristite Lucene sintaksu upita za v3 engine
Nedostaju metapodaciMetapodaci nisu postavljeniProvjerite user_metadata i app_metadata
Ograničenje brzine 429Previše zahtjevaImplementirajte povratak s header-ima za ponovni pokušaj

Način otklanjanja grešaka

connectors:
auth0:
debug: true
log_level: verbose
log_sync: true

Preporučene prakse

  1. Koristite Log Streamove - Streaming događaja u stvarnom vremenu umjesto anketiranja Logs API-ja
  2. Implementirajte paginaciju - Uvijek paginirajte upite popisa korisnika za velike stanare
  3. Predmemorirajte M2M tokene - Ponovo koristite tokene do blizu isteka (zadani rok trajanja 24h)
  4. Koristite search engine v3 - Koristite Lucene sintaksu upita za učinkovito pretraživanje korisnika
  5. Sinkronizirajte samo verificirane korisnike - Filtrirajte po email_verified:true da izbjegnete neverificirane kontakte
  6. Iskoristite korisničke metapodatke - Pohranite prilagođene atribute u Auth0 user_metadata za sinkronizaciju

Sigurnost

  • Machine-to-Machine OAuth - Dodjela korisničkih vjerodajnica za autentifikaciju server-to-server
  • Opsežne dozvole - Dodijelite minimalne potrebne Management API opsege
  • Rotacija tokena - M2M tokeni prema zadanim postavkama istječu nakon 24 sata
  • Log Stream autentifikacija - Koristite verifikaciju bearer tokena za webhook krajnje točke
  • Izolacija stanara - Zasebne konfiguracije po Auth0 stanaru
  • Šifrirani transport - TLS 1.2+ za sve API komunikacije

Povezani resursi

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
AI asistent

Bok! Pitajte me o dokumentaciji.