> ## Documentation Index
> Fetch the complete documentation index at: https://docs.livingsecurity.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Configurarea integrării Okta

> Conectați Okta la Living Security pentru ciclul de viață al utilizatorilor, autentificare, MFA și activitate administrativă.

export const PublicIntegrationNextSteps = () => <>
    <hr />
    <h2>Resurse conexe</h2>
    <ul>
      <li>
        <a href="/ro/signals/data-sources">Aflați cum devin datele din integrări semnale Human Risk Management</a>
      </li>
      <li>
        <a href="https://www.livingsecurity.com/integrations">Explorați integrările Living Security</a>
      </li>
      <li>
        <a href="https://app.livingsecurity.ai/">Deschideți Living Security Platform</a>
      </li>
      <li>
        <a href="https://www.livingsecurity.com/request-demo/">Solicitați o demonstrație Living Security</a>
      </li>
    </ul>
  </>;

export const EgressIpSafelist = ({system}) => <Note>
    <strong>Adăugați toate cele patru adrese IP de ieșire pentru sincronizare ale Living Security</strong> în lista de permisiuni din{' '}
    {system}. Introduceți fiecare adresă ca gazdă unică, cu <code>/32</code>, dacă {system} așteaptă notația CIDR:
    <br />
    <code>52.34.139.153/32</code>, <code>54.69.127.183/32</code>, <code>44.247.133.183/32</code>,{' '}
    <code>52.26.211.56/32</code>
    <br />
    <br />
    Traficul poate proveni de la oricare dintre cele patru adrese, astfel încât adăugarea în lista de permisiuni a doar unora dintre ele cauzează erori intermitente
    de sincronizare. Aceste patru adrese sunt aceleași în toate regiunile Living Security. Consultați{' '}
    <a href="/ro/integrations/managing/egress-ip-addresses">
      Configurarea adreselor IP de ieșire pentru Integrări
    </a>{' '}
    pentru lista completă, politica de modificare și depanare.
  </Note>;

export const ConnectInPlatform = ({tile, children}) => <Step title="Introduceți credențialele în Living Security Platform">
    <p>
      Se efectuează de persoana care deține acces la Living Security — proprietarul programului sau
      administratorul de sistem, dacă a fost invitat (configurare delegată).
    </p>
    <ol>
      <li>
        Accesați <strong>Setări → Integrari → Catalog</strong>, găsiți cardul{' '}
        <strong>{tile}</strong> și faceți clic pe <strong>Conectare</strong>.
      </li>
      <li>
        Completați câmpurile de mai jos, apoi faceți clic pe <strong>Conectare</strong>.
      </li>
    </ol>
    {children}
  </Step>;

## Prezentare generală

Okta poate furniza activitate normalizată privind ciclul de viață al utilizatorilor, autentificarea, MFA și activitatea administrativă. Exemplele analizate includ:

* `account.locked` — cont blocat
* `mfa.factor.activated` — activează factori MFA suplimentari
* `auth.login.failed` — eșuează la autentificare

Ambele metode de conectare citesc aceleași două fluxuri — directorul de utilizatori (`/api/v1/users`) și jurnalul de sistem (`/api/v1/logs`). Consultați [cum devin datele de integrare semnale](/ro/signals/data-sources).

## Alegeți o metodă de conectare

| | **Okta (SSWS)** | **Okta (OAuth 2.0)** |
| - | - | - |
| Credențiale | Un token API pe care îl creați în Admin Console | Un ID client și un JWK privat pe care le generați și le înregistrați |
| Configurare | Trei pași, fără material criptografic de generat | Nouă pași, inclusiv o pereche de chei RSA |
| Rol de administrator necesar | Administrator cu drepturi de citire (read-only), atribuit proprietarului token-ului | Administrator cu drepturi de citire (read-only), atribuit aplicației |
| Durata de viață a token-ului | Se dezactivează după 30 de zile fără utilizare | Nu expiră; rotirea perechii de chei vă revine dumneavoastră |
| Utilizați când | Aceasta este calea recomandată pentru majoritatea organizațiilor | Politica dumneavoastră de securitate interzice token-urile API cu durată lungă de viață |

Ambele metode necesită același acces, deci alegerea ține de gestionarea credențialelor, nu de ceea ce poate citi platforma.

***

## Opțiunea A — Token API (SSWS)

*Recomandat.*

### Ce are nevoie Living Security

| Credențiale | Descriere |
| - | - |
| **Cheie API** | Un token API Okta. Dialogul de conectare etichetează acest câmp **Cheie API** |
| **Subdomeniu tenant** | `<tenant>` din `<tenant>.okta.com` — doar subdomeniul, nu URL-ul complet |

### Cerințe preliminare

* Trebuie să fiți **Super Administrator** în Okta pentru a crea un utilizator de cont de serviciu, a atribui roluri de administrator și a crea token-uri API.

<Steps>
  <Step title="Creați un utilizator care să dețină token-ul">
    Un token API Okta are permisiunile utilizatorului care l-a creat și nu mai funcționează dacă acel utilizator este dezactivat. Creați un cont de serviciu dedicat în loc să utilizați un cont personal de administrator, astfel încât conexiunea să reziste schimbărilor de personal.

    1. În Admin Console, accesați **Directory** → **People**.
    2. Faceți clic pe **Add person** și creați un utilizator precum `svc-livingsecurity@yourcompany.com`.
    3. Activați contul.
  </Step>

  <Step title="Atribuiți rolul de administrator cu drepturi de citire">
    Platforma doar citește. Acordarea de drepturi mai mari decât cele de citire oferă token-ului permisiuni pe care nu le utilizează niciodată.

    1. Accesați **Security** → **Administrators**.
    2. Faceți clic pe **Add administrator** și selectați utilizatorul din pasul anterior.
    3. Atribuiți rolul **Read-only Administrator**.
    4. Save.

    <Note>
      Fără un rol de administrator, apelurile către Okta Management API reușesc cu `200 OK` și returnează o listă goală. Nu există `403` care să vă indice că rolul lipsește — fluxurile rămân pur și simplu goale.
    </Note>
  </Step>

  <Step title="Creați token-ul API">
    1. Conectați-vă la Admin Console **ca utilizator al contului de serviciu** din pasul 1. Token-ul moștenește drepturile contului care îl creează.
    2. Accesați **Security** → **API** și deschideți fila **Tokens**.
    3. Faceți clic pe **Create token**, denumiți-l, de exemplu `Living Security Platform`, apoi faceți clic pe **Create token**.
    4. Copiați acum valoarea token-ului — Okta o afișează o singură dată.

    <Warning>
      Okta dezactivează un token API după **30 de zile fără utilizare**. Sincronizările din această integrare rulează cel puțin o dată pe zi, deci o conexiune activă își menține în viață propriul token. O conexiune lăsată în pauză o lună necesită un token nou.
    </Warning>

    <EgressIpSafelist system="Okta" />

    <Note>
      Lista de adrese de mai sus este relevantă doar dacă organizația dumneavoastră Okta restricționează accesul API în funcție de **network zone**. Majoritatea organizațiilor nu fac acest lucru.
    </Note>
  </Step>

  <Step title="Găsiți subdomeniul tenantului">
    URL-ul Admin Console arată astfel: `https://acme-admin.okta.com`. Subdomeniul tenantului este `acme` — fără sufixul `-admin`, fără `.okta.com` și fără `https://`.
  </Step>

  <ConnectInPlatform tile="Okta (SSWS)">
    | Câmp | Valoare |
    | - | - |
    | **Cheie API** | Token-ul API din pasul 3 |
    | **Subdomeniu tenant** | Subdomeniul din pasul 4 (de exemplu `acme`) |
  </ConnectInPlatform>
</Steps>

Acum sunteți conectat la Okta (SSWS).

### Depanare

<AccordionGroup>
  <Accordion title="401 Unauthorized">
    Token-ul este nevalid, a fost revocat sau a fost dezactivat după 30 de zile de inactivitate. Creați un token nou ca utilizator al contului de serviciu și introduceți-l din nou în conexiune.
  </Accordion>

  <Accordion title="Conectat, dar toate fluxurile sunt goale">
    Proprietarul token-ului nu are un rol de administrator. Atribuiți **Read-only Administrator** contului de serviciu (pasul 2) — API-ul returnează `200 OK` cu o listă goală, în loc de o eroare, atunci când rolul lipsește.
  </Accordion>

  <Accordion title="Sincronizările eșuează după o schimbare de personal">
    Token-ul nu mai funcționează dacă utilizatorul care l-a creat este dezactivat. Din acest motiv, token-ul trebuie să aparțină unui cont de serviciu, nu unei persoane.
  </Accordion>
</AccordionGroup>

***

## Opțiunea B — Aplicație de serviciu OAuth 2.0

Utilizați această metodă atunci când politica dumneavoastră de securitate nu permite token-uri API cu durată lungă de viață. Ea înlocuiește token-ul cu un ID client și o pereche de chei RSA pe care le dețineți dumneavoastră. În platformă, aceasta este tile-ul **Okta (OAuth 2.0)**, din **Setări → Integrari → Catalog**.

Pentru a vă autentifica în Okta folosind Client Credentials, aveți nevoie de următoarele:

1. **ID client** - Un identificator unic pentru aplicația dumneavoastră Okta API Services.
2. **Cheie privată (JWK)** - Cheia privată RSA în format JSON Web Key, a cărei cheie publică este înregistrată în aplicația dumneavoastră Okta.
3. **Domeniu Okta** - Doar subdomeniul tenantului dumneavoastră Okta (de exemplu `dev-12345678`), nu numele complet de gazdă.
4. **Scope-uri** - O listă de scope-uri Okta Management API separate prin spațiu (de exemplu `okta.users.read okta.logs.read`).

Acest ghid vă va îndruma în crearea unei aplicații API Services în Okta cu autentificare `private_key_jwt`.

### Cerințe preliminare:

* Trebuie să aveți un cont Okta. Puteți crea un cont gratuit de dezvoltator la [developer.okta.com](https://developer.okta.com/signup/).

#### Pasul 1: Crearea aplicației Okta API Services

1. Conectați-vă la [Okta Admin Console](https://login.okta.com/).
2. În bara laterală din stânga, accesați **Applications** > **Applications**.
3. Faceți clic pe **Create App Integration**.
4. Selectați **API Services** ca metodă de autentificare și faceți clic pe **Next**.

<img src="https://raw.githubusercontent.com/NangoHQ/nango/master/docs/api-integrations/okta-cc/select-api-service.png" style={{maxWidth: "550px"}} />

5. Denumiți aplicația și faceți clic pe **Save**.
6. În fila **General** a aplicației, găsiți **Client ID** — veți avea nevoie de el în ultimul pas.
7. Setați Client authentication la **Public key / Private key**. Scope-urile `okta.*` sunt acceptate doar cu această metodă de autentificare.

<img src="https://raw.githubusercontent.com/NangoHQ/nango/master/docs/api-integrations/okta-cc/select-public-private-key.png" style={{maxWidth: "550px"}} />

8. Dezactivați **Proof of possession (DPoP)** — nu este acceptat.

<img src="https://raw.githubusercontent.com/NangoHQ/nango/master/docs/api-integrations/okta-cc/disable-dpop.png" style={{maxWidth: "550px"}} />

<Note>
  Aplicația trebuie creată ca **API Services**.
</Note>

#### Pasul 2: Generarea și înregistrarea perechii de chei RSA

##### Utilizați generatorul de chei Okta

Okta poate genera pentru dumneavoastră perechea de chei RSA direct în Admin Console:

1. În Admin Console, deschideți aplicația API Services.
2. Accesați fila **General** și derulați până la secțiunea **PUBLIC KEYS**.
3. Faceți clic pe **Add Key**, apoi selectați **Generate new key**.
4. Faceți clic pe **Save** — Okta generează perechea de chei și afișează **Private Key (JWK)** o singură dată.
5. Copiați și salvați imediat JSON-ul cheii private — nu va mai fi afișat din nou.

<img src="https://raw.githubusercontent.com/NangoHQ/nango/master/docs/api-integrations/okta-cc/create-public-key.png" style={{maxWidth: "550px"}} />

6. Cheia publică este înregistrată automat în aplicația dumneavoastră.

<Note>
  Copiați JWK-ul privat înainte de a închide dialogul. Lipiți-l în câmpul **Cheie privată** din Living Security Platform, în ultimul pas.
</Note>

##### Creați propria cheie

Okta utilizează `private_key_jwt` pentru aplicațiile API Services. Generați o pereche de chei RSA, înregistrați JWK-ul **public** în Okta și furnizați JWK-ul **privat** către Living Security Platform.

**Generați un JWK privat** utilizând următorul script Node.js (necesită Node.js 18+):

```javascript theme={null}
const { generateKeyPairSync } = require('crypto');
const { privateKey, publicKey } = generateKeyPairSync('rsa', { modulusLength: 2048 });

const privateJwk = privateKey.export({ format: 'jwk' });
const publicJwk  = publicKey.export({ format: 'jwk' });

// Assign a kid — must match between private and public JWK
const kid = require('crypto').randomUUID();
privateJwk.kid = kid;
publicJwk.kid  = kid;

console.log('=== PUBLIC JWK (upload to Okta) ===');
console.log(JSON.stringify(publicJwk, null, 2));
console.log('\n=== PRIVATE JWK (paste into the Living Security Platform) ===');
console.log(JSON.stringify(privateJwk));
```

**Înregistrați JWK-ul public în Okta:**

1. În Admin Console, deschideți aplicația API Services.
2. Accesați fila **General** și derulați până la secțiunea **PUBLIC KEYS**.
3. Faceți clic pe **Add Key**, lipiți **JSON-ul JWK public** rezultat din scriptul de mai sus și faceți clic pe **Save**.

<Note>
  JWK-ul privat este cel pe care îl lipiți în Living Security Platform. Acesta include tot materialul cheii (`d`, `p`, `q`, `dp`, `dq`, `qi`) și `kid`. Păstrați-l secret.
</Note>

#### Pasul 3: Găsirea domeniului Okta

Introduceți doar subdomeniul tenantului dumneavoastră Okta — partea dinaintea `.okta.com`.

* În Admin Console, bara de adrese a browserului va afișa un URL precum `https://dev-12345678-admin.okta.com`.
* **Domeniul Okta** este doar subdomeniul (de exemplu, `dev-12345678`), nu `dev-12345678.okta.com`.
* Alternativ, accesați **Settings** > **Account** în Admin Console pentru a găsi domeniul Okta, apoi utilizați partea de subdomeniu.

#### Pasul 4: Acordarea scope-urilor API aplicației

Okta necesită cel puțin un scope în fiecare solicitare de token. Înainte ca aplicația să poată solicita anumite scope-uri, acestea trebuie acordate:

1. În Admin Console, accesați **Applications** > **Applications** și deschideți aplicația.
2. Faceți clic pe fila **Okta API Scopes**.
3. Acordați scope-urile necesare integrării dumneavoastră: `okta.users.read` și `okta.logs.read`.

O listă completă a scope-urilor disponibile se găsește în [referința Okta Management API](https://developer.okta.com/docs/api/oauth2/#okta-admin-management).

#### Pasul 5: Atribuirea unui rol de administrator aplicației

Acordarea scope-urilor nu este suficientă — endpoint-urile Okta Management API (de exemplu `/api/v1/users`) returnează în mod silențios un răspuns `200 []` gol dacă aplicația dumneavoastră nu are un rol de administrator. Trebuie să atribuiți cel puțin **Read-Only Administrator**:

1. În Admin Console, accesați **Security** > **Administrators** (sau accesați **Applications** > **Applications** > aplicația dumneavoastră > **Admin roles**).
2. Faceți clic pe **Add administrator assignment** și selectați aplicația API Services.

<img src="https://raw.githubusercontent.com/NangoHQ/nango/master/docs/api-integrations/okta-cc/admin-role-dropdown.png" style={{maxWidth: "550px"}} />

3. Atribuiți rolul **Read-Only Administrator** (sau unul superior, în funcție de scope-urile de care aveți nevoie).
4. Faceți clic pe **Save**.

<img src="https://raw.githubusercontent.com/NangoHQ/nango/master/docs/api-integrations/okta-cc/add-admin-role.png" style={{maxWidth: "550px"}} />

<Note>
  Fără un rol de administrator, apelurile API reușesc cu `200 OK`, dar returnează rezultate goale și nu există nicio eroare `403` care să indice problema.
</Note>

#### Pasul 6: Introducerea credențialelor în Living Security Platform

După ce aveți **ID client**, **Cheie privată (JWK)**, **Domeniu Okta** și **Scope-uri**:

1. Deschideți formularul în care trebuie să vă autentificați în Okta (Client Credentials).
2. Introduceți **ID client**.
3. Lipiți **Cheie privată (JWK)** — obiectul JSON complet din scriptul de mai sus (pe o singură linie sau formatat).
4. Introduceți **Domeniu Okta** doar ca subdomeniu al tenantului (de exemplu, `dev-12345678`).
5. Introduceți **Scope-uri** ca listă separată prin spații (de exemplu, `okta.users.read okta.logs.read`).
6. Trimiteți formularul și ar trebui să fiți autentificat cu succes.

Acum sunteți conectat la Okta (Client Credentials).

***

<Note>Porțiuni din această documentație sunt adaptate după [Nango](https://nango.dev/docs/), utilizate sub [Elastic License 2.0](https://github.com/NangoHQ/nango?tab=License-1-ov-file#readme).</Note>

<PublicIntegrationNextSteps />


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.