Auth0 कनेक्टर

authenticated user profiles को marketing contacts के रूप में sync करने, authentication events के आधार पर automations trigger करने, और identity एवं access management insights से अपने customer data को समृद्ध करने के लिए Tajo के माध्यम से Auth0 को Brevo से कनेक्ट करें।

अवलोकन

PropertyValue
PlatformAuth0 (by Okta)
CategoryIdentity & Access (Custom)
Setup ComplexityMedium
Official IntegrationNo
Data SyncedUsers, Events, Roles, Identities
Auth MethodMachine-to-Machine OAuth 2.0

विशेषताएं

  • User profile sync - Auth0 user profiles को Brevo contacts से sync करें
  • Authentication events - login, signup, और password reset पर automations trigger करें
  • Role-based segmentation - Auth0 roles और permissions के आधार पर contacts segment करें
  • Social identity data - social login profile जानकारी से contacts को समृद्ध करें
  • Login activity tracking - last login, login count, और device data ट्रैक करें
  • Multi-tenant support - कई Auth0 tenants में users sync करें

पूर्वावश्यकताएं

शुरू करने से पहले, सुनिश्चित करें कि आपके पास हैं:

  1. API access वाला एक Auth0 account
  2. Auth0 में एक Machine-to-Machine application registered
  3. M2M application को दी गई Management API permissions
  4. API access वाला एक Brevo account
  5. connector permissions वाला एक Tajo account

प्रमाणीकरण

Machine-to-Machine OAuth 2.0

Terminal window
# Auth0 Dashboard में एक M2M application बनाएं
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 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 डिफ़ॉल्ट रूप से 24 घंटे के लिए मान्य होता है

API Permissions

अपने M2M application को केवल आवश्यक scopes प्रदान करें: read:users, read:user_idp_tokens, read:roles, और read:logs. आवश्यकता न हो तो write permissions देने से बचें।

कॉन्फ़िगरेशन

बेसिक सेटअप

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 * * *" # हर 4 घंटे में
lists:
all_users: 20
verified_users: 21
social_login: 22

Field Mapping

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 Endpoints

EndpointMethodविवरण
https://{domain}/api/v2/usersGETusers list या search करें
https://{domain}/api/v2/users/{id}GETएक user प्राप्त करें
https://{domain}/api/v2/users/{id}PATCHuser metadata अपडेट करें
https://{domain}/api/v2/users/{id}/rolesGETuser roles प्राप्त करें
https://{domain}/api/v2/rolesGETसभी roles list करें
https://{domain}/api/v2/logsGETlog events प्राप्त करें
https://{domain}/api/v2/stats/active-usersGETactive users count प्राप्त करें
https://{domain}/api/v2/stats/dailyGETdaily stats प्राप्त करें
https://{domain}/oauth/tokenPOSTaccess 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
});

Users को Brevo से Sync करें

// Auth0 users के माध्यम से paginate करें
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 के माध्यम से Authentication Events ट्रैक करें

// Auth0 Log Stream webhook सेट करें
// Auth0 Dashboard > Monitoring > Streams में कॉन्फ़िगर करें
app.post('/webhooks/auth0', async (req, res) => {
// 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': // सफल 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': // सफल signup
await tajo.contacts.sync({
email: log.data.details.email,
attributes: { SIGNUP_DATE: log.data.date },
listIds: [20]
});
break;
case 'sp': // सफल password change
await tajo.events.track({
email: log.data.details.email,
event: 'password_changed'
});
break;
}
}
res.status(200).send('OK');
});

Role-आधारित Segmentation

// segmentation के लिए user roles sync करें
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')
}
});

Rate Limits

Endpoint CategoryLimitनोट्स
Management API50 req/sec (Free)प्रति tenant
Management API100 req/sec (Paid)प्रति tenant
Authentication APIभिन्नplan पर आधारित
Log StreamsReal-timedelivery पर कोई rate limit नहीं
Paginationअधिकतम 50 items/pagepage और per_page params का उपयोग करें

Pagination आवश्यक

Auth0 Management API प्रति page अधिकतम 50 परिणाम लौटाता है। हमेशा page और per_page parameters का उपयोग करके pagination लागू करें। कुल count प्राप्त करने के लिए include_totals=true शामिल करें।

समस्या निवारण

समस्याकारणसमाधान
401 UnauthorizedToken expire हो गयानया M2M token request करें (24h expiry)
403 Forbiddenगायब scopesM2M app को आवश्यक permissions दें
खाली user listSearch query errorv3 engine के लिए Lucene query syntax का उपयोग करें
गायब metadataMetadata सेट नहीं हैuser_metadata और app_metadata की जांच करें
Rate limit 429बहुत अधिक requestsretry headers के साथ backoff लागू करें

Debug Mode

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

सर्वोत्तम प्रथाएं

  1. Log Streams का उपयोग करें - Logs API को poll करने के बजाय real-time event streaming
  2. Pagination लागू करें - बड़े tenants के लिए हमेशा user list queries को paginate करें
  3. M2M tokens cache करें - expiry के निकट तक tokens को reuse करें (24h डिफ़ॉल्ट lifetime)
  4. search engine v3 का उपयोग करें - कुशल user searches के लिए Lucene query syntax का उपयोग करें
  5. केवल verified users sync करें - unverified contacts से बचने के लिए email_verified:true पर filter करें
  6. user metadata का लाभ उठाएं - sync के लिए Auth0 user_metadata में custom attributes store करें

सुरक्षा

  • Machine-to-Machine OAuth - server-to-server auth के लिए client credentials grant
  • Scoped permissions - न्यूनतम आवश्यक Management API scopes प्रदान करें
  • Token rotation - M2M tokens डिफ़ॉल्ट रूप से 24 घंटे के बाद expire होते हैं
  • Log Stream auth - webhook endpoints के लिए bearer token verification का उपयोग करें
  • Tenant isolation - प्रति Auth0 tenant अलग configurations
  • Encrypted transport - सभी API communications के लिए TLS 1.2+

संबंधित संसाधन

Subscribe to updates

developer-docs

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

auto-detect
AI Assistant

Hi! Ask me anything about the docs.