# Okta

This topic describes how to integrate P0 with your Okta instance for effective identity and access management. This integration enables you to:

* Manage user access and permissions through your Okta instance
* Provision AWS access when users federate via Okta SAML
* Maintain an inventory of the user directory for Identity and Access Management (IAM) assessments

This guide contains the following sections:

1. [Prerequisites](#prerequisites)
2. [Integrate Okta for P0](#integrate-okta-for-p0)
3. [Configure Okta](#configure-okta)
4. [Configure Group Management](#configure-group-management)
5. [Next steps](#next-steps)

## Prerequisites

* Existing P0 account at [P0.app](https://p0.app)
* Administrative access to an Okta instance. You must have one of the following roles:
  * Super Administrator
  * Application Administrator

## Integrate Okta for P0

You can integrate Okta from the P0 app:

1. From the [P0.app](https://p0.app) site, navigate to **Integrations**, then click **Okta**.

   <figure><img src="https://3783273641-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSQNwGQz62W737pY0FzVb%2Fuploads%2Fgit-blob-dc03b70a4ccc52c0dd3729caf1909e9c9d26f6d6%2Fimage%20(17).png?alt=media" alt="" width="375"><figcaption></figcaption></figure>
2. From the list of **Available components**, click **Directory listing**.

   <figure><img src="https://3783273641-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSQNwGQz62W737pY0FzVb%2Fuploads%2Fgit-blob-da04d3d919d39642d0c55f06377d8f1b2813ce33%2Fimage.png?alt=media" alt="" width="563"><figcaption></figcaption></figure>
3. On the **Directory listing** page, click **+ Add directory**.

{% hint style="info" %}
Keep the browser tab open for the [P0.app](https://p0.app) **Directory listing** page. You will return to this page in later steps.
{% endhint %}

<figure><img src="https://3783273641-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSQNwGQz62W737pY0FzVb%2Fuploads%2Fgit-blob-5db50a4eb5012b9fc0bb850415a1a897e93fd300%2FPicture1.png?alt=media" alt="" width="375"><figcaption></figcaption></figure>

4. In a new tab, log into the [**Okta Admin Dashboard**](https://support.okta.com/help/s/article/How-to-access-Okta-admin-console-when-Default-App-for-Sign-In-Widget-is-enabled?language=en_US).

{% hint style="info" %}
Keep the browser tab open for the **Okta Admin Dashboard** page. You will return to this page in later steps.
{% endhint %}

<figure><img src="https://3783273641-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSQNwGQz62W737pY0FzVb%2Fuploads%2Fgit-blob-de0611d9fbdab9e262198bc16b06f2935bbf8593%2FPicture1.png?alt=media" alt="" width="375"><figcaption></figcaption></figure>

5. Copy the directory identifier directly from the URL in the browser's address bar.

<figure><img src="https://3783273641-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSQNwGQz62W737pY0FzVb%2Fuploads%2Fgit-blob-47ba67fe4051a996b10bb80339ea7321e6baf832%2FPicture1.png?alt=media" alt="" width="563"><figcaption></figcaption></figure>

6. Return to the browser tab for the [P0.app](https://p0.app) **Directory listing** page, enter the directory identifier, which can be either a domain (e.g. `example.com`) or a URL (e.g.,`example.com/director`), and click **Next**.

{% hint style="info" %}
Replace `company.okta.com` with your domain.
{% endhint %}

<figure><img src="https://3783273641-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSQNwGQz62W737pY0FzVb%2Fuploads%2Fgit-blob-7f68468def23377b8511ae4117f3f165a81cd68f%2FPicture1.png?alt=media" alt="" width="563"><figcaption></figcaption></figure>

7. Copy the Okta public key generated during the installation. You'll use the copied key to[ Configure Okta](#configure-okta).

{% hint style="warning" %}

* Do not click **Next** yet. You must complete the steps in [Configure Client Credentials](#configure-client-credentials) before clicking **Next.**
* Ensure you copy the *entire* key. The contents of the key cannot be accessed again after you click **Next**.
* Keep the browser tab open for the **Directory listing** page. You will return to this page in later steps.
  {% endhint %}

<figure><img src="https://3783273641-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSQNwGQz62W737pY0FzVb%2Fuploads%2Fgit-blob-a59d0cb16a41e141883faab1e99929b06be77895%2FScreenshot%202025-04-19%20at%204.33.24%E2%80%AFPM.png?alt=media" alt="" width="563"><figcaption></figcaption></figure>

## Configure Okta

Configure settings in Okta to enable secure identity management for your P0 app. In this setup process you will:

1. [Create an Application Instance](#create-an-application-instance)
2. [Configure Client Credentials](#configure-client-credentials)
3. [Assign API Scopes](#assign-api-scopes)
4. [Assign Admin Roles](#assign-admin-roles)
5. [Link Okta and P0](#link-okta-and-p0)

### Create an Application Instance

Use the application instance to create a secure identity for P0 within Okta, which enables authentication and access management:

1. In the Okta browser tab, click **Applications** from the menu, then click **Create App Integration**.

   <figure><img src="https://3783273641-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSQNwGQz62W737pY0FzVb%2Fuploads%2Fgit-blob-373ef7ffa8d38d389c12335ab710ae57a08e26a2%2Fimage.png?alt=media" alt="" width="563"><figcaption></figcaption></figure>
2. Select **API Services** as the application type, then click **Next**.

   <figure><img src="https://3783273641-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSQNwGQz62W737pY0FzVb%2Fuploads%2Fgit-blob-69610eeb24e3af02a32133a1bf6f925aa3370f28%2Fimage.png?alt=media" alt="" width="563"><figcaption></figcaption></figure>
3. Enter a name for your application (e.g. `P0 Integration App`), then click **Save**.

   <figure><img src="https://3783273641-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSQNwGQz62W737pY0FzVb%2Fuploads%2Fgit-blob-7aa1f33874e912de58de927d1d7fad2d78d42baa%2Fimage.png?alt=media" alt="" width="563"><figcaption></figcaption></figure>

### Configure Client Credentials

Configure the client credentials to set up the secure authentication keys:

1. Select **Applications** in your Okta dashboard, then click the newly created application under the **General** tab.\\

   <figure><img src="https://3783273641-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSQNwGQz62W737pY0FzVb%2Fuploads%2Fgit-blob-09dc7e56cf61fd3132b1c338c7de2b23f05577a1%2Fimage.png?alt=media" alt="" width="563"><figcaption></figcaption></figure>
2. In the **Client Credentials** section, click **Edit**.

   <figure><img src="https://3783273641-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSQNwGQz62W737pY0FzVb%2Fuploads%2Fgit-blob-2829d12ec189068561e2d7041496089d61487eff%2Fimage.png?alt=media" alt="" width="563"><figcaption></figcaption></figure>
3. Select **Public key / Private key** authentication, then click **Add key**.

   <figure><img src="https://3783273641-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSQNwGQz62W737pY0FzVb%2Fuploads%2Fgit-blob-e0be1544ed6f9379e793c39a901f74f4c636375a%2Fimage.png?alt=media" alt="" width="563"><figcaption></figcaption></figure>
4. Paste the public key you copied from P0 during the [public key generation](#generate-a-public-key) process, then click **Done**.

   <figure><img src="https://3783273641-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSQNwGQz62W737pY0FzVb%2Fuploads%2Fgit-blob-bd80a1b4386d34fee9eda0f496555c2f2a4d5151%2Fimage.png?alt=media" alt="" width="375"><figcaption></figcaption></figure>
5. Uncheck the checkbox requiring "Proof of possession".

   <figure><img src="https://3783273641-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSQNwGQz62W737pY0FzVb%2Fuploads%2Fgit-blob-f23010e5ab14d9605b84c2f334b9c2582846c1a3%2FScreenshot%202025-04-19%20at%204.36.39%E2%80%AFPM.png?alt=media" alt="" width="563"><figcaption></figcaption></figure>
6. Return to the browser tab for the [P0.app](https://p0.app) **Directory listing** page and click **Next.**

### Assign API Scopes

Assign the API scopes that P0 needs to manage permissions for users and groups in Okta:

1. Click the **Okta API Scopes** tab.

   <figure><img src="https://3783273641-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSQNwGQz62W737pY0FzVb%2Fuploads%2Fgit-blob-de81a55201ed1943491d0a39765a6033e2995d30%2Fimage.png?alt=media" alt="" width="563"><figcaption></figcaption></figure>
2. Select each of the following scopes, then click **Grant** to provide the required permissions:
   * `okta.groups.read`
   * `okta.users.read`
3. (Optional) If Amazon Web Services (AWS) user provisioning is set up using the [Okta SAML application](https://help.okta.com/en-us/content/topics/deploymentguides/aws/aws-configure-identity-provider.htm), grant these scopes:
   * `Okta.apps.manage` - Allows P0 to configure and manage the Okta SAML application connected to AWS.
   * `Okta.schemas.manage` - Allows P0 to manage custom user schemas, ensuring accurate synchronization of user attributes with AWS.

### Assign Admin Roles

Assign admin roles to the P0 Integration App so that it has the permissions needed to read your Okta directory:

1. Click the **Admin roles** tab on your P0 Integration App.
2. Click **Edit assignments**.
3. Click **Add assignment**.
4. From the **Role** dropdown, select **Group Administrator** (for read access to groups) and click **Save Changes**.

{% hint style="info" %}
If you also plan to configure [Group Management](#configure-group-management), you can select **Group Membership Administrator** instead, which includes the permissions needed for both directory listing and group assignment.
{% endhint %}

### Link Okta and P0

Connect the Okta Client ID with P0 to complete the integration:

1. Return to the **General** tab of your Okta application, and copy the **Client ID**.

   <figure><img src="https://3783273641-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSQNwGQz62W737pY0FzVb%2Fuploads%2Fgit-blob-aa8629cc5289712679744e0021e366af6a50e851%2Fimage.png?alt=media" alt="" width="563"><figcaption></figcaption></figure>
2. Return to the browser tab for the [P0.app](https://p0.app) **Directory listing** page, and paste the Client ID into the **Okta application client ID** text field.

   <figure><img src="https://3783273641-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSQNwGQz62W737pY0FzVb%2Fuploads%2Fgit-blob-0007491515acf57bdcc32fb5f6b875c998b8793b%2Fimage.png?alt=media" alt="" width="563"><figcaption></figcaption></figure>
3. Click **Finish**. Once installation is complete, your Okta directory is displayed on the **Directory listing** page.

## Configure Group Management

Set up and manage user groups in Okta to control access and permissions:

1. From the [p0.app](https://p0.app) site, navigate to **Integrations**, then select **Okta**.

   <figure><img src="https://3783273641-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSQNwGQz62W737pY0FzVb%2Fuploads%2Fgit-blob-dc03b70a4ccc52c0dd3729caf1909e9c9d26f6d6%2Fimage%20(17).png?alt=media" alt="" width="375"><figcaption></figcaption></figure>
2. From the list of **Available components**, click **Group assignment**.

   <figure><img src="https://3783273641-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSQNwGQz62W737pY0FzVb%2Fuploads%2Fgit-blob-543d6cb48bb9e7fe650babb15ac673c82061ec09%2Fimage.png?alt=media" alt="" width="563"><figcaption></figcaption></figure>
3. On the **Group assignment** page, click **+ Add** **directory**.

   <figure><img src="https://3783273641-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSQNwGQz62W737pY0FzVb%2Fuploads%2Fgit-blob-215e728dfbc79a08f4f352c3afa0fd2faac1c2f2%2Fimage.png?alt=media" alt="" width="531"><figcaption></figcaption></figure>
4. Select the [directory identifier](#integrate-okta-for-p0) from the dropdown and click **Next**.

   <figure><img src="https://3783273641-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSQNwGQz62W737pY0FzVb%2Fuploads%2Fgit-blob-2a46616cd93bb39e5f15b05d690e55ae8c0e9851%2Fimage.png?alt=media" alt="" width="563"><figcaption></figcaption></figure>
5. Switch back to the Okta browser tab, click the **Okta API Scopes** tab.

   <figure><img src="https://3783273641-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSQNwGQz62W737pY0FzVb%2Fuploads%2Fgit-blob-38a79abacfcecb8319a444287743fb863c92bc0a%2FScreenshot%202025-04-19%20at%209.24.23%E2%80%AFPM.png?alt=media" alt="" width="563"><figcaption></figcaption></figure>
6. Add the `okta.groups.manage` scope to the Granted scopes by clicking **Grant next to it.**
7. Click the **Admin roles** tab.

   <figure><img src="https://3783273641-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSQNwGQz62W737pY0FzVb%2Fuploads%2Fgit-blob-1b4615fa9927f09b952ae20cf70e38583e065142%2Fimage.png?alt=media" alt="" width="429"><figcaption></figcaption></figure>
8. Click **Edit assignments**.

   <figure><img src="https://3783273641-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSQNwGQz62W737pY0FzVb%2Fuploads%2Fgit-blob-17223f302807a05eb8284ec06d43d62797d7f3cf%2Fimage.png?alt=media" alt="" width="563"><figcaption></figcaption></figure>
9. Select **Add assignment**.

   <figure><img src="https://3783273641-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSQNwGQz62W737pY0FzVb%2Fuploads%2Fgit-blob-047d4fffffa711355d55646468be3f1a6890bc80%2Fimage.png?alt=media" alt="" width="563"><figcaption></figcaption></figure>
10. From the **Role** dropdown, select **Group Membership Administrator** and click **Save Changes**.

    <figure><img src="https://3783273641-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSQNwGQz62W737pY0FzVb%2Fuploads%2Fgit-blob-248d6c1720858ea87d9800e5449cbb6b6603f26a%2FScreenshot%202025-04-19%20at%209.30.28%E2%80%AFPM.png?alt=media" alt="" width="563"><figcaption></figcaption></figure>
11. Return to the browser tab for the [P0.app](https://p0.app/) **Group assignment** page and click **Next**.

    <figure><img src="https://3783273641-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSQNwGQz62W737pY0FzVb%2Fuploads%2Fgit-blob-a215a07d823c316b0001d053d682bc70bb2ec5e7%2Fimage%20(26).png?alt=media" alt="" width="563"><figcaption></figcaption></figure>
12. Click **Finish**.

    <figure><img src="https://3783273641-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSQNwGQz62W737pY0FzVb%2Fuploads%2Fgit-blob-f6a37a7fb87ff82aab9926ad8d4abc837666589b%2Fimage.png?alt=media" alt="" width="563"><figcaption></figcaption></figure>

{% hint style="success" %}
Congratulations! You've configured different identity groups after setting up Okta authentication for P0.
{% endhint %}

## Next steps

After completing the Okta integration, you can assign P0 roles (such as Owner and Security Reviewer) based on Okta groups. See [Role-Based Access Control](https://docs.p0.dev/p0-management/role-based-access-control#assigning-roles-with-okta-groups) for setup instructions, including the required Okta Login app group claims configuration.
