---
title: "Konektor Auth0"
description: "Kompletní průvodce integrací Auth0 pro synchronizaci dat ověřování uživatelů, identitních profilů a přístupových událostí s Brevo přes Tajo."
url: https://tajo.io/cz/docs/connectors/custom/auth0/
markdown: https://tajo.io/cz/docs/connectors/custom/auth0.md
lang: cs-CZ
robots: noindex
---

Požádejte o přednostní přístup

Zadejte své jméno a pracovní e-mailovou adresu. Pošleme vám odkaz pro potvrzení žádosti o přístup k Tajo.

# Konektor Auth0

Stav konektoru: Plánováno Zatím nevytvořeno. Tajo tento konektor dnes neprovozuje.

| Zdrojové pole | Cílové pole | Ukázková hodnota |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

Propojte Auth0 s Brevo přes Tajo pro synchronizaci ověřených profilů uživatelů jako marketingových kontaktů, spouštění automatizací na základě autentizačních událostí a obohacení zákaznických dat o poznatky ze správy identit a přístupu.

## Přehled

| Vlastnost | Hodnota |
| --- | --- |
| **Platforma** | Auth0 (od Okta) |
| **Kategorie** | Identita a přístup (Vlastní) |
| **Složitost nastavení** | Střední |
| **Oficiální integrace** | Ne |
| **Synchronizovaná data** | Uživatelé, Události, Role, Identity |
| **Metoda ověření** | Machine-to-Machine OAuth 2.0 |

## Funkce

- **Synchronizace profilů uživatelů** – Synchronizujte profily uživatelů Auth0 do kontaktů Brevo
- **Autentizační události** – Spouštějte automatizace při přihlášení, registraci a resetování hesla
- **Segmentace podle rolí** – Segmentujte kontakty na základě rolí a oprávnění Auth0
- **Data sociálních identit** – Obohacujte kontakty o informace z profilů sociálního přihlášení
- **Sledování přihlašovací aktivity** – Sledujte poslední přihlášení, počet přihlášení a data zařízení
- **Podpora více tenantů** – Synchronizujte uživatele napříč více tenanty Auth0

## Předpoklady

Než začnete, ujistěte se, že máte:

1. Účet Auth0 s přístupem k API
2. Aplikaci Machine-to-Machine zaregistrovanou v Auth0
3. Oprávnění Management API udělená M2M aplikaci
4. Účet Brevo s přístupem k API
5. Účet Tajo s oprávněními ke konektoru

## Ověření

### Machine-to-Machine OAuth 2.0

```bash
# Vytvoření M2M aplikace v řídicím panelu Auth0
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/
```

```javascript
// Získání přístupového tokenu 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();
// Token je platný standardně 24 hodin
```

Oprávnění API

Udělte své M2M aplikaci pouze požadované rozsahy: `read:users`, `read:user_idp_tokens`, `read:roles` a `read:logs`. Vyhněte se udělování oprávnění k zápisu, pokud nejsou potřeba.

## Konfigurace

### Základní nastavení

```yaml
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 * * *"  # Každé 4 hodiny

    lists:
      all_users: 20
      verified_users: 21
      social_login: 22
```

### Mapování polí

```yaml
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
```

## Koncové body API

| Koncový bod | Metoda | Popis |
| --- | --- | --- |
| `https://{domain}/api/v2/users` | GET | Výpis nebo vyhledávání uživatelů |
| `https://{domain}/api/v2/users/{id}` | GET | Získání uživatele |
| `https://{domain}/api/v2/users/{id}` | PATCH | Aktualizace metadat uživatele |
| `https://{domain}/api/v2/users/{id}/roles` | GET | Získání rolí uživatele |
| `https://{domain}/api/v2/roles` | GET | Výpis všech rolí |
| `https://{domain}/api/v2/logs` | GET | Získání událostí protokolu |
| `https://{domain}/api/v2/stats/active-users` | GET | Získání počtu aktivních uživatelů |
| `https://{domain}/api/v2/stats/daily` | GET | Získání denní statistiky |
| `https://{domain}/oauth/token` | POST | Získání přístupového tokenu |

## Příklady kódu

### Inicializace konektoru

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

### Synchronizace uživatelů do Brevo

```javascript
// Stránkování přes uživatele 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;
}
```

### Sledování autentizačních událostí přes Log Streams

```javascript
// Nastavení webhooku Log Stream Auth0
// Konfigurujte v řídicím panelu Auth0 > Monitoring > Streams

app.post('/webhooks/auth0', async (req, res) => {
  // Ověření autorizační hlavičky
  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':   // Úspěšné přihlášení
        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':  // Úspěšná registrace
        await tajo.contacts.sync({
          email: log.data.details.email,
          attributes: { SIGNUP_DATE: log.data.date },
          listIds: [20]
        });
        break;
      case 'sp':  // Úspěšná změna hesla
        await tajo.events.track({
          email: log.data.details.email,
          event: 'password_changed'
        });
        break;
    }
  }

  res.status(200).send('OK');
});
```

### Segmentace podle rolí

```javascript
// Synchronizace rolí uživatelů pro segmentaci
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')
  }
});
```

## Omezení rychlosti

| Kategorie koncového bodu | Limit | Poznámky |
| --- | --- | --- |
| Management API | 50 požadavků/s (Free) | Na tenanta |
| Management API | 100 požadavků/s (Placený) | Na tenanta |
| Authentication API | Různé | Závisí na plánu |
| Log Streams | Real-time | Žádný limit rychlosti doručování |
| Stránkování | Max 50 položek/stránku | Používejte parametry `page` a `per_page` |

Vyžadováno stránkování

Management API Auth0 vrací maximálně 50 výsledků na stránku. Vždy implementujte stránkování pomocí parametrů `page` a `per_page`. Zahrňte `include_totals=true` pro získání celkového počtu.

## Řešení problémů

| Problém | Příčina | Řešení |
| --- | --- | --- |
| 401 Unauthorized | Token vypršel | Požádejte o nový M2M token (platnost 24 h) |
| 403 Forbidden | Chybějící rozsahy | Udělte požadovaná oprávnění M2M aplikaci |
| Prázdný seznam uživatelů | Chyba vyhledávacího dotazu | Používejte syntaxi Lucene pro vyhledávací engine v3 |
| Chybějící metadata | Metadata nejsou nastavena | Zkontrolujte user\_metadata a app\_metadata |
| Limit rychlosti 429 | Příliš mnoho požadavků | Implementujte zpětné odběrání s hlavičkami opakování |

### Režim ladění

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

## Osvědčené postupy

1. **Používejte Log Streams** – Real-time streamování událostí místo pollování Logs API
2. **Implementujte stránkování** – Vždy stránkujte dotazy na seznam uživatelů pro velké tenanty
3. **Ukládejte M2M tokeny do mezipaměti** – Znovu používejte tokeny dokud se nepřiblíží vypršení (výchozí životnost 24 h)
4. **Používejte search engine v3** – Používejte syntaxi Lucene pro efektivní vyhledávání uživatelů
5. **Synchronizujte pouze ověřené uživatele** – Filtrujte na `email_verified:true` pro vyloučení neověřených kontaktů
6. **Využívejte metadata uživatelů** – Ukládejte vlastní atributy v user\_metadata Auth0 pro synchronizaci

## Zabezpečení

- **Machine-to-Machine OAuth** – Grant klientských přihlašovacích údajů pro autentizaci server-server
- **Rozsahová oprávnění** – Udělte minimální požadované rozsahy Management API
- **Rotace tokenů** – M2M tokeny vypršejí standardně po 24 hodinách
- **Ověření Log Stream** – Používejte ověření bearer tokenem pro webhookové koncové body
- **Izolace tenantů** – Oddělené konfigurace na tenanta Auth0
- **Šifrovaný přenos** – TLS 1.2+ pro veškerou komunikaci API

## Související zdroje

- [Konektor Segment](https://tajo.io/cz/docs/connectors/custom/segment)
- [Konektor Zapier](https://tajo.io/cz/docs/connectors/custom/zapier)
- [Dovednost synchronizace zákazníků](https://tajo.io/cz/docs/skills/data-sync/customer-sync)
- [Dokumentace Auth0 Management API](https://auth0.com/docs/api/management/v2)
