Σύνδεσμος Auth0

Συνδέστε το Auth0 με το Brevo μέσω Tajo για συγχρονισμό πιστοποιημένων προφίλ χρηστών ως επαφές marketing, ενεργοποίηση αυτοματισμών βάσει εκδηλώσεων πιστοποίησης και εμπλουτισμό των δεδομένων πελατών σας με πληροφορίες διαχείρισης ταυτότητας και πρόσβασης.

Επισκόπηση

ΙδιότηταΤιμή
ΠλατφόρμαAuth0 (by Okta)
ΚατηγορίαΤαυτότητα & Πρόσβαση (Προσαρμοσμένο)
Πολυπλοκότητα ΡύθμισηςΜεσαία
Επίσημη ΕνσωμάτωσηΌχι
Δεδομένα που ΣυγχρονίζονταιΧρήστες, Εκδηλώσεις, Ρόλοι, Ταυτότητες
Μέθοδος ΠιστοποίησηςMachine-to-Machine OAuth 2.0

Χαρακτηριστικά

  • Συγχρονισμός προφίλ χρήστη - Συγχρονισμός προφίλ χρήστη Auth0 σε επαφές Brevo
  • Εκδηλώσεις πιστοποίησης - Ενεργοποίηση αυτοματισμών κατά τη σύνδεση, εγγραφή και επαναφορά κωδικού
  • Τμηματοποίηση βάσει ρόλου - Τμηματοποίηση επαφών βάσει ρόλων και δικαιωμάτων Auth0
  • Δεδομένα κοινωνικής ταυτότητας - Εμπλουτισμός επαφών με πληροφορίες προφίλ κοινωνικής σύνδεσης
  • Παρακολούθηση δραστηριότητας σύνδεσης - Παρακολούθηση τελευταίας σύνδεσης, αριθμού συνδέσεων και δεδομένων συσκευής
  • Υποστήριξη πολλαπλών tenant - Συγχρονισμός χρηστών σε πολλαπλά tenants Auth0

Προαπαιτούμενα

Πριν ξεκινήσετε, βεβαιωθείτε ότι διαθέτετε:

  1. Λογαριασμό Auth0 με πρόσβαση API
  2. Εγγεγραμμένη εφαρμογή Machine-to-Machine στο Auth0
  3. Δικαιώματα Management API παραχωρημένα στην εφαρμογή M2M
  4. Λογαριασμό Brevo με πρόσβαση API
  5. Λογαριασμό Tajo με δικαιώματα συνδέσμου

Πιστοποίηση

Machine-to-Machine OAuth 2.0

Terminal window
# Create an M2M application in Auth0 Dashboard
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/
// Get Management API access token
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 is valid for 24 hours by default

Δικαιώματα API

Παραχωρείτε μόνο τα απαιτούμενα scopes στην εφαρμογή M2M: read:users, read:user_idp_tokens, read:roles και read:logs. Αποφύγετε την παροχή δικαιωμάτων εγγραφής εκτός αν είναι απαραίτητο.

Διαμόρφωση

Βασική Ρύθμιση

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: 22

Αντιστοίχιση Πεδίων

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

Endpoints API

EndpointΜέθοδοςΠεριγραφή
https://{domain}/api/v2/usersGETΛίστα ή αναζήτηση χρηστών
https://{domain}/api/v2/users/{id}GETΛήψη χρήστη
https://{domain}/api/v2/users/{id}PATCHΕνημέρωση metadata χρήστη
https://{domain}/api/v2/users/{id}/rolesGETΛήψη ρόλων χρήστη
https://{domain}/api/v2/rolesGETΛίστα όλων των ρόλων
https://{domain}/api/v2/logsGETΛήψη εκδηλώσεων καταγραφής
https://{domain}/api/v2/stats/active-usersGETΛήψη αριθμού ενεργών χρηστών
https://{domain}/api/v2/stats/dailyGETΛήψη ημερήσιων στατιστικών
https://{domain}/oauth/tokenPOSTΛήψη access token

Παραδείγματα Κώδικα

Αρχικοποίηση Συνδέσμου

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

Συγχρονισμός Χρηστών στο Brevo

// Paginate through Auth0 users
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;
}

Παρακολούθηση Εκδηλώσεων Πιστοποίησης μέσω 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');
});

Τμηματοποίηση Βάσει Ρόλου

// Sync user roles for segmentation
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')
}
});

Όρια Ρυθμού

Κατηγορία EndpointΌριοΣημειώσεις
Management API50 αιτ./δευτ. (Δωρεάν)Ανά tenant
Management API100 αιτ./δευτ. (Επί πληρωμή)Ανά tenant
Authentication APIΠοικίλλειΒάσει πλάνου
Log StreamsΠραγματικός χρόνοςΧωρίς όριο ρυθμού παράδοσης
ΣελιδοποίησηΜέγ. 50 στοιχεία/σελίδαΧρησιμοποιήστε παραμέτρους page και per_page

Απαιτείται Σελιδοποίηση

Το Management API Auth0 επιστρέφει μέγιστο 50 αποτελέσματα ανά σελίδα. Εφαρμόστε πάντα σελιδοποίηση χρησιμοποιώντας τις παραμέτρους page και per_page. Συμπεριλάβετε include_totals=true για να λάβετε τον συνολικό αριθμό.

Αντιμετώπιση Προβλημάτων

ΠρόβλημαΑιτίαΛύση
401 UnauthorizedΤο token έληξεΑίτηση νέου M2M token (λήξη 24ω)
403 ForbiddenΛείπουν scopesΠαραχωρήστε απαιτούμενα δικαιώματα στην εφαρμογή M2M
Κενή λίστα χρηστώνΣφάλμα ερωτήματος αναζήτησηςΧρησιμοποιήστε σύνταξη Lucene query για μηχανή v3
Λείπουν metadataΤα metadata δεν έχουν οριστείΕλέγξτε user_metadata και app_metadata
Όριο ρυθμού 429Υπερβολικά πολλά αιτήματαΕφαρμόστε backoff με headers επανάληψης

Λειτουργία Εντοπισμού Σφαλμάτων

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

Βέλτιστες Πρακτικές

  1. Χρησιμοποιήστε Log Streams - Ροή εκδηλώσεων σε πραγματικό χρόνο αντί polling του Logs API
  2. Εφαρμόστε σελιδοποίηση - Πάντα σελιδοποιείτε ερωτήματα λίστας χρηστών για μεγάλα tenants
  3. Κρατήστε M2M tokens στη cache - Επαναχρησιμοποιήστε tokens μέχρι κοντά στη λήξη (προεπιλογή 24ω)
  4. Χρησιμοποιήστε μηχανή αναζήτησης v3 - Χρησιμοποιήστε σύνταξη Lucene query για αποδοτικές αναζητήσεις χρηστών
  5. Συγχρονίστε μόνο επαληθευμένους χρήστες - Φιλτράρετε βάσει email_verified:true για αποφυγή μη επαληθευμένων επαφών
  6. Αξιοποιήστε user metadata - Αποθηκεύστε προσαρμοσμένα χαρακτηριστικά στο user_metadata Auth0 για συγχρονισμό

Ασφάλεια

  • Machine-to-Machine OAuth - Grant διαπιστευτηρίων client για πιστοποίηση server-to-server
  • Δικαιώματα βάσει scope - Παραχωρήστε ελάχιστα απαιτούμενα scopes Management API
  • Εναλλαγή token - Τα M2M tokens λήγουν μετά από 24 ώρες εξ ορισμού
  • Πιστοποίηση Log Stream - Χρησιμοποιήστε επαλήθευση bearer token για endpoints webhook
  • Απομόνωση tenant - Ξεχωριστές διαμορφώσεις ανά tenant Auth0
  • Κρυπτογραφημένη μεταφορά - TLS 1.2+ για όλες τις επικοινωνίες API

Σχετικοί Πόροι

Subscribe to updates

developer-docs

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

auto-detect
AI Βοηθός

Γεια! Ρωτήστε με οτιδήποτε για την τεκμηρίωση.