> ## 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.

# Okta integratsiyasini sozlash

> Foydalanuvchi hayotiy sikli, autentifikatsiya, MFA va ma’muriy faoliyat ma’lumotlari uchun Okta’ni Living Security bilan ulang.

export const PublicIntegrationNextSteps = () => <>
    <hr />
    <h2>Tegishli resurslar</h2>
    <ul>
      <li>
        <a href="/uz/signals/data-sources">Integrations ma'lumotlari Human Risk Management signallariga qanday aylanishini bilib oling</a>
      </li>
      <li>
        <a href="https://www.livingsecurity.com/integrations">Living Security integratsiyalarini o'rganing</a>
      </li>
      <li>
        <a href="https://app.livingsecurity.ai/">Living Security Platform'ni oching</a>
      </li>
      <li>
        <a href="https://www.livingsecurity.com/request-demo/">Living Security demosini so'rang</a>
      </li>
    </ul>
  </>;

export const EgressIpSafelist = ({system}) => <Note>
    <strong>Living Security sinxronizatsiyasining to‘rttala chiquvchi (egress) IP manzilini ham</strong> {system} tizimidagi ruxsat etilganlar ro‘yxatiga (allowlist) qo‘shing.{' '}
    Agar {system} CIDR yozuvini talab qilsa, har birini <code>/32</code> bilan alohida xost sifatida kiriting:
    <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 />
    Trafik to‘rttasining istalganidan chiqishi mumkin, shuning uchun ularning faqat bir qismini ruxsat etilganlar ro‘yxatiga kiritish sinxronizatsiyada vaqti-vaqti bilan uzilishlarga sabab bo‘ladi. Bu to‘rtta manzil Living Security’ning barcha mintaqalarida bir xil. To‘liq ro‘yxat, o‘zgartirish siyosati va nosozliklarni bartaraf etish bo‘yicha{' '}
    <a href="/uz/integrations/managing/egress-ip-addresses">
      Configuring Integration Egress IP Addresses
    </a>{' '}
    bo‘limiga qarang.
  </Note>;

export const ConnectInPlatform = ({tile, children}) => <Step title="Living Security Platform'da hisob ma'lumotlarini kiriting">
    <p>
      Living Security'ga kirish huquqiga ega bo'lgan shaxs — dastur egasi yoki (agar taklif qilingan bo'lsa)
      tizim administratori tomonidan bajariladi (topshirilgan sozlash).
    </p>
    <ol>
      <li>
        <strong>Settings → Integrations → Catalog</strong> bo'limiga o'ting, <strong>{tile}</strong>{' '}
        kartasini toping va <strong>Connect</strong> tugmasini bosing.
      </li>
      <li>
        Quyidagi maydonlarni to'ldiring, so'ng <strong>Connect</strong> tugmasini bosing.
      </li>
    </ol>
    {children}
  </Step>;

## Umumiy ma’lumot

Okta foydalanuvchi hayotiy sikli, autentifikatsiya, MFA va ma’muriy faoliyatga oid normallashtirilgan ma’lumotlarni taqdim etishi mumkin. Ko‘rib chiqilgan misollar:

* `account.locked` — akkaunt bloklangan
* `mfa.factor.activated` — qo‘shimcha MFA faktorlarini faollashtiradi
* `auth.login.failed` — tizimga kira olmaydi

Ikkala ulanish usuli ham bir xil ikkita oqimni o‘qiydi — foydalanuvchilar katalogi (`/api/v1/users`) va tizim jurnali (`/api/v1/logs`). [Integratsiya ma’lumotlari Signals’ga qanday aylanishi](/uz/signals/data-sources) haqida batafsil o‘qing.

## Ulanish usulini tanlang

| | **Okta (SSWS)** | **Okta (OAuth 2.0)** |
| - | - | - |
| Hisob ma’lumoti | Admin Console’da yaratiladigan API token | O‘zingiz yaratib, ro‘yxatdan o‘tkazadigan client ID va private JWK |
| Sozlash | Uch qadam, kalit materialini yaratish shart emas | To‘qqiz qadam, jumladan RSA kalit juftligi |
| Talab etiladigan administrator roli | Tokenning egasiga tayinlangan faqat o‘qish huquqiga ega administrator | Ilovaga tayinlangan faqat o‘qish huquqiga ega administrator |
| Token amal qilish muddati | 30 kun foydalanilmasa, faolsizlantiriladi | Muddati tugamaydi; kalit juftligini almashtirish sizning zimmangizda |
| Qachon ishlatiladi | Aksariyat tashkilotlar uchun tavsiya etiladigan yo‘l | Xavfsizlik siyosatingiz uzoq muddatli API tokenlarni taqiqlasa |

Ikkala usul ham bir xil ruxsatni talab qiladi, shuning uchun tanlov platforma nimani o‘qiy olishiga emas, hisob ma’lumotlari bilan ishlash tartibiga bog‘liq.

***

## A variant — API token (SSWS)

*Tavsiya etiladi.*

### Living Security uchun nima kerak

| Hisob ma’lumoti | Tavsif |
| - | - |
| **API key** | Okta API tokeni. Ulanish dialog oynasida bu maydon **API key** deb nomlanadi |
| **Tenant subdomain** | `<tenant>.okta.com` dagi `<tenant>` — to‘liq URL emas, faqat subdomen |

### Old shartlar

* Xizmat akkaunti foydalanuvchisini yaratish, administrator rollarini tayinlash va API tokenlarni yaratish uchun siz Okta’da **Super Administrator** bo‘lishingiz kerak.

<Steps>
  <Step title="Tokenga egalik qiladigan foydalanuvchini yarating">
    Okta API tokeni uni yaratgan foydalanuvchining huquqlariga ega bo‘ladi va shu foydalanuvchi faolsizlantirilsa, ishlashdan to‘xtaydi. Xodimlar almashganda ulanish saqlanib qolishi uchun shaxsiy admin akkauntidan foydalanmasdan, alohida xizmat akkauntini yarating.

    1. Admin Console’da **Directory** → **People** bo‘limiga o‘ting.
    2. **Add person** tugmasini bosing va `svc-livingsecurity@yourcompany.com` kabi foydalanuvchi yarating.
    3. Akkauntni faollashtiring.
  </Step>

  <Step title="Faqat o‘qish huquqiga ega administrator rolini tayinlang">
    Platforma faqat o‘qiydi. O‘qishdan ortiq huquq berish tokenga hech qachon ishlatilmaydigan ruxsatlarni beradi.

    1. **Security** → **Administrators** bo‘limiga o‘ting.
    2. **Add administrator** tugmasini bosing va oldingi qadamdagi foydalanuvchini tanlang.
    3. **Read-only Administrator** rolini tayinlang.
    4. Saqlang.

    <Note>
      Administrator roli bo‘lmasa, Okta Management API’ga so‘rovlar `200 OK` bilan muvaffaqiyatli bajariladi va bo‘sh ro‘yxat qaytaradi. Rol yetishmayotganini bildiruvchi `403` bo‘lmaydi — oqimlar shunchaki bo‘sh qoladi.
    </Note>
  </Step>

  <Step title="API tokenni yarating">
    1. Admin Console’ga 1-qadamdagi **xizmat akkaunti foydalanuvchisi sifatida** kiring. Token uni qaysi akkaunt yaratsa, shu akkauntning huquqlarini oladi.
    2. **Security** → **API** bo‘limiga o‘tib, **Tokens** yorlig‘ini oching.
    3. **Create token** tugmasini bosing, tokenga `Living Security Platform` kabi nom bering va **Create token** tugmasini bosing.
    4. Token qiymatini hoziroq nusxalab oling — Okta uni faqat bir marta ko‘rsatadi, keyin esa qayta ko‘rsatmaydi.

    <Warning>
      Okta API tokenni **30 kun foydalanilmasa** faolsizlantiradi. Ushbu integratsiyadagi sinxronlashlar kamida kuniga bir marta ishga tushadi, shuning uchun faol ulanish o‘z tokenini yaroqli holatda saqlaydi. Bir oy davomida to‘xtatib qo‘yilgan ulanish uchun yangi token kerak bo‘ladi.
    </Warning>

    <EgressIpSafelist system="Okta" />

    <Note>
      Yuqoridagi manzillar ro‘yxati faqat Okta tashkilotingiz API’ga kirishni **network zone** bo‘yicha cheklasagina ahamiyatga ega. Aksariyat tashkilotlarda bunday cheklov yo‘q.
    </Note>
  </Step>

  <Step title="Tenant subdomain’ni aniqlang">
    Admin Console URL manzilingiz `https://acme-admin.okta.com` ko‘rinishida bo‘ladi. Tenant subdomain — `acme`; unda `-admin` qo‘shimchasi, `.okta.com` va `https://` bo‘lmaydi.
  </Step>

  <ConnectInPlatform tile="Okta (SSWS)">
    | Maydon | Qiymat |
    | - | - |
    | **API key** | 3-qadamdagi API token |
    | **Tenant subdomain** | 4-qadamdagi subdomen (masalan, `acme`) |
  </ConnectInPlatform>
</Steps>

Endi Okta (SSWS) bilan ulandingiz.

### Nosozliklarni bartaraf etish

<AccordionGroup>
  <Accordion title="401 Unauthorized">
    Token yaroqsiz, bekor qilingan yoki 30 kun faoliyatsizlikdan so‘ng faolsizlantirilgan. Xizmat akkaunti foydalanuvchisi sifatida yangi token yarating va uni ulanishda qayta kiriting.
  </Accordion>

  <Accordion title="Ulangan, ammo barcha oqimlar bo‘sh">
    Token egasida administrator roli yo‘q. Xizmat akkauntiga **Read-only Administrator** rolini tayinlang (2-qadam) — rol bo‘lmasa, API xato o‘rniga bo‘sh ro‘yxat bilan `200 OK` qaytaradi.
  </Accordion>

  <Accordion title="Xodimlar almashganidan so‘ng sinxronlashlar xato bilan tugaydi">
    Tokenni yaratgan foydalanuvchi faolsizlantirilsa, token ishlashdan to‘xtaydi. Shuning uchun token shaxsga emas, xizmat akkauntiga tegishli bo‘lishi kerak.
  </Accordion>
</AccordionGroup>

***

## B variant — OAuth 2.0 xizmat ilovasi

Xavfsizlik siyosatingiz uzoq muddatli API tokenlarga ruxsat bermasa, ushbu usuldan foydalaning. U tokenni client ID va o‘zingizga tegishli RSA kalit juftligi bilan almashtiradi. Platformada bu **Settings → Integrations → Catalog** bo‘limidagi **Okta (OAuth 2.0)** kartochkasidir.

Okta’da Client Credentials yordamida autentifikatsiyadan o‘tish uchun quyidagilar kerak:

1. **Client ID** - Okta API Services ilovangizning noyob identifikatori.
2. **Private Key (JWK)** - JSON Web Key formatidagi RSA maxfiy kaliti; uning ochiq kaliti Okta ilovangizda ro‘yxatdan o‘tkazilgan bo‘lishi kerak.
3. **Okta Domain** - Faqat Okta tenant subdomeni (masalan, `dev-12345678`), to‘liq host nomi emas.
4. **Scopes** - Okta Management API scope’larining bo‘sh joy bilan ajratilgan ro‘yxati (masalan, `okta.users.read okta.logs.read`).

Ushbu qo‘llanma Okta’da `private_key_jwt` autentifikatsiyasi bilan API Services ilovasini yaratish jarayonini ko‘rsatib beradi.

### Old shartlar:

* Sizda Okta akkaunti bo‘lishi kerak. Bepul dasturchi akkauntiga [developer.okta.com](https://developer.okta.com/signup/) sahifasida ro‘yxatdan o‘tishingiz mumkin.

#### 1-qadam: Okta API Services ilovasini yaratish

1. [Okta Admin Console](https://login.okta.com/)’ga kiring.
2. Chap yon panelda **Applications** > **Applications** bo‘limiga o‘ting.
3. **Create App Integration** tugmasini bosing.
4. Kirish usuli sifatida **API Services** ni tanlang va **Next** tugmasini bosing.

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

5. Ilovaga nom bering va **Save** tugmasini bosing.
6. Ilovaning **General** yorlig‘ida **Client ID** ni toping — u oxirgi qadamda kerak bo‘ladi.
7. Client authentication parametrini **Public key / Private key** ga o‘rnating. `okta.*` scope’lari faqat shu autentifikatsiya usulida qo‘llab-quvvatlanadi.

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

8. **Proof of possession (DPoP)** ni o‘chiring — u qo‘llab-quvvatlanmaydi.

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

<Note>
  Ilova **API Services** sifatida yaratilishi shart.
</Note>

#### 2-qadam: RSA kalit juftligini yaratish va ro‘yxatdan o‘tkazish

##### Okta kalit generatoridan foydalanish

Okta RSA kalit juftligini to‘g‘ridan-to‘g‘ri Admin Console’da yaratib berishi mumkin:

1. Admin Console’da API Services ilovangizni oching.
2. **General** yorlig‘iga o‘tib, **PUBLIC KEYS** bo‘limigacha pastga aylantiring.
3. **Add Key** tugmasini bosing, so‘ng **Generate new key** ni tanlang.
4. **Save** tugmasini bosing — Okta kalit juftligini yaratadi va **Private Key (JWK)** ni bir marta ko‘rsatadi.
5. Maxfiy kalit JSON’ini darhol nusxalab saqlang — u qayta ko‘rsatilmaydi.

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

6. Ochiq kalit ilovangizda avtomatik ravishda ro‘yxatdan o‘tkaziladi.

<Note>
  Dialog oynasini yopishdan oldin private JWK’ni nusxalab oling. Uni oxirgi qadamda Living Security Platform’dagi **Private Key** maydoniga joylashtiring.
</Note>

##### O‘zingizning kalitingizni yaratish

Okta API Services ilovalari uchun `private_key_jwt` dan foydalanadi. Siz RSA kalit juftligini yaratasiz, **ochiq** JWK’ni Okta’da ro‘yxatdan o‘tkazasiz va **maxfiy** JWK’ni Living Security Platform’ga taqdim etasiz.

Quyidagi Node.js skripti yordamida **maxfiy JWK yarating** (Node.js 18+ talab qilinadi):

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

**Ochiq JWK’ni Okta’da ro‘yxatdan o‘tkazing:**

1. Admin Console’da API Services ilovangizni oching.
2. **General** yorlig‘iga o‘tib, **PUBLIC KEYS** bo‘limigacha pastga aylantiring.
3. **Add Key** tugmasini bosing, yuqoridagi skript chiqargan **ochiq JWK JSON**’ni joylashtiring va **Save** tugmasini bosing.

<Note>
  Living Security Platform’ga joylashtiriladigan narsa — maxfiy JWK. U barcha kalit materialini (`d`, `p`, `q`, `dp`, `dq`, `qi`) va `kid` ni o‘z ichiga oladi. Uni sir saqlang.
</Note>

#### 3-qadam: Okta Domain’ni aniqlash

Faqat Okta tenant subdomenini kiriting — `.okta.com` dan oldingi qism.

* Admin Console’da brauzeringizning manzil satrida `https://dev-12345678-admin.okta.com` kabi URL ko‘rinadi.
* Sizning **Okta Domain** — faqat subdomen (masalan, `dev-12345678`), `dev-12345678.okta.com` emas.
* Shu bilan birga, Okta domeningizni topish uchun Admin Console’da **Settings** > **Account** bo‘limiga o‘ting va undan subdomen qismini oling.

#### 4-qadam: Ilovangizga API scope’larini berish

Okta har bir token so‘rovida kamida bitta scope bo‘lishini talab qiladi. Ilovangiz muayyan scope’larni so‘ray olishi uchun ular avval berilgan bo‘lishi kerak:

1. Admin Console’da **Applications** > **Applications** bo‘limiga o‘tib, ilovangizni oching.
2. **Okta API Scopes** yorlig‘ini bosing.
3. Integratsiyangiz talab qiladigan scope’larni bering: `okta.users.read` va `okta.logs.read`.

Mavjud scope’larning to‘liq ro‘yxati [Okta Management API reference](https://developer.okta.com/docs/api/oauth2/#okta-admin-management) sahifasida keltirilgan.

#### 5-qadam: Ilovangizga admin rolini tayinlash

Faqat scope’lar berishning o‘zi yetarli emas — ilovangizda admin roli bo‘lmasa, Okta Management API endpoint’lari (masalan, `/api/v1/users`) hech qanday xabarsiz bo‘sh `200 []` javobini qaytaradi. Kamida **Read-Only Administrator** rolini tayinlashingiz kerak:

1. Admin Console’da **Security** > **Administrators** bo‘limiga o‘ting (yoki **Applications** > **Applications** > ilovangiz > **Admin roles** bo‘limiga o‘ting).
2. **Add administrator assignment** tugmasini bosing va API Services ilovangizni tanlang.

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

3. **Read-Only Administrator** rolini (yoki kerakli scope’larga qarab undan yuqori rolni) tayinlang.
4. **Save** tugmasini bosing.

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

<Note>
  Admin roli bo‘lmasa, API so‘rovlari `200 OK` bilan muvaffaqiyatli bajariladi, lekin bo‘sh natija qaytaradi va muammoni ko‘rsatuvchi `403` xatosi bo‘lmaydi.
</Note>

#### 6-qadam: Living Security Platform’da hisob ma’lumotlarini kiritish

**Client ID**, **Private Key (JWK)**, **Okta Domain** va **Scopes** qo‘lingizda bo‘lgach:

1. Okta (Client Credentials) orqali autentifikatsiyadan o‘tish kerak bo‘lgan shaklni oching.
2. **Client ID** ni kiriting.
3. **Private Key (JWK)** ni joylashtiring — yuqoridagi skriptdan olingan to‘liq JSON obyekti (bir qatorli yoki formatlangan).
4. **Okta Domain** ni faqat tenant subdomeni ko‘rinishida kiriting (masalan, `dev-12345678`).
5. **Scopes** ni bo‘sh joy bilan ajratilgan ro‘yxat sifatida kiriting (masalan, `okta.users.read okta.logs.read`).
6. Shaklni yuboring — autentifikatsiya muvaffaqiyatli o‘tishi kerak.

Endi Okta (Client Credentials) bilan ulandingiz.

***

<Note>Ushbu hujjatning ayrim qismlari [Nango](https://nango.dev/docs/) hujjatlaridan moslashtirilgan va [Elastic License 2.0](https://github.com/NangoHQ/nango?tab=License-1-ov-file#readme) ostida foydalanilgan.</Note>

<PublicIntegrationNextSteps />


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