---
title: "Auth0 Konektor"
description: "Kompletan vodič za integraciju Auth0 za sinkronizaciju korisničkih podataka o autentifikaciji, profilima identiteta i pristupnih događaja s Brevom putem Taja."
url: https://tajo.io/hr/docs/connectors/custom/auth0/
markdown: https://tajo.io/hr/docs/connectors/custom/auth0.md
lang: hr-HR
robots: noindex
---

Zatražite rani pristup

Unesite ime i poslovnu adresu e-pošte. Poslat ćemo vam poveznicu za potvrdu zahtjeva za pristup Taju.

# Auth0 Konektor

Status konektora: Planirano Još nije izrađeno. Tajo danas ne pokreće ovaj konektor.

| Izvorno polje | Odredišno polje | Primjer vrijednosti |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

Povežite Auth0 s Brevom putem Taja kako biste sinkronizirali autentificirane korisničke profile kao marketinške kontakte, pokretali automatizacije na temelju događaja autentifikacije i obogatili korisničke podatke uvidima u upravljanje identitetom i pristupom.

## Pregled

| Svojstvo | Vrijednost |
| --- | --- |
| **Platforma** | Auth0 (by Okta) |
| **Kategorija** | Identitet i pristup (Prilagođeno) |
| **Složenost postavljanja** | Srednje |
| **Službena integracija** | Ne |
| **Sinkronizirani podaci** | Korisnici, Događaji, Uloge, Identiteti |
| **Metoda autentifikacije** | Machine-to-Machine OAuth 2.0 |

## Značajke

- **Sinkronizacija korisničkih profila** - Sinkronizirajte Auth0 korisničke profile s Brevo kontaktima
- **Događaji autentifikacije** - Pokrećite automatizacije pri prijavi, registraciji i resetiranju lozinke
- **Segmentacija temeljena na ulogama** - Segmentirajte kontakte na temelju Auth0 uloga i dozvola
- **Podaci o društvenom identitetu** - Obogatite kontakte informacijama profila društvene prijave
- **Praćenje aktivnosti prijave** - Pratite zadnju prijavu, broj prijava i podatke o uređaju
- **Podrška za više stanara** - Sinkronizirajte korisnike kroz više Auth0 stanara

## Preduvjeti

Prije nego što počnete, osigurajte da imate:

1. Auth0 račun s API pristupom
2. Machine-to-Machine aplikaciju registriranu u Auth0
3. Management API dozvole dodijeljene M2M aplikaciji
4. Brevo račun s API pristupom
5. Tajo račun s dozvolama konektora

## Autentifikacija

### Machine-to-Machine OAuth 2.0

```bash
# Stvorite M2M aplikaciju u Auth0 nadzornoj ploči
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
// Dobivanje Management API tokena za pristup
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 prema zadanim postavkama važeći 24 sata
```

API dozvole

Dodijelite samo potrebne opsege vašoj M2M aplikaciji: `read:users`, `read:user_idp_tokens`, `read:roles` i `read:logs`. Izbjegavajte dodjeljivanje dozvola za pisanje osim ako nije potrebno.

## Konfiguracija

### Osnovna konfiguracija

```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 * * *"  # Svakih 4 sata

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

### Mapiranje polja

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

## API krajnje točke

| Krajnja točka | Metoda | Opis |
| --- | --- | --- |
| `https://{domain}/api/v2/users` | GET | Popis ili pretraživanje korisnika |
| `https://{domain}/api/v2/users/{id}` | GET | Dohvaćanje korisnika |
| `https://{domain}/api/v2/users/{id}` | PATCH | Ažuriranje korisničkih metapodataka |
| `https://{domain}/api/v2/users/{id}/roles` | GET | Dohvaćanje korisničkih uloga |
| `https://{domain}/api/v2/roles` | GET | Popis svih uloga |
| `https://{domain}/api/v2/logs` | GET | Dohvaćanje zapisnih događaja |
| `https://{domain}/api/v2/stats/active-users` | GET | Dohvaćanje broja aktivnih korisnika |
| `https://{domain}/api/v2/stats/daily` | GET | Dohvaćanje dnevnih statistika |
| `https://{domain}/oauth/token` | POST | Dobivanje tokena za pristup |

## Primjeri koda

### Inicijalizacija konektora

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

### Sinkronizacija korisnika s Brevom

```javascript
// Paginacija kroz Auth0 korisnike
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;
}
```

### Praćenje događaja autentifikacije putem Log Streamova

```javascript
// Postavljanje Auth0 Log Stream webhookova
// Konfigurirajte u Auth0 Nadzorna ploča > Praćenje > Streamovi

app.post('/webhooks/auth0', async (req, res) => {
  // Provjera zaglavlja autorizacije
  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':   // Uspješna prijava
        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':  // Uspješna registracija
        await tajo.contacts.sync({
          email: log.data.details.email,
          attributes: { SIGNUP_DATE: log.data.date },
          listIds: [20]
        });
        break;
      case 'sp':  // Uspješna promjena lozinke
        await tajo.events.track({
          email: log.data.details.email,
          event: 'password_changed'
        });
        break;
    }
  }

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

### Segmentacija temeljena na ulogama

```javascript
// Sinkronizacija korisničkih uloga za segmentaciju
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')
  }
});
```

## Ograničenja brzine

| Kategorija krajnje točke | Ograničenje | Napomene |
| --- | --- | --- |
| Management API | 50 zah./sek (Besplatni) | Po stanaru |
| Management API | 100 zah./sek (Plaćeni) | Po stanaru |
| Authentication API | Varira | Na temelju plana |
| Log Streams | U stvarnom vremenu | Nema ograničenja brzine isporuke |
| Paginacija | Maks. 50 stavki/stranica | Koristite parametre `page` i `per_page` |

Paginacija je obavezna

Auth0 Management API vraća maksimalno 50 rezultata po stranici. Uvijek implementirajte paginaciju koristeći parametre `page` i `per_page`. Uključite `include_totals=true` za dobivanje ukupnog broja.

## Rješavanje problema

| Problem | Uzrok | Rješenje |
| --- | --- | --- |
| 401 Unauthorized | Token je istekao | Zatražite novi M2M token (istek 24h) |
| 403 Forbidden | Nedostaju opsezi | Dodijelite potrebne dozvole M2M aplikaciji |
| Prazan popis korisnika | Greška u upitu pretrage | Koristite Lucene sintaksu upita za v3 engine |
| Nedostaju metapodaci | Metapodaci nisu postavljeni | Provjerite user\_metadata i app\_metadata |
| Ograničenje brzine 429 | Previše zahtjeva | Implementirajte povratak s header-ima za ponovni pokušaj |

### Način otklanjanja grešaka

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

## Preporučene prakse

1. **Koristite Log Streamove** - Streaming događaja u stvarnom vremenu umjesto anketiranja Logs API-ja
2. **Implementirajte paginaciju** - Uvijek paginirajte upite popisa korisnika za velike stanare
3. **Predmemorirajte M2M tokene** - Ponovo koristite tokene do blizu isteka (zadani rok trajanja 24h)
4. **Koristite search engine v3** - Koristite Lucene sintaksu upita za učinkovito pretraživanje korisnika
5. **Sinkronizirajte samo verificirane korisnike** - Filtrirajte po `email_verified:true` da izbjegnete neverificirane kontakte
6. **Iskoristite korisničke metapodatke** - Pohranite prilagođene atribute u Auth0 user\_metadata za sinkronizaciju

## Sigurnost

- **Machine-to-Machine OAuth** - Dodjela korisničkih vjerodajnica za autentifikaciju server-to-server
- **Opsežne dozvole** - Dodijelite minimalne potrebne Management API opsege
- **Rotacija tokena** - M2M tokeni prema zadanim postavkama istječu nakon 24 sata
- **Log Stream autentifikacija** - Koristite verifikaciju bearer tokena za webhook krajnje točke
- **Izolacija stanara** - Zasebne konfiguracije po Auth0 stanaru
- **Šifrirani transport** - TLS 1.2+ za sve API komunikacije

## Povezani resursi

- [Segment Konektor](https://tajo.io/hr/docs/connectors/custom/segment)
- [Zapier Konektor](https://tajo.io/hr/docs/connectors/custom/zapier)
- [Vještina sinkronizacije korisnika](https://tajo.io/hr/docs/skills/data-sync/customer-sync)
- [Auth0 Management API dokumentacija](https://auth0.com/docs/api/management/v2)
