> ## Documentation Index
> Fetch the complete documentation index at: https://docs.open-metadata.org/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/wxU3MWLfPXUnxtaP/public/images/deployment/security/okta/configuring-the-app.png?fit=max&auto=format&n=wxU3MWLfPXUnxtaP&q=85&s=3dfac91ef7ca65f09c78d1c1f9e37c6c" 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/callback)
    * [http://localhost:8585/silent-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/wxU3MWLfPXUnxtaP/public/images/deployment/security/okta/general-settings-click-save.png?fit=max&auto=format&n=wxU3MWLfPXUnxtaP&q=85&s=0fc7795815954f730b87585232790041" 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/4v9U2L_k1HcJVnXe/public/images/deployment/security/okta/app-is-configured.png?fit=max&auto=format&n=4v9U2L_k1HcJVnXe&q=85&s=2df43828380a3a6db40a6591ee554fb8" 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/wxU3MWLfPXUnxtaP/public/images/deployment/security/okta/click-security-api.png?fit=max&auto=format&n=wxU3MWLfPXUnxtaP&q=85&s=9612bed4d6c39782f480b0f9ccd68b0b" 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/wxU3MWLfPXUnxtaP/public/images/deployment/security/okta/click-add-authorization-server.png?fit=max&auto=format&n=wxU3MWLfPXUnxtaP&q=85&s=e83bac4e6502984371be1459d3422373" 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/4v9U2L_k1HcJVnXe/public/images/deployment/security/okta/add-auth-server-save-changes.png?fit=max&auto=format&n=4v9U2L_k1HcJVnXe&q=85&s=905ebb7816fafa2b1d6173384f5d5480" 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/wxU3MWLfPXUnxtaP/public/images/deployment/security/okta/click-security-api.png?fit=max&auto=format&n=wxU3MWLfPXUnxtaP&q=85&s=9612bed4d6c39782f480b0f9ccd68b0b" 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/wxU3MWLfPXUnxtaP/public/images/deployment/security/okta/default-server.png?fit=max&auto=format&n=wxU3MWLfPXUnxtaP&q=85&s=c1400a9244f12e6c21335ea030ec2de6" 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/wxU3MWLfPXUnxtaP/public/images/deployment/security/okta/click-auth-server-from-prev-step.png?fit=max&auto=format&n=wxU3MWLfPXUnxtaP&q=85&s=0a3c39d67ebd154dd1d97079d778bdb2" 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/4v9U2L_k1HcJVnXe/public/images/deployment/security/okta/change-issuer-url.png?fit=max&auto=format&n=4v9U2L_k1HcJVnXe&q=85&s=e82bc604b822b3b8e34afda2b515036f" 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/wxU3MWLfPXUnxtaP/public/images/deployment/security/okta/click-req-auth-server.png?fit=max&auto=format&n=wxU3MWLfPXUnxtaP&q=85&s=66f9d7b773b7e28eb51560c1e064c8fb" 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/4v9U2L_k1HcJVnXe/public/images/deployment/security/okta/add-scope.png?fit=max&auto=format&n=4v9U2L_k1HcJVnXe&q=85&s=760f1261b66501daf1fa2b1605b2f3d7" 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/wxU3MWLfPXUnxtaP/public/images/deployment/security/okta/set-default-scope.png?fit=max&auto=format&n=wxU3MWLfPXUnxtaP&q=85&s=9b608668d9ddf18e9d9279f31b6841df" 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/4v9U2L_k1HcJVnXe/public/images/deployment/security/okta/add-new-access-policy.png?fit=max&auto=format&n=4v9U2L_k1HcJVnXe&q=85&s=946f8c2e26821fceefda038abecfc13c" 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/4v9U2L_k1HcJVnXe/public/images/deployment/security/okta/assign-policy.png?fit=max&auto=format&n=4v9U2L_k1HcJVnXe&q=85&s=96a3a681edca4f8194e4870c4340dbf7" 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/4v9U2L_k1HcJVnXe/public/images/deployment/security/okta/add-rule.png?fit=max&auto=format&n=4v9U2L_k1HcJVnXe&q=85&s=274f702c67efc1843a528fc6cfe8c363" 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/wxU3MWLfPXUnxtaP/public/images/deployment/security/okta/see-your-application.png?fit=max&auto=format&n=wxU3MWLfPXUnxtaP&q=85&s=77eb21c9dd2adcd71589f1e14cb8a1b9" 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/wxU3MWLfPXUnxtaP/public/images/deployment/security/okta/deselect-user-consent.png?fit=max&auto=format&n=wxU3MWLfPXUnxtaP&q=85&s=07317913f4c3112bd5b92cdd70da4670" 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/wxU3MWLfPXUnxtaP/public/images/deployment/security/okta/click-edit-token.png?fit=max&auto=format&n=wxU3MWLfPXUnxtaP&q=85&s=97bd33d3bc5b400e239244663c2503cc" 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="/v1.12.x/deployment/security/okta/docker">
    Configure Okta SSO for Docker deployment.
  </Card>

  <Card title="Kubernetes" href="/v1.12.x/deployment/security/okta/kubernetes">
    Configure Okta SSO for Kubernetes deployment.
  </Card>

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

<CardGroup cols={1}>
  <Card title="OKTA" href="/v1.12.x/deployment/security/okta">
    Go to okta Configuration
  </Card>
</CardGroup>
