Auth0 کنیکٹر

توثیق شدہ صارف پروفائلز کو مارکیٹنگ رابطوں کے طور پر سنک کرنے، توثیقی ایونٹس کی بنیاد پر آٹومیشنز کو متحرک کرنے، اور شناخت اور رسائی کے انتظام کی بصیرتوں کے ساتھ اپنے کسٹمر ڈیٹا کو بہتر بنانے کے لیے Tajo کے ذریعے Auth0 کو Brevo سے منسلک کریں۔

جائزہ

خاصیتقدر
پلیٹ فارمAuth0 (Okta کی جانب سے)
زمرہشناخت اور رسائی (حسب ضرورت)
سیٹ اپ کی پیچیدگیمعتدل
آفیشل انٹیگریشننہیں
سنک شدہ ڈیٹاصارفین، ایونٹس، رولز، شناختیں
توثیقی طریقہMachine-to-Machine OAuth 2.0

خصوصیات

  • صارف پروفائل سنک - Auth0 صارف پروفائلز کو Brevo رابطوں سے سنک کریں
  • توثیقی ایونٹس - لاگ ان، سائن اپ، اور پاس ورڈ ری سیٹ پر آٹومیشنز کو متحرک کریں
  • رول پر مبنی سیگمنٹیشن - Auth0 رولز اور اجازتوں کی بنیاد پر رابطوں کو سیگمنٹ کریں
  • سوشل شناختی ڈیٹا - سوشل لاگ ان پروفائل معلومات سے رابطوں کو بہتر بنائیں
  • لاگ ان سرگرمی ٹریکنگ - آخری لاگ ان، لاگ ان کاؤنٹ، اور ڈیوائس ڈیٹا ٹریک کریں
  • ملٹی-ٹینینٹ سپورٹ - متعدد Auth0 ٹینینٹس میں صارفین کو سنک کریں

ضروریات

شروع کرنے سے پہلے، یقینی بنائیں کہ آپ کے پاس ہے:

  1. API رسائی کے ساتھ Auth0 اکاؤنٹ
  2. Auth0 میں رجسٹرڈ Machine-to-Machine ایپلی کیشن
  3. M2M ایپلی کیشن کو دی گئی Management API اجازتیں
  4. API رسائی کے ساتھ Brevo اکاؤنٹ
  5. کنیکٹر اجازتوں کے ساتھ Tajo اکاؤنٹ

توثیق

Machine-to-Machine OAuth 2.0

Terminal window
# Auth0 ڈیش بورڈ میں M2M ایپلی کیشن بنائیں
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/
// Management API رسائی ٹوکن حاصل کریں
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();
// ٹوکن ڈیفالٹ کے طور پر 24 گھنٹے کے لیے درست ہے

API اجازتیں

اپنی 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

API اینڈ پوائنٹس

اینڈ پوائنٹطریقہتفصیل
https://{domain}/api/v2/usersGETصارفین کی فہرست یا تلاش
https://{domain}/api/v2/users/{id}GETایک صارف حاصل کریں
https://{domain}/api/v2/users/{id}PATCHصارف میٹا ڈیٹا اپ ڈیٹ کریں
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رسائی ٹوکن حاصل کریں

کوڈ مثالیں

کنیکٹر کو شروع کریں

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 سے سنک کریں

// Auth0 صارفین کے ذریعے پیجینیٹ کریں
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 کے ذریعے توثیقی ایونٹس ٹریک کریں

// Auth0 Log Stream webhook سیٹ اپ کریں
// Auth0 ڈیش بورڈ > Monitoring > Streams میں کنفیگر کریں
app.post('/webhooks/auth0', async (req, res) => {
// authorization ہیڈر کی تصدیق کریں
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': // کامیاب لاگ ان
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': // کامیاب سائن اپ
await tajo.contacts.sync({
email: log.data.details.email,
attributes: { SIGNUP_DATE: log.data.date },
listIds: [20]
});
break;
case 'sp': // کامیاب پاس ورڈ تبدیلی
await tajo.events.track({
email: log.data.details.email,
event: 'password_changed'
});
break;
}
}
res.status(200).send('OK');
});

رول پر مبنی سیگمنٹیشن

// سیگمنٹیشن کے لیے صارف کے رولز سنک کریں
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')
}
});

ریٹ کی حدود

اینڈ پوائنٹ کا زمرہحدنوٹس
Management API50 req/sec (Free)فی ٹینینٹ
Management API100 req/sec (Paid)فی ٹینینٹ
Authentication APIمتغیرپلان پر منحصر
Log Streamsریئل ٹائمڈیلیوری پر کوئی ریٹ کی حد نہیں
پیجینیشنفی صفحہ زیادہ سے زیادہ 50 آئٹمزpage اور per_page پیرامز استعمال کریں

پیجینیشن ضروری

Auth0 Management API فی صفحہ زیادہ سے زیادہ 50 نتائج واپس کرتا ہے۔ ہمیشہ page اور per_page پیرامز کا استعمال کرتے ہوئے پیجینیشن نافذ کریں۔ کل تعداد حاصل کرنے کے لیے include_totals=true شامل کریں۔

مسائل کا سراغ

مسئلہوجہحل
401 Unauthorizedٹوکن کی میعاد ختمنیا M2M ٹوکن درخواست کریں (24 گھنٹے کی میعاد)
403 Forbiddenاسکوپس غائبM2M ایپ کو ضروری اجازتیں دیں
خالی صارف فہرستتلاش کی استفسار کی خرابیv3 انجن کے لیے Lucene query syntax استعمال کریں
غائب میٹا ڈیٹامیٹا ڈیٹا سیٹ نہیںuser_metadata اور app_metadata چیک کریں
ریٹ کی حد 429بہت زیادہ درخواستیںری ٹرائی ہیڈرز کے ساتھ بیک آف نافذ کریں

ڈیبگ موڈ

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

بہترین طریقے

  1. Log Streams استعمال کریں - Logs API کی پولنگ کے بجائے ریئل ٹائم ایونٹ اسٹریمنگ
  2. پیجینیشن نافذ کریں - بڑے ٹینینٹس کے لیے ہمیشہ صارف فہرست کی استفسار کو پیجینیٹ کریں
  3. M2M ٹوکنز کیشے کریں - میعاد ختم ہونے کے قریب تک ٹوکنز کا دوبارہ استعمال کریں (ڈیفالٹ 24 گھنٹے کی عمر)
  4. search engine v3 استعمال کریں - موثر صارف تلاش کے لیے Lucene query syntax استعمال کریں
  5. صرف تصدیق شدہ صارفین کو سنک کریں - غیر تصدیق شدہ رابطوں سے بچنے کے لیے email_verified:true پر فلٹر کریں
  6. صارف میٹا ڈیٹا کا فائدہ اٹھائیں - سنک کے لیے Auth0 user_metadata میں حسب ضرورت خصوصیات محفوظ کریں

سیکیورٹی

  • Machine-to-Machine OAuth - سرور ٹو سرور توثیق کے لیے client credentials grant
  • محدود اجازتیں - کم از کم ضروری Management API اسکوپس دیں
  • ٹوکن کی گردش - M2M ٹوکنز ڈیفالٹ کے طور پر 24 گھنٹے بعد ختم ہو جاتے ہیں
  • Log Stream توثیق - ویب ہک اینڈ پوائنٹس کے لیے bearer token verification استعمال کریں
  • ٹینینٹ تنہائی - فی Auth0 ٹینینٹ علیحدہ کنفیگریشنز
  • خفیہ کردہ ٹرانسپورٹ - تمام API مواصلات کے لیے TLS 1.2+

متعلقہ وسائل

Subscribe to updates

developer-docs

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

auto-detect
AI معاون

السلام علیکم! دستاویزات کے بارے میں کچھ بھی پوچھیں۔