> ## 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 integration सेटअप

> यूज़र लाइफ़साइकल, ऑथेंटिकेशन, MFA और प्रशासनिक गतिविधि के लिए Okta को Living Security से कनेक्ट करें।

export const PublicIntegrationNextSteps = () => <>
    <hr />
    <h2>संबंधित संसाधन</h2>
    <ul>
      <li>
        <a href="/hi/signals/data-sources">जानें कि Integrations का डेटा Human Risk Management Signals में कैसे परिवर्तित होता है</a>
      </li>
      <li>
        <a href="https://www.livingsecurity.com/integrations">Living Security के Integrations देखें</a>
      </li>
      <li>
        <a href="https://app.livingsecurity.ai/">Living Security Platform खोलें</a>
      </li>
      <li>
        <a href="https://www.livingsecurity.com/request-demo/">Living Security डेमो का अनुरोध करें</a>
      </li>
    </ul>
  </>;

export const EgressIpSafelist = ({system}) => <Note>
    <strong>Living Security के चारों sync egress IP addresses को</strong> {system} में allowlist में जोड़ें।{' '}
    यदि {system} CIDR notation की अपेक्षा करता है, तो प्रत्येक को <code>/32</code> के साथ एकल host के रूप में दर्ज करें:
    <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 />
    ट्रैफ़िक इन चारों में से किसी भी पते से आ सकता है, इसलिए केवल कुछ को allowlist करने से बीच-बीच में sync विफल होता रहता है। ये चारों पते Living Security के प्रत्येक region में समान हैं। पूरी सूची, परिवर्तन नीति और समस्या निवारण के लिए{' '}
    <a href="/hi/integrations/managing/egress-ip-addresses">
      Configuring Integration Egress IP Addresses
    </a>{' '}
    देखें।
  </Note>;

export const ConnectInPlatform = ({tile, children}) => <Step title="Living Security Platform में क्रेडेंशियल दर्ज करें">
    <p>
      यह चरण वही व्यक्ति पूरा करता है जिसके पास Living Security का एक्सेस है — प्रोग्राम ओनर, या यदि सिस्टम एडमिन को आमंत्रित किया गया है (डेलीगेटेड सेटअप), तो सिस्टम एडमिन।
    </p>
    <ol>
      <li>
        <strong>Settings → Integrations → Catalog</strong> पर जाएँ, <strong>{tile}</strong> टाइल ढूँढें और{' '}
        <strong>Connect</strong> पर क्लिक करें।
      </li>
      <li>
        नीचे दिए गए फ़ील्ड भरें, फिर <strong>Connect</strong> पर क्लिक करें।
      </li>
    </ol>
    {children}
  </Step>;

## अवलोकन

Okta सामान्यीकृत (normalized) यूज़र लाइफ़साइकल, ऑथेंटिकेशन, MFA और प्रशासनिक गतिविधि का डेटा उपलब्ध करा सकता है। समीक्षा किए गए उदाहरणों में शामिल हैं:

* `account.locked` — अकाउंट लॉक हो गया
* `mfa.factor.activated` — अतिरिक्त MFA फ़ैक्टर सक्रिय करता है
* `auth.login.failed` — लॉग इन करने में विफल रहता है

दोनों कनेक्शन विधियाँ एक ही दो स्ट्रीम पढ़ती हैं — यूज़र डायरेक्टरी (`/api/v1/users`) और सिस्टम लॉग (`/api/v1/logs`)। [integration डेटा Signals में कैसे बदलता है](/hi/signals/data-sources) देखें।

## कनेक्शन विधि चुनें

| | **Okta (SSWS)** | **Okta (OAuth 2.0)** |
| - | - | - |
| क्रेडेंशियल | एक API टोकन, जिसे आप Admin Console में बनाते हैं | एक क्लाइंट ID और एक प्राइवेट JWK, जिसे आप जनरेट और रजिस्टर करते हैं |
| सेटअप | तीन चरण, कोई कुंजी सामग्री जनरेट करने की आवश्यकता नहीं | नौ चरण, जिनमें एक RSA की पेयर शामिल है |
| आवश्यक एडमिन रोल | Read-only administrator, जो टोकन के स्वामी को असाइन किया जाता है | Read-only administrator, जो एप्लिकेशन को असाइन किया जाता है |
| टोकन की अवधि | बिना उपयोग के 30 दिनों के बाद निष्क्रिय हो जाता है | कोई समाप्ति नहीं; की पेयर को रोटेट करना आपकी ज़िम्मेदारी है |
| कब उपयोग करें | अधिकांश संगठनों के लिए यही अनुशंसित मार्ग है | आपकी सुरक्षा नीति लंबे समय तक मान्य API टोकन की अनुमति नहीं देती |

दोनों विधियों के लिए समान एक्सेस आवश्यक है, इसलिए यह चयन क्रेडेंशियल प्रबंधन से संबंधित है, इससे यह तय नहीं होता कि प्लेटफ़ॉर्म क्या पढ़ सकता है।

***

## विकल्प A — API टोकन (SSWS)

*अनुशंसित।*

### Living Security को क्या चाहिए

| क्रेडेंशियल | विवरण |
| - | - |
| **API key** | एक Okta API टोकन। कनेक्ट डायलॉग इस फ़ील्ड को **API key** लेबल करता है |
| **Tenant subdomain** | `<tenant>.okta.com` में `<tenant>` — केवल सबडोमेन, पूरा URL नहीं |

### पूर्वापेक्षाएँ

* सर्विस अकाउंट यूज़र बनाने, एडमिनिस्ट्रेटर रोल असाइन करने और API टोकन बनाने के लिए आपका Okta **Super Administrator** होना आवश्यक है।

<Steps>
  <Step title="टोकन के स्वामित्व के लिए एक यूज़र बनाएँ">
    Okta API टोकन में उस यूज़र की अनुमतियाँ होती हैं जिसने उसे बनाया है, और यदि वह यूज़र निष्क्रिय कर दिया जाए तो टोकन काम करना बंद कर देता है। व्यक्तिगत एडमिन अकाउंट का उपयोग करने के बजाय एक समर्पित सर्विस अकाउंट बनाएँ, ताकि स्टाफ़ में बदलाव होने पर भी कनेक्शन बना रहे।

    1. Admin Console में **Directory** → **People** पर जाएँ।
    2. **Add person** पर क्लिक करें और `svc-livingsecurity@yourcompany.com` जैसा कोई यूज़र बनाएँ।
    3. अकाउंट को सक्रिय करें।
  </Step>

  <Step title="Read-only administrator रोल असाइन करें">
    प्लेटफ़ॉर्म केवल डेटा पढ़ता है। रीड एक्सेस से अधिक अनुमति देने पर टोकन को ऐसी अनुमतियाँ मिलती हैं जिनका वह कभी उपयोग नहीं करता।

    1. **Security** → **Administrators** पर जाएँ।
    2. **Add administrator** पर क्लिक करें और पिछले चरण में बनाया गया यूज़र चुनें।
    3. **Read-only Administrator** रोल असाइन करें।
    4. सहेजें।

    <Note>
      एडमिनिस्ट्रेटर रोल के बिना, Okta Management API को किए गए कॉल `200 OK` के साथ सफल होते हैं और एक खाली सूची लौटाते हैं। रोल अनुपस्थित होने की जानकारी देने के लिए कोई `403` नहीं होता — स्ट्रीम बस खाली रहती हैं।
    </Note>
  </Step>

  <Step title="API टोकन बनाएँ">
    1. चरण 1 में बनाए गए **सर्विस अकाउंट यूज़र के रूप में** Admin Console में साइन इन करें। टोकन उसी अकाउंट की अनुमतियाँ प्राप्त करता है जो उसे बनाता है।
    2. **Security** → **API** पर जाएँ और **Tokens** टैब खोलें।
    3. **Create token** पर क्लिक करें, `Living Security Platform` जैसा कोई नाम दें, और **Create token** पर क्लिक करें।
    4. टोकन का मान अभी कॉपी करें — Okta इसे केवल एक बार दिखाता है, दोबारा नहीं।

    <Warning>
      Okta किसी API टोकन को **बिना उपयोग के 30 दिनों** के बाद निष्क्रिय कर देता है। इस integration में सिंक दिन में कम से कम एक बार चलते हैं, इसलिए सक्रिय कनेक्शन अपने टोकन को सक्रिय बनाए रखता है। जो कनेक्शन एक महीने तक रुका रहे, उसके लिए नया टोकन आवश्यक होगा।
    </Warning>

    <EgressIpSafelist system="Okta" />

    <Note>
      ऊपर दी गई पते की सूची केवल तभी मायने रखती है जब आपका Okta org **network zone** द्वारा API एक्सेस को प्रतिबंधित करता हो। अधिकांश org ऐसा नहीं करते।
    </Note>
  </Step>

  <Step title="अपना tenant subdomain खोजें">
    आपका Admin Console URL `https://acme-admin.okta.com` जैसा दिखता है। Tenant subdomain `acme` है — `-admin` प्रत्यय के बिना, `.okta.com` के बिना, और `https://` के बिना।
  </Step>

  <ConnectInPlatform tile="Okta (SSWS)">
    | फ़ील्ड | मान |
    | - | - |
    | **API key** | चरण 3 का API टोकन |
    | **Tenant subdomain** | चरण 4 का सबडोमेन (उदा. `acme`) |
  </ConnectInPlatform>
</Steps>

अब आप Okta (SSWS) से कनेक्ट हो गए हैं।

### समस्या निवारण

<AccordionGroup>
  <Accordion title="401 Unauthorized">
    टोकन अमान्य है, रद्द कर दिया गया है, या 30 दिनों की निष्क्रियता के बाद निष्क्रिय हो गया है। सर्विस अकाउंट यूज़र के रूप में नया टोकन बनाएँ और उसे कनेक्शन में दोबारा दर्ज करें।
  </Accordion>

  <Accordion title="कनेक्ट हो गया, लेकिन हर स्ट्रीम खाली है">
    टोकन के स्वामी के पास कोई एडमिनिस्ट्रेटर रोल नहीं है। सर्विस अकाउंट को **Read-only Administrator** असाइन करें (चरण 2) — रोल न होने पर API त्रुटि के बजाय खाली सूची के साथ `200 OK` लौटाता है।
  </Accordion>

  <Accordion title="स्टाफ़ में बदलाव के बाद सिंक विफल हो जाते हैं">
    जिस यूज़र ने टोकन बनाया है, उसके निष्क्रिय होने पर टोकन काम करना बंद कर देता है। इसी कारण टोकन किसी व्यक्ति के बजाय सर्विस अकाउंट का होना चाहिए।
  </Accordion>
</AccordionGroup>

***

## विकल्प B — OAuth 2.0 सर्विस एप्लिकेशन

इस विधि का उपयोग तब करें जब आपकी सुरक्षा नीति लंबे समय तक मान्य API टोकन की अनुमति नहीं देती। यह टोकन के स्थान पर एक क्लाइंट ID और आपके स्वामित्व वाली RSA की पेयर का उपयोग करती है। प्लेटफ़ॉर्म में यह **Settings → Integrations → Catalog** के अंतर्गत **Okta (OAuth 2.0)** टाइल है।

Client Credentials का उपयोग करके Okta के साथ ऑथेंटिकेट करने के लिए आपको निम्नलिखित की आवश्यकता होगी:

1. **Client ID** - आपके Okta API Services एप्लिकेशन के लिए एक अद्वितीय पहचानकर्ता।
2. **Private Key (JWK)** - JSON Web Key फ़ॉर्मैट में RSA प्राइवेट की, जिसकी पब्लिक की आपके Okta एप्लिकेशन में रजिस्टर की गई है।
3. **Okta Domain** - केवल आपका Okta tenant subdomain (उदा. `dev-12345678`), पूरा होस्टनेम नहीं।
4. **Scopes** - Okta Management API scopes की स्पेस से अलग की गई सूची (उदा. `okta.users.read okta.logs.read`)।

यह गाइड आपको `private_key_jwt` ऑथेंटिकेशन के साथ Okta में एक API Services एप्लिकेशन बनाने की प्रक्रिया बताएगी।

### पूर्वापेक्षाएँ:

* आपके पास एक Okta अकाउंट होना चाहिए। [developer.okta.com](https://developer.okta.com/signup/) पर निःशुल्क डेवलपर अकाउंट के लिए साइन अप करें।

#### चरण 1: अपना Okta API Services एप्लिकेशन बनाना

1. अपने [Okta Admin Console](https://login.okta.com/) में लॉग इन करें।
2. बाएँ साइडबार में **Applications** > **Applications** पर जाएँ।
3. **Create App Integration** पर क्लिक करें।
4. साइन-इन विधि के रूप में **API Services** चुनें और **Next** पर क्लिक करें।

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

5. अपने एप्लिकेशन को एक नाम दें और **Save** पर क्लिक करें।
6. एप्लिकेशन के **General** टैब पर अपना **Client ID** खोजें — अंतिम चरण में आपको इसकी आवश्यकता होगी।
7. Client authentication को **Public key / Private key** पर सेट करें। `okta.*` scopes केवल इसी ऑथेंटिकेशन विधि के साथ समर्थित हैं।

<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)** को अक्षम करें — यह समर्थित नहीं है।

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

<Note>
  एप्लिकेशन को **API Services** के रूप में ही बनाया जाना चाहिए।
</Note>

#### चरण 2: अपनी RSA की पेयर जनरेट और रजिस्टर करना

##### Okta key generator का उपयोग करें

Okta सीधे Admin Console में आपके लिए RSA की पेयर जनरेट कर सकता है:

1. Admin Console में अपना API Services एप्लिकेशन खोलें।
2. **General** टैब पर जाएँ और **PUBLIC KEYS** सेक्शन तक स्क्रॉल करें।
3. **Add Key** पर क्लिक करें, फिर **Generate new key** चुनें।
4. **Save** पर क्लिक करें — Okta की पेयर जनरेट करता है और **Private Key (JWK)** केवल एक बार दिखाता है।
5. प्राइवेट की JSON को तुरंत कॉपी करके सहेज लें — यह दोबारा नहीं दिखाई जाएगी।

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

6. पब्लिक की आपके एप्लिकेशन में स्वतः रजिस्टर हो जाती है।

<Note>
  डायलॉग बंद करने से पहले प्राइवेट JWK कॉपी कर लें। अंतिम चरण में इसे Living Security Platform के **Private Key** फ़ील्ड में पेस्ट करें।
</Note>

##### अपनी स्वयं की की बनाएँ

Okta, API Services ऐप्स के लिए `private_key_jwt` का उपयोग करता है। आप एक RSA की पेयर जनरेट करते हैं, **पब्लिक** JWK को Okta में रजिस्टर करते हैं, और **प्राइवेट** JWK Living Security Platform को प्रदान करते हैं।

निम्नलिखित Node.js स्क्रिप्ट (Node.js 18+ आवश्यक) का उपयोग करके **प्राइवेट JWK जनरेट करें**:

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

**पब्लिक JWK को Okta में रजिस्टर करें:**

1. Admin Console में अपना API Services एप्लिकेशन खोलें।
2. **General** टैब पर जाएँ और **PUBLIC KEYS** सेक्शन तक स्क्रॉल करें।
3. **Add Key** पर क्लिक करें, ऊपर दी गई स्क्रिप्ट से प्राप्त **public JWK JSON** आउटपुट पेस्ट करें, और **Save** पर क्लिक करें।

<Note>
  प्राइवेट JWK वह है जिसे आप Living Security Platform में पेस्ट करते हैं। इसमें सभी की सामग्री (`d`, `p`, `q`, `dp`, `dq`, `qi`) और `kid` शामिल हैं। इसे गोपनीय रखें।
</Note>

#### चरण 3: अपना Okta Domain खोजना

केवल अपना Okta tenant subdomain दर्ज करें — `.okta.com` से पहले का भाग।

* Admin Console में, आपके ब्राउज़र के एड्रेस बार में `https://dev-12345678-admin.okta.com` जैसा URL दिखेगा।
* आपका **Okta Domain** केवल सबडोमेन है (उदा., `dev-12345678`), `dev-12345678.okta.com` नहीं।
* वैकल्पिक रूप से, अपना Okta डोमेन खोजने के लिए Admin Console में **Settings** > **Account** पर जाएँ, फिर सबडोमेन वाला भाग उपयोग करें।

#### चरण 4: अपने एप्लिकेशन को API scopes प्रदान करें

Okta को हर टोकन अनुरोध में कम से कम एक scope आवश्यक है। आपका एप्लिकेशन विशिष्ट scopes का अनुरोध कर सके, इससे पहले उन्हें प्रदान किया जाना चाहिए:

1. Admin Console में **Applications** > **Applications** पर जाएँ और अपना एप्लिकेशन खोलें।
2. **Okta API Scopes** टैब पर क्लिक करें।
3. वे scopes प्रदान करें जिनकी आपके integration को आवश्यकता है: `okta.users.read` और `okta.logs.read`।

उपलब्ध scopes की पूरी सूची [Okta Management API reference](https://developer.okta.com/docs/api/oauth2/#okta-admin-management) में है।

#### चरण 5: अपने एप्लिकेशन को एडमिन रोल असाइन करें

केवल scopes प्रदान करना पर्याप्त नहीं है — यदि आपके एप्लिकेशन के पास कोई एडमिन रोल नहीं है, तो Okta Management API endpoints (उदा. `/api/v1/users`) चुपचाप खाली `200 []` प्रतिक्रिया लौटाते हैं। आपको कम से कम **Read-Only Administrator** असाइन करना होगा:

1. Admin Console में **Security** > **Administrators** पर जाएँ (या **Applications** > **Applications** > आपका ऐप > **Admin roles** पर जाएँ)।
2. **Add administrator assignment** पर क्लिक करें और अपना API Services एप्लिकेशन चुनें।

<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** रोल असाइन करें (या आपको आवश्यक scopes के आधार पर उससे उच्च रोल)।
4. **Save** पर क्लिक करें।

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

<Note>
  एडमिन रोल के बिना, API कॉल `200 OK` के साथ सफल होते हैं लेकिन खाली परिणाम लौटाते हैं, और समस्या का संकेत देने के लिए कोई `403` त्रुटि नहीं होती।
</Note>

#### चरण 6: Living Security Platform में क्रेडेंशियल दर्ज करें

जब आपके पास अपना **Client ID**, **Private Key (JWK)**, **Okta Domain** और **Scopes** हों:

1. वह फ़ॉर्म खोलें जहाँ आपको Okta (Client Credentials) के साथ ऑथेंटिकेट करना है।
2. अपना **Client ID** दर्ज करें।
3. अपनी **Private Key (JWK)** पेस्ट करें — ऊपर दी गई स्क्रिप्ट से प्राप्त पूरा JSON ऑब्जेक्ट (सिंगल-लाइन या फ़ॉर्मैटेड)।
4. अपना **Okta Domain** केवल tenant subdomain के रूप में दर्ज करें (उदा., `dev-12345678`)।
5. **Scopes** को स्पेस से अलग की गई सूची के रूप में दर्ज करें (उदा., `okta.users.read okta.logs.read`)।
6. फ़ॉर्म सबमिट करें, और आप सफलतापूर्वक ऑथेंटिकेट हो जाएँगे।

अब आप Okta (Client Credentials) से कनेक्ट हो गए हैं।

***

<Note>इस दस्तावेज़ के कुछ अंश [Nango](https://nango.dev/docs/) से अनुकूलित किए गए हैं, और [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.