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

# Microsoft Entra ID Integration सेटअप

> पहचान, साइन-इन, जोखिम, डिवाइस और अटैक-सिमुलेशन गतिविधि के लिए Microsoft Entra ID को Living Security से कनेक्ट करें।

export const EgressIpAllowlistBothSets = ({system}) => <Warning>
    <strong>{system} को पतों के एक नहीं, बल्कि दो सेट चाहिए।</strong> Living Security इस integration का access token अपने स्वयं के इन्फ्रास्ट्रक्चर पर बनाता है और उसे लगातार रिफ़्रेश करता रहता है, इसलिए सेटअप ट्रैफ़िक और sync ट्रैफ़िक अलग-अलग नेटवर्क से आते हैं। {system} में दोनों सेट को allowlist करें और दोनों को बनाए रखें — यह केवल सेटअप के समय की आवश्यकता नहीं है।
    <br />
    <br />
    <strong>Integration sync traffic</strong> — प्रत्येक region में समान:
    <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 />
    <strong>Platform traffic</strong> — केवल उसी region की पंक्ति का उपयोग करें जो आपके organization को होस्ट करता है:
    <br />
    United States: <code>98.91.60.249/32</code>, <code>13.216.91.102/32</code>
    <br />
    European Union: <code>34.246.236.210/32</code>, <code>52.31.102.238/32</code>
    <br />
    <br />
    यदि आप केवल sync सेट को allowlist करते हैं, तो सेटअप कभी पूरा नहीं होता। यदि आप केवल platform सेट को allowlist करते हैं, तो सेटअप सफल हो जाता है, पर प्रत्येक sync विफल होता है। दोनों विफलता संकेतों और परिवर्तन नीति के लिए{' '}
    <a href="/hi/integrations/managing/egress-ip-addresses">
      Configuring Integration Egress IP Addresses
    </a>{' '}
    देखें।
  </Warning>;

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 HandoffPaths = () => <Tabs>
    <Tab title="डेलीगेटेड सेटअप (सीक्रेट के लिए अनुशंसित)">
      सिस्टम एडमिन को सीमित अनुमतियों के साथ प्लेटफ़ॉर्म में आमंत्रित करें। वे क्रेडेंशियल सीधे दर्ज करते हैं; आपको सीक्रेट को कभी संभालना नहीं पड़ता।
    </Tab>
    <Tab title="क्रेडेंशियल हैंडऑफ़">
      एडमिन को प्रोवाइडर पेज भेजें। वे क्रेडेंशियल प्रोविज़न करके आपको लौटा देते हैं; फिर आप उन्हें Connect डायलॉग में दर्ज करते हैं।
    </Tab>
  </Tabs>;

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

export const SystemAdminBanner = ({system, recommendDelegated}) => <Note>
    <p>
      <strong>यह मार्गदर्शिका आपके {system} एडमिनिस्ट्रेटर के लिए है।</strong> इसमें {system} के भीतर API
      क्रेडेंशियल बनाने की प्रक्रिया बताई गई है, जिसके लिए {system} का एडमिन एक्सेस आवश्यक है — Living Security Platform का नहीं।
    </p>
    <p>
      यदि आप Living Security के <strong>प्रोग्राम ओनर</strong> हैं और {system} का प्रशासन नहीं करते हैं,
      तो यह पेज उस व्यक्ति को भेजें जो इसका प्रशासन करता है। वे Part A पूरा करके क्रेडेंशियल आपको सौंप देंगे
      (या, यदि आपने उन्हें प्लेटफ़ॉर्म में आमंत्रित किया है, तो उन्हें सीधे दर्ज कर देंगे)।
      {recommendDelegated && <>
          {' '}चूँकि सेटअप में संवेदनशील की सामग्री (key material) तैयार होती है, इसलिए हम{' '}
          <strong>delegated setup</strong> मार्ग अपनाने की अनुशंसा करते हैं, ताकि सीक्रेट आपको कभी वापस न भेजा जाए।
        </>}
    </p>
  </Note>;

<SystemAdminBanner system="Microsoft Entra ID" />

<HandoffPaths />

## यह Integration क्या योगदान देता है

Microsoft Entra ID सामान्यीकृत पहचान, साइन-इन, जोखिम, डिवाइस और अटैक-सिमुलेशन गतिविधि उपलब्ध करा सकता है। समीक्षित उदाहरणों में शामिल हैं:

* `account.compromised` — ऐसा खाता जिसे compromised के रूप में चिह्नित किया गया है
* `auth.login.unusual` — असामान्य संदर्भों से साइन-इन करता है
* `phishing.simulation.clicked` — किसी सिमुलेशन पर क्लिक किया, लेकिन रिपोर्ट नहीं किया

ये केवल प्रतिनिधि उदाहरण हैं; इसकी कोई गारंटी नहीं है कि प्रत्येक इवेंट हर tenant में उपलब्ध होगा। देखें [Integration डेटा Signals कैसे बनता है](/hi/signals/data-sources)।

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

| Credential | विवरण |
| - | - |
| **Tenant ID** | आपके Microsoft Entra admin center से निर्देशिका (tenant) UUID |
| **Client ID** | ऐप पंजीकृत करते समय असाइन किया गया एप्लिकेशन (client) UUID |
| **Client Secret** | आपके ऐप पंजीकरण के अंतर्गत जनरेट किया गया secret credential — कनेक्ट डायलॉग में इस फ़ील्ड का लेबल **API Key** है |
| **Graph API host** | Microsoft Graph होस्टनाम (commercial: `graph.microsoft.com`) |
| **Authority host** | Microsoft Entra authority होस्टनाम (commercial: `login.microsoftonline.com`) |

**Scopes (Application permissions):**

| Permission | उपयोग |
| - | - |
| `User.Read.All` | उपयोगकर्ता निर्देशिका |
| `SecurityAlert.Read.All` | सुरक्षा अलर्ट |
| `AuditLog.Read.All` | साइन-इन लॉग और MFA पंजीकरण विवरण |
| `Policy.Read.ConditionalAccess` | प्रत्येक साइन-इन पर conditional access का विवरण — कौन-सी पॉलिसियाँ लागू हुईं और उन्होंने कौन-से grant controls लागू किए। MFA की पहचान इसी पर निर्भर करती है |
| `AttackSimulation.Read.All` | Attack Simulation Training के परिणाम |
| `Device.Read.All` | Entra ID डिवाइस ऑब्जेक्ट, जिनमें वे डिवाइस भी शामिल हैं जिन्हें Intune प्रबंधित नहीं करता |
| `DeviceManagementManagedDevices.Read.All` | Intune द्वारा प्रबंधित डिवाइस |
| `IdentityRiskEvent.Read.All` | Identity Protection जोखिम डिटेक्शन, जिनमें लीक हुए credentials भी शामिल हैं |
| `GroupMember.ReadWrite.All` | **वैकल्पिक।** समूह सदस्यता Actions — किसी Playbook को किसी व्यक्ति को Microsoft Entra ID समूह में जोड़ने या उससे हटाने में सक्षम बनाता है |

### आप तय करते हैं कि यह कनेक्शन क्या कर सकता है

यह कनेक्शन डेटा पढ़ता है। यह आपकी निर्देशिका में *कार्रवाई* भी कर सकता है, लेकिन केवल तभी जब आप इसकी अनुमति देना चुनें।

ऊपर दी गई अंतिम permission को छोड़कर सभी permissions केवल-पढ़ने योग्य (read-only) हैं। केवल इन्हें ही प्रदान करने पर कनेक्शन आपके tenant में कभी भी कुछ भी संशोधित नहीं कर सकता — प्लेटफ़ॉर्म इसका पता लगा लेता है और समूह Actions प्रस्तुत ही नहीं करता।

`GroupMember.ReadWrite.All` जोड़ने पर समूह सदस्यता Actions को Playbooks में उपयोग के लिए उपलब्ध कराया जाता है। कुछ भी अपने आप शुरू नहीं होता: आपको फिर भी यह चुनना होगा कि प्लेटफ़ॉर्म किन समूहों को छू सकता है (नीचे देखें) और उनका उपयोग करने वाला एक Playbook बनाना होगा।

आप किसी भी समय अपना निर्णय बदल सकते हैं। Microsoft Entra ID में कोई permission जोड़ना या हटाना और admin consent पुनः प्रदान करना पर्याप्त है — प्लेटफ़ॉर्म में credentials दोबारा दर्ज करने की आवश्यकता नहीं है, और आपके डेटा सिंक पूरे समय चलते रहते हैं। बदलाव लगभग एक घंटे के भीतर प्रभावी हो जाता है।

<Note>
  **समूह सदस्यता Actions अतिरिक्त रूप से आपके द्वारा निर्दिष्ट समूहों तक सीमित हैं।** कनेक्ट करने के बाद, कोई व्यवस्थापक कनेक्शन पर समूहों की एक स्पष्ट allowlist चुनता है। जब तक वह सूची मौजूद नहीं होती, permission प्रदान किए जाने पर भी समूह Actions उपलब्ध नहीं होते — इसलिए `GroupMember.ReadWrite.All` का अर्थ कभी भी "tenant का कोई भी समूह" नहीं होता।

  उन समूहों का चयन सावधानी से करें: ऐसे किसी भी समूह से बचें जो प्रशासनिक भूमिकाएँ, विशेषाधिकार प्राप्त एक्सेस या लाइसेंस अधिकार प्रदान करता हो।
</Note>

**आवश्यक भूमिका:** Microsoft Entra ID में **Application Administrator** या **Global Administrator**

<Note>
  **इनमें से दो permissions हाल ही में जोड़ी गई हैं।** यदि आपने इनके इस सूची में आने से पहले Microsoft Entra ID कनेक्ट किया था, तो इन्हें अपने मौजूदा ऐप पंजीकरण में जोड़ें और **admin consent पुनः प्रदान करें** — permissions बदलने पर Microsoft के लिए consent पुनः प्रदान करना आवश्यक है। इस बीच अन्य सभी डेटा स्ट्रीम सामान्य रूप से काम करती रहती हैं।

  `Policy.Read.ConditionalAccess` — इस permission के बिना Microsoft प्रत्येक साइन-इन रिकॉर्ड से conditional access का विवरण हटा देता है। रिकॉर्ड फिर भी यह बताता है कि conditional access पॉलिसी पूरी हुई थी, लेकिन पॉलिसियों की सूची खाली आती है। कुछ भी विफल नहीं होता और कोई चेतावनी नहीं मिलती: साइन-इन डेटा आता रहता है और कनेक्शन स्वस्थ बना रहता है। प्लेटफ़ॉर्म बस यह नहीं पहचान पाता कि कौन-से साइन-इन मल्टी-फ़ैक्टर ऑथेंटिकेशन से पूरे हुए थे, इसलिए इस कनेक्शन से MFA गतिविधि खाली रहती है।

  `IdentityRiskEvent.Read.All` — जोखिम डिटेक्शन पढ़ने के लिए **Microsoft Entra ID P1 या P2** लाइसेंस भी आवश्यक है। लीक हुए credentials की पहचान स्वयं P1 सहित प्रत्येक स्तर पर उपलब्ध है; प्रीमियम डिटेक्शन P2 से नीचे के स्तर पर `generic` के रूप में रिपोर्ट किए जाते हैं।
</Note>

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

* ऐप्लिकेशन पंजीकृत करने और admin consent प्रदान करने के लिए आपके पास Microsoft Entra ID में **Application Administrator** या **Global Administrator** एक्सेस होना चाहिए।

***

## भाग A — Microsoft Entra ID में

*ये चरण आपके Microsoft Entra ID व्यवस्थापक द्वारा पूरे किए जाते हैं।*

<Steps>
  <Step title="नया एप्लिकेशन पंजीकृत करें">
    1. [Microsoft Entra admin center](https://entra.microsoft.com) में साइन इन करें।
    2. बाएँ नेविगेशन में **Entra ID** → **App registrations** पर जाएँ।
    3. **New registration** पर क्लिक करें।
    4. ऐप के लिए कोई सार्थक नाम दर्ज करें, जैसे `Living Security Platform`।
    5. **Supported account types** के अंतर्गत **Accounts in this organizational directory only** चुनें।
    6. **Redirect URI** को खाली छोड़ें — यह Integration client credentials flow का उपयोग करता है।
    7. **Register** पर क्लिक करें।

    पंजीकरण के बाद, **Overview** पेज से निम्नलिखित मान नोट कर लें:

    * **Application (client) ID**
    * **Directory (tenant) ID**
  </Step>

  <Step title="Microsoft Graph application permissions जोड़ें">
    1. अपने ऐप के **Overview** पेज पर बाएँ मेनू में **API permissions** पर क्लिक करें।
    2. **Add a permission** पर क्लिक करें।
    3. **Microsoft Graph** चुनें।
    4. **Application permissions** चुनें।
    5. नीचे दी गई प्रत्येक permission को खोजकर चुनें, फिर **Add permissions** पर क्लिक करें:
       * `User.Read.All`
       * `SecurityAlert.Read.All`
       * `AuditLog.Read.All`
       * `Policy.Read.ConditionalAccess`
       * `AttackSimulation.Read.All`
       * `Device.Read.All`
       * `DeviceManagementManagedDevices.Read.All`
       * `IdentityRiskEvent.Read.All`
    6. `GroupMember.ReadWrite.All` को **केवल तभी** जोड़ें जब आप चाहते हों कि Playbooks समूह सदस्यता बदल सकें। इस कनेक्शन को केवल-पढ़ने योग्य (read-only) रखने के लिए इसे छोड़ दें।

    <Note>
      ये सभी डेटा स्ट्रीम के लिए न्यूनतम permissions हैं। यदि आप केवल कुछ स्ट्रीम सक्षम करना चाहते हैं, तो जिन स्ट्रीम का उपयोग नहीं करेंगे उनकी permissions छोड़ सकते हैं।
    </Note>
  </Step>

  <Step title="Admin consent प्रदान करें">
    Application permissions के लिए स्पष्ट admin consent आवश्यक है।

    1. **API permissions** पेज पर **Grant admin consent for \<your tenant name>** पर क्लिक करें।
    2. पुष्टि डायलॉग में **Yes** पर क्लिक करें।
    3. सत्यापित करें कि **Status** कॉलम में प्रत्येक permission के सामने **Granted** दिख रहा है।

    <Note>
      यदि **Grant admin consent** बटन धूसर (grayed out) है, तो आपके पास **Privileged Role Administrator** या **Global Administrator** अधिकार होने चाहिए। नई permissions जोड़ने पर हर बार admin consent पुनः प्रदान करना आवश्यक है।
    </Note>
  </Step>

  <Step title="Client secret बनाएँ">
    1. अपने ऐप के **Overview** पेज पर बाएँ मेनू में **Certificates & secrets** पर क्लिक करें।
    2. **Client secrets** टैब पर क्लिक करें, फिर **New client secret** पर क्लिक करें।
    3. विवरण दर्ज करें (उदा., `Living Security Platform`)।
    4. अपनी रोटेशन पॉलिसी के अनुरूप समाप्ति अवधि चुनें।
    5. **Add** पर क्लिक करें।

    <Warning>
      **Secret का मान तुरंत कॉपी कर लें।** Microsoft Entra ID पूरा client secret केवल एक बार दिखाता है। यदि आप उसे कॉपी करने से पहले किसी अन्य पेज पर चले जाते हैं, तो आपको उस secret को हटाकर नया बनाना होगा।
    </Warning>

    Secret को सुरक्षित रूप से संग्रहीत करें। समाप्ति से पहले उसे रोटेट करने के लिए कैलेंडर रिमाइंडर सेट करें — समाप्त हो चुका secret सिंक को `401 Unauthorized` के साथ विफल कर देता है।
  </Step>

  <Step title="Graph API और Authority hosts निर्धारित करें">
    commercial cloud पर अधिकांश संगठनों के लिए डिफ़ॉल्ट मानों का उपयोग करें:

    | फ़ील्ड | Commercial cloud मान |
    | - | - |
    | **Graph API host** | `graph.microsoft.com` |
    | **Authority host** | `login.microsoftonline.com` |

    सरकारी या sovereign clouds के लिए, अपने परिवेश के अनुरूप उपयुक्त endpoints का उपयोग करें।

    <Note>
      Graph API host और Authority host का मेल होना आवश्यक है — एक cloud की authority से प्राप्त tokens किसी अन्य cloud के Graph endpoint के लिए मान्य नहीं होते।
    </Note>
  </Step>
</Steps>

***

## भाग B — Living Security Platform में

*यह चरण प्रोग्राम स्वामी द्वारा पूरा किया जाता है, या सिस्टम एडमिन द्वारा, यदि उन्हें प्लेटफ़ॉर्म में आमंत्रित किया गया हो।*

<Steps>
  <ConnectInPlatform tile="Microsoft Entra ID (Client Credentials)">
    | फ़ील्ड | मान |
    | - | - |
    | **API Key** | भाग A, चरण 4 का Client Secret |
    | **Azure tenant ID** | भाग A, चरण 1 का Directory (tenant) ID |
    | **Client ID** | भाग A, चरण 1 का Application (client) ID |
    | **Graph API host** | `graph.microsoft.com` (या आपके cloud का endpoint) |
    | **Authority host** | `login.microsoftonline.com` (या आपके cloud का endpoint) |

    <img src="https://mintcdn.com/livingsecurity/oVkrOMkYmNevekTI/integrations/images/microsoft-entra-id-cc/connect-dialog.png?fit=max&auto=format&n=oVkrOMkYmNevekTI&q=85&s=2a192b0a28e753ad0e0bc0b640508136" alt="Microsoft Entra ID के लिए Living Security कनेक्ट डायलॉग" style={{maxWidth: "450px"}} width="576" height="692" data-path="integrations/images/microsoft-entra-id-cc/connect-dialog.png" />
  </ConnectInPlatform>
</Steps>

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

***

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

<AccordionGroup>
  <Accordion title="401 Unauthorized">
    Credentials अमान्य हैं या समाप्त हो चुके हैं। जाँचें:

    1. Client Secret समाप्त नहीं हुआ है और न ही रोटेट किया गया है
    2. Tenant ID और Client ID सही हैं
    3. Authority host आपके cloud परिवेश से मेल खाता है
  </Accordion>

  <Accordion title="403 Forbidden">
    ऐप पंजीकरण में permissions नहीं हैं या admin consent प्रदान नहीं किया गया था। सत्यापित करें:

    1. सभी आवश्यक permissions **API permissions** में सूचीबद्ध हैं
    2. प्रत्येक permission की स्थिति **Granted** दिख रही है (हरा चेकमार्क)
    3. permissions जोड़ने के बाद admin consent प्रदान किया गया था

    <Note>
      यदि आपने प्रारंभिक consent के बाद नई permissions जोड़ी हैं, तो आपको admin consent पुनः प्रदान करना होगा।
    </Note>
  </Accordion>

  <Accordion title="विशिष्ट डेटा स्ट्रीम के लिए खाली परिणाम">
    संभव है कि ऐप में उस स्ट्रीम की विशिष्ट permission न हो:

    * कोई उपयोगकर्ता नहीं → `User.Read.All` अनुपलब्ध है
    * कोई सुरक्षा अलर्ट नहीं → `SecurityAlert.Read.All` अनुपलब्ध है
    * कोई साइन-इन लॉग नहीं → `AuditLog.Read.All` अनुपलब्ध है
    * कोई अटैक-सिमुलेशन परिणाम नहीं → `AttackSimulation.Read.All` अनुपलब्ध है
    * कोई Entra ID डिवाइस नहीं → `Device.Read.All` अनुपलब्ध है
    * कोई Intune प्रबंधित डिवाइस नहीं → `DeviceManagementManagedDevices.Read.All` अनुपलब्ध है
    * कोई जोखिम डिटेक्शन नहीं → `IdentityRiskEvent.Read.All` अनुपलब्ध है, इसे जोड़ने के बाद admin consent पुनः प्रदान नहीं किया गया, या tenant Microsoft Entra ID P1 लाइसेंस की न्यूनतम सीमा से नीचे है
  </Accordion>

  <Accordion title="Token अनुरोध invalid_client के साथ विफल होता है">
    संभव है कि Graph API host और Authority host आपस में मेल न खाते हों। दोनों का एक ही cloud परिवेश (commercial, government आदि) से संबंधित होना आवश्यक है।
  </Accordion>

  <Accordion title="Playbook में समूह Actions दिखाई नहीं देते">
    समूह सदस्यता Actions तभी उपलब्ध कराए जाते हैं जब ये तीनों शर्तें पूरी हों:

    1. `GroupMember.ReadWrite.All` ऐप पंजीकरण में मौजूद है और admin consent प्रदान किया गया है। यदि आपने इसे हाल ही में जोड़ा है, तो एक घंटे तक प्रतीक्षा करें।
    2. किसी व्यवस्थापक ने कनेक्शन पर समूहों की एक allowlist निर्दिष्ट की है।
    3. कनेक्शन सक्रिय और स्वस्थ है।

    यदि आपने permission प्रदान कर दी है और फिर भी Actions उपलब्ध नहीं हैं, तो admin consent पुनः प्रदान करें — permissions बदलने पर Microsoft के लिए यह आवश्यक है।
  </Accordion>

  <Accordion title="Conditional access कनेक्शन या उसके Actions को ब्लॉक करता है">
    यदि आपके tenant में IP पते के आधार पर दायरा निर्धारित की गई कोई Conditional Access पॉलिसी है, तो वह इस कनेक्शन के credential वाले अनुरोधों को ब्लॉक कर सकती है। अधिकांश tenants प्रभावित नहीं होते — Microsoft Graph डिफ़ॉल्ट रूप से IP पते के आधार पर प्रतिबंध नहीं लगाता। यदि आप service principals के लिए IP-आधारित पॉलिसी लागू करते हैं, तो इस Integration के लिए पतों के **दो** सेट allowlist करने होंगे, क्योंकि सेटअप और डेटा सिंक अलग-अलग नेटवर्क से निकलते हैं।

    Living Security इस कनेक्शन का access token स्वयं बनाता है और उसे लगातार नवीनीकृत करता है, इसलिए token अनुरोध प्लेटफ़ॉर्म के अपने पतों से निकलते हैं, न कि उन पतों से जिनका उपयोग आपके डेटा सिंक करते हैं।

    समूह Actions अलग हैं। डिफ़ॉल्ट रूप से वे आपके डेटा सिंक की तरह ही रूट होते हैं और सिंक पतों से निकलते हैं। वे प्लेटफ़ॉर्म पतों पर तभी जाते हैं जब कोई व्यवस्थापक कनेक्शन को direct egress पर स्विच करता है।

    <EgressIpAllowlistBothSets system="Microsoft Entra ID" />

    दोनों सेट उस **named location** में जोड़ें जिसे आपकी Conditional Access पॉलिसी trust करती है या जिसे वह बाहर रखती है। Token अनुरोध `login.microsoftonline.com` तक पहुँचते हैं और डेटा अनुरोध `graph.microsoft.com` तक; दोनों का सफल होना आवश्यक है।

    यदि केवल सिंक पते allowlist किए गए हैं, तो token प्राप्त करते समय सेटअप विफल हो जाता है और कोई कनेक्शन नहीं बनता। यदि केवल प्लेटफ़ॉर्म पते allowlist किए गए हैं, तो सेटअप सफल हो जाता है और प्रत्येक सिंक कोई रिकॉर्ड नहीं लौटाता।
  </Accordion>
</AccordionGroup>

<PublicIntegrationNextSteps />


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