Auth0 Bağlayıcısı

Auth0’ı Tajo üzerinden Brevo’ya bağlayarak kimliği doğrulanmış kullanıcı profillerini pazarlama kişileri olarak senkronize edin, kimlik doğrulama olaylarına göre otomasyonları tetikleyin ve müşteri verilerinizi kimlik ve erişim yönetimi içgörüleriyle zenginleştirin.

Genel Bakış

ÖzellikDeğer
PlatformAuth0 (Okta tarafından)
KategoriKimlik ve Erişim (Özel)
Kurulum KarmaşıklığıOrta
Resmi EntegrasyonHayır
Senkronize Edilen VeriKullanıcılar, Olaylar, Roller, Kimlikler
Kimlik Doğrulama YöntemiMachine-to-Machine OAuth 2.0

Özellikler

  • Kullanıcı profili senkronizasyonu - Auth0 kullanıcı profillerini Brevo kişilerine senkronize edin
  • Kimlik doğrulama olayları - Giriş, kayıt ve şifre sıfırlama için otomasyonları tetikleyin
  • Rol tabanlı segmentasyon - Kişileri Auth0 rollerine ve izinlerine göre segmentlere ayırın
  • Sosyal kimlik verileri - Kişileri sosyal giriş profil bilgileriyle zenginleştirin
  • Giriş aktivitesi takibi - Son girişi, giriş sayısını ve cihaz verilerini takip edin
  • Çok kiracılı destek - Birden fazla Auth0 kiracısı arasında kullanıcıları senkronize edin

Ön Koşullar

Başlamadan önce sahip olmanız gerekenler:

  1. API erişimi olan bir Auth0 hesabı
  2. Auth0’da kayıtlı bir Machine-to-Machine uygulaması
  3. M2M uygulamasına verilen Management API izinleri
  4. API erişimi olan bir Brevo hesabı
  5. Bağlayıcı izinleri olan bir Tajo hesabı

Kimlik Doğrulama

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 İzinleri

M2M uygulamanıza yalnızca gerekli kapsamları verin: read:users, read:user_idp_tokens, read:roles ve read:logs. Gerekmedikçe yazma izinleri vermekten kaçının.

Yapılandırma

Temel Kurulum

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

Alan Eşleme

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 Uç Noktaları

Uç NoktaYöntemAçıklama
https://{domain}/api/v2/usersGETKullanıcıları listele veya ara
https://{domain}/api/v2/users/{id}GETBir kullanıcıyı getir
https://{domain}/api/v2/users/{id}PATCHKullanıcı meta verilerini güncelle
https://{domain}/api/v2/users/{id}/rolesGETKullanıcı rollerini getir
https://{domain}/api/v2/rolesGETTüm rolleri listele
https://{domain}/api/v2/logsGETLog olaylarını getir
https://{domain}/api/v2/stats/active-usersGETAktif kullanıcı sayısını getir
https://{domain}/api/v2/stats/dailyGETGünlük istatistikleri getir
https://{domain}/oauth/tokenPOSTErişim belirteci al

Kod Örnekleri

Bağlayıcıyı Başlat

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

Kullanıcıları Brevo’ya Senkronize Et

// 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 Üzerinden Kimlik Doğrulama Olaylarını Takip Et

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

Rol Tabanlı Segmentasyon

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

Hız Limitleri

Uç Nokta KategorisiLimitNotlar
Management API50 istek/sn (Ücretsiz)Kiracı başına
Management API100 istek/sn (Ücretli)Kiracı başına
Authentication APIDeğişirPlana göre
Log StreamsGerçek zamanlıTeslimatta hız limiti yok
SayfalamaSayfa başına maksimum 50 öğepage ve per_page parametrelerini kullanın

Sayfalama Gerekli

Auth0 Management API sayfa başına maksimum 50 sonuç döndürür. Her zaman page ve per_page parametrelerini kullanarak sayfalama uygulayın. Toplam sayıyı almak için include_totals=true ekleyin.

Sorun Giderme

SorunNedenÇözüm
401 UnauthorizedBelirtecin süresi dolduYeni M2M belirteci isteyin (24 saat süreli)
403 ForbiddenKapsamlar eksikM2M uygulamasına gerekli izinleri verin
Boş kullanıcı listesiArama sorgusu hatasıv3 motoru için Lucene sorgu söz dizimini kullanın
Meta veriler eksikMeta veri ayarlanmamışuser_metadata ve app_metadata’yı kontrol edin
Hız limiti 429Çok fazla istekYeniden deneme başlıkları ile geri çekilme uygulayın

Hata Ayıklama Modu

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

En İyi Uygulamalar

  1. Log Streams kullanın - Logs API’sini yoklamak yerine gerçek zamanlı olay akışı
  2. Sayfalama uygulayın - Büyük kiracılar için kullanıcı listesi sorgularını her zaman sayfalayın
  3. M2M belirteçlerini önbelleğe alın - Belirteçleri sona erene kadar yeniden kullanın (varsayılan 24 saatlik ömür)
  4. Search engine v3 kullanın - Verimli kullanıcı aramaları için Lucene sorgu söz dizimini kullanın
  5. Yalnızca doğrulanmış kullanıcıları senkronize edin - Doğrulanmamış kişileri önlemek için email_verified:true filtresi uygulayın
  6. Kullanıcı meta verilerinden yararlanın - Senkronize edilecek özel öznitelikleri Auth0 user_metadata’da saklayın

Güvenlik

  • Machine-to-Machine OAuth - Sunucudan sunucuya kimlik doğrulama için client credentials grant
  • Kapsamlandırılmış izinler - Minimum gerekli Management API kapsamlarını verin
  • Belirteç rotasyonu - M2M belirteçleri varsayılan olarak 24 saat sonra sona erer
  • Log Stream kimlik doğrulaması - Webhook uç noktaları için bearer belirteç doğrulaması kullanın
  • Kiracı izolasyonu - Auth0 kiracısı başına ayrı yapılandırmalar
  • Şifreli aktarım - Tüm API iletişimleri için TLS 1.2+

İlgili Kaynaklar

Subscribe to updates

developer-docs

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

auto-detect
AI Asistan

Merhaba! Belgeler hakkında her şeyi sorabilirsiniz.