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

# Okta

Oleria provides identity security and access management teams with visibility and intelligence into who has access to what; where did they get that access; how are they using it; and, should they even have it. As part of that promise, we deep integrate your Okta instance into the Oleria platform. This document provides step-by-step guidance for integrating Okta with your Oleria workspace.

## Prerequisites

* The user granting these permissions must have super admin privileges

<Note>
  Standard integrations are configured with read-only permissions. Super admin permissions are limited to the API scopes specified in the steps below. Use a service account (and not an employee account) with the suggested privileges for the integration to ensure continuity.
</Note>

## Create an Oleria Application in Okta

<Steps>
  <Step title="Create a new app integration">
    Login to the Okta admin console, navigate to **Applications**, and select **Create App Integration**.

    <img src="https://mintcdn.com/dev-oleria/qpj7wui8I7Jh_PL8/images/integrations/okta/step-1.png?fit=max&auto=format&n=qpj7wui8I7Jh_PL8&q=85&s=2d8eb9a280b2a7904b26ce81e5f47935" alt="Login to Okta admin console, navigate to Applications, select Create App Integration" width="800" height="289" data-path="images/integrations/okta/step-1.png" />
  </Step>

  <Step title="Select API Services">
    Select **API Services** and select **Next**.

    <img src="https://mintcdn.com/dev-oleria/qpj7wui8I7Jh_PL8/images/integrations/okta/step-2.png?fit=max&auto=format&n=qpj7wui8I7Jh_PL8&q=85&s=a0676bb2839f881dd9932f5e8fb9639b" alt="Select API Services and click next" width="800" height="448" data-path="images/integrations/okta/step-2.png" />
  </Step>

  <Step title="Name the application">
    Give the App Integration Name as "Oleria" and select **Save**.

    <img src="https://mintcdn.com/dev-oleria/qpj7wui8I7Jh_PL8/images/integrations/okta/step-3.png?fit=max&auto=format&n=qpj7wui8I7Jh_PL8&q=85&s=1df06f0d4486a6b44b2591d4049e589a" alt="Give App Integration Name as Oleria and Save" width="800" height="224" data-path="images/integrations/okta/step-3.png" />
  </Step>

  <Step title="Configure client credentials">
    In the Oleria app, go to **General** → **Client Credentials** → select **Edit**.

    * Set **Client authentication** to **Public key / Private key**
    * Select **Add Key** to generate a key
    * Save the **Client ID** - you will need it when connecting in Oleria

    <Note>
      Make sure there is only one key active for this application. The integration will not pull data if there are multiple active keys.
    </Note>

    <img src="https://mintcdn.com/dev-oleria/qpj7wui8I7Jh_PL8/images/integrations/okta/step-4.png?fit=max&auto=format&n=qpj7wui8I7Jh_PL8&q=85&s=4fcfb08f1dde300ddb7f35016e4bc1d9" alt="Okta API key configuration showing single active key requirement" width="671" height="771" data-path="images/integrations/okta/step-4.png" />
  </Step>

  <Step title="Generate a public key">
    Add a public key by selecting **Generate new key**.

    <img src="https://mintcdn.com/dev-oleria/qpj7wui8I7Jh_PL8/images/integrations/okta/step-5.png?fit=max&auto=format&n=qpj7wui8I7Jh_PL8&q=85&s=64540a233e67a660606ff2340cc30d42" alt="Add a public key by selecting the Generate new key" width="587" height="358" data-path="images/integrations/okta/step-5.png" />
  </Step>

  <Step title="Save the private key">
    Save the key in **PEM** format and select **Copy to clipboard**. You will need this private key when connecting in Oleria.

    After saving, copy the key's **Key ID** from the Public Keys table - you will need it as the **Private Key Id** when connecting in Oleria.

    <Note>
      You will need to generate a new key if you forget to copy or lose the key.
    </Note>

    <img src="https://mintcdn.com/dev-oleria/qpj7wui8I7Jh_PL8/images/integrations/okta/step-6.png?fit=max&auto=format&n=qpj7wui8I7Jh_PL8&q=85&s=d676868cec6ab3083a778c7fe809888d" alt="Save the key in PEM format and select Copy to clipboard" width="567" height="712" data-path="images/integrations/okta/step-6.png" />
  </Step>

  <Step title="Grant API scopes">
    Go to **Okta API Scopes** and grant the following permissions:

    ```
    okta.apps.read
    okta.appGrants.read
    okta.factors.read
    okta.groups.read
    okta.logs.read
    okta.roles.read
    okta.userTypes.read
    okta.users.read
    okta.policies.read
    okta.features.read
    okta.authenticators.read
    okta.apiTokens.read
    okta.agentPools.read
    okta.oauthIntegrations.read
    ```
  </Step>

  <Step title="Grant remediation permissions (optional)">
    To perform remediations, grant the following additional permissions:

    To disable dormant accounts:

    ```
    okta.users.manage
    ```

    To remove dormant accounts from groups:

    ```
    okta.groups.manage
    ```

    To validate that the Oleria app has been granted group management permission:

    ```
    okta.appGrants.read
    ```
  </Step>

  <Step title="Assign the Super Administrator role">
    Go to **Admin roles**, select **Edit assignments**, and add the **Super Administrator** role.

    Narrower roles don't cover everything this integration reads: a **Read-only Administrator** role lacks access to administrator metadata (see the note below), and a custom role scoped to the same resource set still couldn't retrieve activity log data. Super Administrator is the only built-in role confirmed to return both.

    Okta requires both the role and the API scopes together, though - the role alone grants the app no capability. With the Super Administrator role and only the read-only scopes from Step 7, the Oleria app can read your Okta data but cannot write, remediate, or administer anything. Write access is limited to exactly the remediation scopes you granted in Step 8, if you chose to enable them. The role only raises the ceiling of what's possible - the scopes you grant are what Oleria can actually do.

    <Note>
      Read-only Administrators can't view administrators or their role assignments in Okta - that permission belongs to Super Administrator alone, so a read-only connection can't retrieve user role assignments via the API.
    </Note>

    <img src="https://mintcdn.com/dev-oleria/qpj7wui8I7Jh_PL8/images/integrations/okta/step-7.png?fit=max&auto=format&n=qpj7wui8I7Jh_PL8&q=85&s=5d7802fd94147c3e6d390ad3c1c66597" alt="Okta admin role comparison: super admin vs read-only admin capabilities" width="800" height="293" data-path="images/integrations/okta/step-7.png" />
  </Step>
</Steps>

## Connect Okta to Oleria

<Steps>
  <Step title="Open the integration">
    Go to your Oleria workspace, select **Integrations** → select **Okta**.

    <img src="https://mintcdn.com/dev-oleria/qpj7wui8I7Jh_PL8/images/integrations/okta/step-8.png?fit=max&auto=format&n=qpj7wui8I7Jh_PL8&q=85&s=65634db89e84050390f0dfc9ce37f795" alt="Goto your Oleria workspace, select Integrations, select Okta" width="800" height="159" data-path="images/integrations/okta/step-8.png" />
  </Step>

  <Step title="Provide your credentials">
    Select **Continue** and provide the following:

    * **Org URL** - your Okta URL, for example `https://yourcompany.okta.com` (or your custom Okta domain, if you've configured one). Don't use the Okta admin URL - it includes `-admin` before `.okta.com` (for example `https://yourcompany-admin.okta.com`) and won't work here.
    * **Client ID** - copied from the app configuration above
    * **Private Key** - copied from the app configuration above
    * **Private Key Id** - the key's **Key ID**, copied from the Public Keys table in Step 6

          <img src="https://mintcdn.com/dev-oleria/qpj7wui8I7Jh_PL8/images/integrations/okta/step-9.png?fit=max&auto=format&n=qpj7wui8I7Jh_PL8&q=85&s=fa588355702e37f821dc8b374aca81ae" alt="Provide Org URL, Client ID, Private Key, and Private Key Id" width="963" height="1231" data-path="images/integrations/okta/step-9.png" />
  </Step>

  <Step title="Confirm the connection">
    Find the newly integrated Okta instance in your Oleria workspace connected integrations.

    <img src="https://mintcdn.com/dev-oleria/qpj7wui8I7Jh_PL8/images/integrations/okta/step-10.png?fit=max&auto=format&n=qpj7wui8I7Jh_PL8&q=85&s=506b708bab0175b8046f690897e57808" alt="Find the newly integrated Okta instance in your Oleria workspace connected integrations." width="800" height="298" data-path="images/integrations/okta/step-10.png" />
  </Step>
</Steps>

## Contact us

For questions about this integration, contact us at [support@oleria.com](mailto:support@oleria.com).
