# Okta Data Integration

## Overview <a href="#overview" id="overview"></a>

The Cisco Identity Intelligence security platform reads a variety of user account data and event data to build a full picture of the identity security posture of your Okta tenant, as well as on-going identity threats against your organization.

## Okta OAuth2 Data Integration <a href="#okta-data-integration-1" id="okta-data-integration-1"></a>

Identity Intelligence has created an OAuth2 SPI service application in the Okta network for the purpose of the data ingestion. &#x20;

This bar below is the link to the application in the Okta network :point\_down:<br>

{% embed url="<https://www.okta.com/integrations/cisco-identity-intelligence-read-write-management-api-service/>" %}

To implement this application, do the following:

1. Confirm that your Okta organization is using Okta Identity Engine (OIE), and not Okta Classic. [Upgrade if needed](https://help.okta.com/oie/en-us/content/topics/identity-engine/oie-upgrade-eligibility.htm). If you're unsure which solution you're using, check the footer on any page of the Okta Admin Console. The version number is appended with E for OIE orgs and C for Classic Engine orgs.&#x20;
2. Click **Add Integration** from the link in the bar above :point\_up: or search for the API Integration within the Okta Admin Console (If you have multiple tenants, ensure you're signed into the correct Okta org!) and click **Next**
3. Click **Install & Authorize**<br>

   <figure><img src="https://582105988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqPSBzsjxd7KYg9DNVZ4l%2Fuploads%2F3ZTvAS6Bt4W1p4wMYtlm%2Fimage.png?alt=media&#x26;token=9dac43eb-cb17-4290-8355-c4a07037b411" alt=""><figcaption></figcaption></figure>
4. Copy the client secret to a secure location, such as a key vault, if desired
5. Click **Done**
6. Within your CII tenant, go to the **Integrations** page and click **Add Integration**.  Select the Okta integration. &#x20;
7. Enter the display name, Issuer (your Okta URL), Client ID, and Client Secret in the respective fields and select the **Save** button<br>

   <figure><img src="https://582105988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqPSBzsjxd7KYg9DNVZ4l%2Fuploads%2FuMzpz6tJKlV0aiDcZJ9x%2Fimage.png?alt=media&#x26;token=d470bfcf-c323-4daf-9ed4-92c35b3d0a03" alt=""><figcaption></figcaption></figure>

<br>

8. Under the **Advanced Tab**, review the answers to the questions in the top section of the page to make sure they are answered correctly. Then ensure the integration is set to "Managed" to enable the relevant data types based on the answers to those questions. Read our documentation about [Managed Integrations ](https://docs.oort.io/integrations/managed-integrations)to learn about the benefits<br>

   <figure><img src="https://582105988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqPSBzsjxd7KYg9DNVZ4l%2Fuploads%2F3Pr4KocNwzFltccS7KJ8%2FScreenshot%202026-01-22%20at%204.46.25%E2%80%AFPM.png?alt=media&#x26;token=203b2646-38ab-4fba-bf26-3017689c9eb7" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
After configuration is completed in both systems, you may see a yellow banner on the Identity Intelligence API Service App page in the Okta Admin Console that states, "Cisco Identity Intelligence - Read - Write Management API Service is not configured until you complete the setup instructions".  You can disregard this message. The integration is fully configured
{% endhint %}

### Test Connectivity

1. On the Integrations page, click the **three dots menu** on the right side of the new Okta integration tile. Click **Test Connectivity**.

### Configure Okta Event Streaming

If you have the Log Streaming module as part of your current Okta subscription follow the steps below to configure Log Streaming. **Log Streaming is not required to configure the Okta Data Integration, but it is recommended if you have it.**&#x20;

1. Once successfully verified, click the 3-dot menu again and select **Edit settings** for the Okta integration.  Go to the **Event Streaming** tab.&#x20;
2. Use the information provided to set up Okta log streaming via an AWS Eventbridge.  [Instructions can be found here](https://docs.oort.io/integrations/okta-aws-eventbridge-streaming-integration).   &#x20;
3. After registering the log stream and clicking **Save**, use the 3-dot menu to click **Collect Now** to begin initial data collection.

**NOTE** - Due to Okta API rate limiting, the initial data collection, including historical log data, may take 24 hrs or longer. Your Identity Intelligence technical contact will assist with any questions in this process.

## Okta Read-only OAuth 2.0 Client Application (BETA)

This section provides a step-by-step guide for configuring a read-only **OAuth 2.0 API service integration** with Okta. By following this guide, you will enable secure access to Okta APIs with the least privilege principle, ensuring that the integration can only retrieve (read) data without the ability to modify it. This is particularly useful for use cases such as reporting, monitoring, or auditing, where data access is required but data manipulation is not permitted.

OAuth 2.0 is a widely adopted authorization framework that provides secure and scalable access delegation. In this context, Okta's implementation of OAuth 2.0 allows you to grant specific API permissions to applications while maintaining control over sensitive resources.

#### Key Features of This Integration (Beta)

* **Read-Only Access**: Limit the scope of API access to read-only operations, ensuring enhanced security.
* **Scoped Permissions**: Use OAuth 2.0 scopes to define the exact level of access the integration is permitted.
* **Service Account Integration**: Create a service account that interacts programmatically with Okta APIs.
* **Secure Authentication**: Leverage client credentials for authentication to ensure secure communication.

#### Who Should Use This Guide?

This guide is intended for:

* Developers building applications that need to query Okta data.
* IT administrators configuring service accounts for reporting or monitoring.
* Security teams implementing least-privilege access for API integrations.

#### Prerequisites

Before you begin, ensure you have the following:

1. <mark style="color:$danger;">**IMPORTANT:**</mark>**&#x20;Contact Cisco or Duo Support to have this feature enabled for your CII tenant.**&#x20;
2. **Administrative Access to Okta**: You must have the necessary permissions to create and manage API service integrations within your Okta instance.
3. **Okta Developer Account or Production Environment**: A valid Okta environment where the integration will be configured.
4. **Understanding of OAuth 2.0**: Familiarity with OAuth 2.0 concepts such as scopes, tokens, and client credentials.

#### What You'll Learn

By the end of this section, you will:

* Set up an OAuth 2.0 application in Okta.
* Configure client credentials for secure API authentication.
* Define and apply the appropriate read-only scopes for the integration.
* Test the integration to ensure it retrieves data as expected.

Let’s get started with the configuration process!

Okta Integration: creation of the OIDC client in Okta with Public/Private Keys authentication for read-only integration

**Step 1: Log into Okta Admin Console**

1. Open your Okta Admin Console (e.g., <https://your-org.okta.com/>).
2. Log in using your admin credentials.

**Step 2: Create a custom admin role**

1. Navigate to Security -> Administrators -> Roles tab
2. Click **Create role**
3. Provide a name and description for the role
4. Under Permissions, select Identity and Access Management -> **View roles, resources, and admin assignments**
5. Click Save Role

<figure><img src="https://582105988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqPSBzsjxd7KYg9DNVZ4l%2Fuploads%2FRgiuuZngEciHd8pomWbU%2F2025-09-02_13-33-18.jpg?alt=media&#x26;token=b46139eb-d9df-4481-93a2-0db1969e8ac7" alt=""><figcaption></figcaption></figure>

**Step 3: Create an API Services Application**

1. In the Okta Admin Console, go to Applications > Applications.
2. Click Create new App Integration.
3. Choose **API Services** and click **Next**.<br>

   <figure><img src="https://582105988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqPSBzsjxd7KYg9DNVZ4l%2Fuploads%2F0beTURYFVsomGFsvtmHF%2Fimage.png?alt=media&#x26;token=c314db45-02ff-4889-94c3-3508aa6ff7fb" alt=""><figcaption></figcaption></figure>
4. Enter a name for your App Integration and click Save.
5. Under Client Credentials, click Client Authentication and then **Edit**.
6. Select **Public key / Private key** as the authentication method.
7. Check the box to Save keys in Okta.
8. Click **Add Key**, then **Generate new key**.
9. Choose Private Key in **PEM format** (not JSON), and make sure to <mark style="color:$warning;">**copy the private key and KID to a secure location**</mark> (you won’t be able to see the private key again once you close this window).<br>

   <figure><img src="https://582105988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqPSBzsjxd7KYg9DNVZ4l%2Fuploads%2Fo7BeTSKzRCrMIb4CtkB4%2Fimage.png?alt=media&#x26;token=ed77debd-572d-47f6-9165-5fc34ea709e3" alt=""><figcaption></figcaption></figure>
10. Click **Done**, then **Save**.
11. Under General Settings, click **Edit**, unselect **Proof of possession**, then **Save**<br>

    <figure><img src="https://582105988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqPSBzsjxd7KYg9DNVZ4l%2Fuploads%2Fow5PsLLZ85tjIEhSLzK5%2Fimage.png?alt=media&#x26;token=738bebfe-e32b-4d20-9650-83cf4773bf2f" alt=""><figcaption></figcaption></figure>

&#x20;

**Step 4: Configure Permissions**

1. Go to the Okta API Scopes tab.
2. Grant the necessary permissions for the scopes required by CII.\ <br>

   <figure><img src="https://582105988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqPSBzsjxd7KYg9DNVZ4l%2Fuploads%2FpRxqMzNE2fqNyCacvyMp%2Fimage.png?alt=media&#x26;token=70a8858d-cdc3-4cc5-ad29-538e31925ad4" alt=""><figcaption></figcaption></figure>

&#x20;

<figure><img src="https://582105988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqPSBzsjxd7KYg9DNVZ4l%2Fuploads%2FlDUEr2cusezJCcQwdsEY%2Fimage.png?alt=media&#x26;token=501f231d-0c15-4410-a02f-7085cc8f6a91" alt=""><figcaption></figcaption></figure>

**Step 5: Configure Admin Roles**&#x20;

1. On the Admin roles tab, add two roles to this application
   1. Super Admin role OR Org Administrator role (See below.  Without Org Admin role, CII will **not** be able to collect `API Service Integration` details for the tenant)<br>

      <figure><img src="https://582105988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqPSBzsjxd7KYg9DNVZ4l%2Fuploads%2FbulIo9a7ehYgiBMxvsdk%2Fimage.png?alt=media&#x26;token=266995f3-b723-431e-b62f-3919e369801e" alt=""><figcaption></figcaption></figure>

      <br>
   2. The custom role created above,  with a resource set of `All Identity and Access Management resources`\
      \
      NOTE - the application is still constrained by the granted API scopes.  However, [per Okta](https://developer.okta.com/docs/guides/implement-oauth-for-okta-serviceapp/main/#use-the-client-credentials-grant-flow), a corresponding role must be granted that allows the selected scopes, such as `okta.schemas.read`\
      See the article linked in this note for more details.&#x20;

<figure><img src="https://582105988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqPSBzsjxd7KYg9DNVZ4l%2Fuploads%2Fis8j0yYa85Cm1hG0390z%2F2025-09-02_13-35-43.jpg?alt=media&#x26;token=8fa3cfd9-aad2-496d-b636-dc9dcc478464" alt=""><figcaption></figcaption></figure>

**Step 6: Configure Okta Integration in CII**

1. Within CII, naviate to Integrations -> Add Integration -> Okta
2. Check the box for <mark style="color:blue;">**public/private key authentication**</mark>

{% hint style="info" %} <mark style="color:$warning;">**NOTE:**</mark>  <mark style="color:$primary;">If you do not see this option, contact Cisco or Duo support to have this feature enabled for your tenant.</mark>&#x20;
{% endhint %}

3. Use the following details to configure the Okta integration in CII:
   1. Display name
   2. Okta domain (URL)
   3. Client ID
   4. KID
   5. Private Key PEM file<br>

      <figure><img src="https://582105988-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqPSBzsjxd7KYg9DNVZ4l%2Fuploads%2F6fq1o2Lfp9bVlMHCUOit%2Fimage.png?alt=media&#x26;token=eac520d6-3831-43c3-9fd2-0d4f349175db" alt=""><figcaption></figcaption></figure>
4. Click Connect and the API connection will be tested automatically.&#x20;
5. We highly recommend implementing [#configure-okta-event-streaming](#configure-okta-event-streaming "mention")

&#x20;

&#x20;
