> ## Documentation Index
> Fetch the complete documentation index at: https://openmetadata-add-ontology-explorer-docs.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Okta SSO | OpenMetadata Authentication Integration

> Use Okta’s implicit flow for browser-based apps to issue ID tokens directly to the frontend, enabling fast, lightweight user authentication.

# Implicit Flow

### Step 1: Configuring the App

* Once you are in the **Create a new app integration** page, select **OIDC - OpenID Connect**.
* Next, select the **Application type -> Single-Page Application**.
* Once selected, click **Next**.

<img src="https://mintcdn.com/openmetadata-add-ontology-explorer-docs/BMFswgsYdPhHo6eK/public/images/deployment/security/okta/configuring-the-app.png?fit=max&auto=format&n=BMFswgsYdPhHo6eK&q=85&s=9cc1e61afb30dc97d3d8db2198eef7a5" alt="configuring-the-app" width="1537" height="1353" data-path="public/images/deployment/security/okta/configuring-the-app.png" />

* From the **General Settings** page,
  * Enter an **App integration name**
  * Select the following in **Grant type**:
    * **Authorization Code**
    * **Refresh Token** - For the refresh token behavior, it is recommended to select the option to 'Rotate token after every use'.
    * **Implicit (hybrid)** - Select the options to allow ID Token and Access Token with implicit grant type.
  * Enter the **Sign-in redirect URIs**
    * `http://localhost:8585/callback`
    * `http://localhost:8585/silent-callback`
  * Enter the **Sign-out redirect URIs**
  * Enter the **Base URIs**
  * Select the required option for **Controlled access**
* Click **Save**.

<img src="https://mintcdn.com/openmetadata-add-ontology-explorer-docs/BMFswgsYdPhHo6eK/public/images/deployment/security/okta/general-settings-click-save.png?fit=max&auto=format&n=BMFswgsYdPhHo6eK&q=85&s=7cb855b40f809d574be864d6ee9817da" alt="general-settings-click-save" width="604" height="1040" data-path="public/images/deployment/security/okta/general-settings-click-save.png" />

* The app is now configured.

<img src="https://mintcdn.com/openmetadata-add-ontology-explorer-docs/f2Jjgbtam_DxDDLy/public/images/deployment/security/okta/app-is-configured.png?fit=max&auto=format&n=f2Jjgbtam_DxDDLy&q=85&s=f622fb1d83759c59f5ef7b722cf6a8ac" alt="app-is-configured" width="1441" height="3825" data-path="public/images/deployment/security/okta/app-is-configured.png" />

### Step 2: Add Authorization Server to get the Issuer URL

#### New Authorization Server

It is recommended to create a separate authorization server for different applications. The authorization server needs an endpoint, which'll be the Issuer URL.

* Click on **Security -> API** in the left navigation panel.

<img src="https://mintcdn.com/openmetadata-add-ontology-explorer-docs/BMFswgsYdPhHo6eK/public/images/deployment/security/okta/click-security-api.png?fit=max&auto=format&n=BMFswgsYdPhHo6eK&q=85&s=486486f59f64b1db189e8d9f94215579" alt="click-security-api" width="1052" height="647" data-path="public/images/deployment/security/okta/click-security-api.png" />

* From the **Authorization Servers** tab, click on **Add Authorization Server** button.

<img src="https://mintcdn.com/openmetadata-add-ontology-explorer-docs/f2Jjgbtam_DxDDLy/public/images/deployment/security/okta/click-add-authorization-server.png?fit=max&auto=format&n=f2Jjgbtam_DxDDLy&q=85&s=12e5962f87793630c29d9bc420e1395f" alt="click-add-authorization-server" width="2093" height="439" data-path="public/images/deployment/security/okta/click-add-authorization-server.png" />

* Enter a Name and Description.
* While creating the authorization server, an **Audience** must be provided for the server. The Audience is the **Client ID** of the single page application that was created. Refer the next Step 7 to locate the Client ID.
* **Save** the changes.

<img src="https://mintcdn.com/openmetadata-add-ontology-explorer-docs/f2Jjgbtam_DxDDLy/public/images/deployment/security/okta/add-auth-server-save-changes.png?fit=max&auto=format&n=f2Jjgbtam_DxDDLy&q=85&s=c534a8e241d9a80e028af1a252ae4eda" alt="add-auth-server-save-changes" width="1421" height="679" data-path="public/images/deployment/security/okta/add-auth-server-save-changes.png" />

This will generate the Issuer URL.

#### Default Authorization Server (not recommended )

It is recommended to create a separate authorization server for different applications. The authorization server needs an endpoint, which'll be the Issuer URL.

* Click on **Security -> API** in the left navigation panel.

<img src="https://mintcdn.com/openmetadata-add-ontology-explorer-docs/BMFswgsYdPhHo6eK/public/images/deployment/security/okta/click-security-api.png?fit=max&auto=format&n=BMFswgsYdPhHo6eK&q=85&s=486486f59f64b1db189e8d9f94215579" alt="click-security-api" width="1052" height="647" data-path="public/images/deployment/security/okta/click-security-api.png" />

* From the **Authorization Servers** tab, click on **default** server.

<img src="https://mintcdn.com/openmetadata-add-ontology-explorer-docs/BMFswgsYdPhHo6eK/public/images/deployment/security/okta/default-server.png?fit=max&auto=format&n=BMFswgsYdPhHo6eK&q=85&s=2979ad26995ba0b5a228148def810fde" alt="default-server" width="2240" height="764" data-path="public/images/deployment/security/okta/default-server.png" />

### Step 3: Change the Issuer URL from Dynamic to Okta URL

Once the Authorization Server has been added, navigate to Security >> API >> Authorization Servers and click on the authorization server created in the previous step.

<img src="https://mintcdn.com/openmetadata-add-ontology-explorer-docs/f2Jjgbtam_DxDDLy/public/images/deployment/security/okta/click-auth-server-from-prev-step.png?fit=max&auto=format&n=f2Jjgbtam_DxDDLy&q=85&s=ae95a6902520c0587ebc5340f389aeef" alt="click-auth-server-from-prev-step" width="2833" height="1525" data-path="public/images/deployment/security/okta/click-auth-server-from-prev-step.png" />

The Issuer URL shows up as Dynamic by default. Change the Issuer URL to Okta URL and save the changes.

<img src="https://mintcdn.com/openmetadata-add-ontology-explorer-docs/f2Jjgbtam_DxDDLy/public/images/deployment/security/okta/change-issuer-url.png?fit=max&auto=format&n=f2Jjgbtam_DxDDLy&q=85&s=07f035fe314f80de1e6931d72c19d056" alt="change-issuer-url" width="1214" height="1236" data-path="public/images/deployment/security/okta/change-issuer-url.png" />

### Step 4: Create a Default Scope

* To create a default scope from **Security -> API**, click on the required **Authorization Server**.

<img src="https://mintcdn.com/openmetadata-add-ontology-explorer-docs/f2Jjgbtam_DxDDLy/public/images/deployment/security/okta/click-req-auth-server.png?fit=max&auto=format&n=f2Jjgbtam_DxDDLy&q=85&s=064ea99fa1499138ec48a52fcdff05e7" alt="click-req-auth-server" width="1363" height="572" data-path="public/images/deployment/security/okta/click-req-auth-server.png" />

* In the resulting page, click on the **Scopes** tab
* Click on **Add Scope**

<img src="https://mintcdn.com/openmetadata-add-ontology-explorer-docs/f2Jjgbtam_DxDDLy/public/images/deployment/security/okta/add-scope.png?fit=max&auto=format&n=f2Jjgbtam_DxDDLy&q=85&s=4422089628efe8ccf8742fc6248c1d26" alt="add-scope" width="1365" height="526" data-path="public/images/deployment/security/okta/add-scope.png" />

* Set as a **Default Scope**.

<img src="https://mintcdn.com/openmetadata-add-ontology-explorer-docs/BMFswgsYdPhHo6eK/public/images/deployment/security/okta/set-default-scope.png?fit=max&auto=format&n=BMFswgsYdPhHo6eK&q=85&s=c615d34168ac9060d99f8d9a56e3801b" alt="set-default-scope" width="1412" height="1308" data-path="public/images/deployment/security/okta/set-default-scope.png" />

### Step 5: Add New Access Policy and Rule

* From **Security -> API**, click on the required **Authorization Server**
* Navigate to the **Access Policies Tab**
* Click on **Add New Access Policy**

<img src="https://mintcdn.com/openmetadata-add-ontology-explorer-docs/f2Jjgbtam_DxDDLy/public/images/deployment/security/okta/add-new-access-policy.png?fit=max&auto=format&n=f2Jjgbtam_DxDDLy&q=85&s=8ef376c748ef10433e3f39404bb27775" alt="add-new-access-policy" width="1368" height="574" data-path="public/images/deployment/security/okta/add-new-access-policy.png" />

* To create a policy, add a Name and Description.
* Assign the policy to the required clients.

<img src="https://mintcdn.com/openmetadata-add-ontology-explorer-docs/f2Jjgbtam_DxDDLy/public/images/deployment/security/okta/assign-policy.png?fit=max&auto=format&n=f2Jjgbtam_DxDDLy&q=85&s=4bf347d490cde6dda731cea315dfb99d" width="1312" height="743" data-path="public/images/deployment/security/okta/assign-policy.png" />

* Add a new **Rule** inside the policy as required. Rules can be created with just a few grant type details, such as Client Credentials, Authorization Code, Device Authorization, and Token Exchange.
* Click on **Create Rule** to save the changes.

<img src="https://mintcdn.com/openmetadata-add-ontology-explorer-docs/f2Jjgbtam_DxDDLy/public/images/deployment/security/okta/add-rule.png?fit=max&auto=format&n=f2Jjgbtam_DxDDLy&q=85&s=2d00adb1bc914514df26825fcedb6b49" alt="add-rule" width="1400" height="2016" data-path="public/images/deployment/security/okta/add-rule.png" />

### Step 6: Where to Find the Credentials

* Once the app is configured, the **Client ID** can be used.
* You can also go to **Application -> Application** as in step 2.
* You should be able to see your application in the list.

<img src="https://mintcdn.com/openmetadata-add-ontology-explorer-docs/BMFswgsYdPhHo6eK/public/images/deployment/security/okta/see-your-application.png?fit=max&auto=format&n=BMFswgsYdPhHo6eK&q=85&s=050db2434a4a04b4e4e04ccf67df3447" alt="see-your-application" width="1496" height="659" data-path="public/images/deployment/security/okta/see-your-application.png" />

* Click on your application.
* You will find your **Client ID** and **Okta domain**.
* The **Client authentication** is enabled by default.
* By clicking on the Edit \*\*\*\* option for General Settings, you can deselect the option for **User consent**. Save the changes.

<img src="https://mintcdn.com/openmetadata-add-ontology-explorer-docs/BMFswgsYdPhHo6eK/public/images/deployment/security/okta/deselect-user-consent.png?fit=max&auto=format&n=BMFswgsYdPhHo6eK&q=85&s=73750860a2d218704e82e72ea99b35c9" alt="deselect-user-consent" width="1437" height="3827" data-path="public/images/deployment/security/okta/deselect-user-consent.png" />

* Click on the **Sign On** tab from the top navigation bar.
* Click on Edit for **OpenID Connect ID Token**.
* For **Issuer**, change from the Dynamic (based on request domain) option to the **Okta URL** option.
* The **Audience** is the same as the Client ID.

<img src="https://mintcdn.com/openmetadata-add-ontology-explorer-docs/f2Jjgbtam_DxDDLy/public/images/deployment/security/okta/click-edit-token.png?fit=max&auto=format&n=f2Jjgbtam_DxDDLy&q=85&s=62bcf8a8d1c607d1e8d90ab5eb805d8a" alt="click-edit-token" width="2000" height="2932" data-path="public/images/deployment/security/okta/click-edit-token.png" />

After the applying these steps, you can update the configuration of your deployment:

<CardGroup cols={3}>
  <Card title="Docker" href="/v2.0.x-SNAPSHOT/deployment/security/okta/docker">
    Configure Okta SSO for Docker deployment.
  </Card>

  <Card title="Kubernetes" href="/v2.0.x-SNAPSHOT/deployment/security/okta/kubernetes">
    Configure Okta SSO for Kubernetes deployment.
  </Card>

  <Card title="Bare Metal" href="/v2.0.x-SNAPSHOT/deployment/security/okta/bare-metal">
    Configure Okta SSO for Bare Metal deployment.
  </Card>
</CardGroup>

<CardGroup cols={1}>
  <Card title="OKTA" href="/v2.0.x-SNAPSHOT/deployment/security/okta">
    Go to okta Configuration
  </Card>
</CardGroup>
