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

# Okta

<View title="Developer" />

<View title="Federal docs" />

<View title="EU docs" />

This topic explains how Okta and LaunchDarkly work together to provide both authentication and provisioning for your account members.

A LaunchDarkly app is available in Okta. You can connect LaunchDarkly and Okta through the Okta UI, give Okta permissions to modify account members in LaunchDarkly, and even integrate LaunchDarkly custom roles with Okta. Optionally, you can also sync groups in Okta with LaunchDarkly teams to automate team member provisioning.

## Prerequisites

To use Okta with LaunchDarkly, you must meet the following prerequisites:

* You must have Administrator privileges in LaunchDarkly
* You must have Administrator privileges in Okta
* You must have your Assertion consumer service URL and Entity ID from LaunchDarkly's SAML configuration page
* You must have access to the email addresses of the account members you wish to configure

## Supported features

The Okta integration for LaunchDarkly supports the following features:

**SSO:**

* Service provider-initiated (SP-initiated) SSO
* Identity provider-initiated (IdP-initiated) SSO
* JIT (Just-In-Time) provisioning

**SCIM:**

* Import users
* Import groups
* Create users
* Update user attributes
* Deactivate users
* Group push (also called team sync)

To learn more about SCIM provisioning, read [Use Okta to manage LaunchDarkly members with SCIM](#use-okta-to-manage-launchdarkly-members-with-scim).

## Configure Okta SAML SSO for LaunchDarkly

To authorize Okta to manage your LaunchDarkly account members:

1. Log in to Okta as an administrator.
2. Navigate to **Applications** and click **Browse App Integration Catalog**.
3. In the search bar, type "LaunchDarkly." The LaunchDarkly app appears in the search results:

<Frame caption="The &#x22;Browse App Integration Catalog&#x22; screen in Okta, with search results populating.">
  <img src="https://mintcdn.com/launchdarkly/6toei-i72Mf97ImT/images/__third_party/okta-ld-app.png?fit=max&auto=format&n=6toei-i72Mf97ImT&q=85&s=6801eb16b50861941f0a8d35a7062213" alt="The &#x22;Browse App Integration Catalog&#x22; screen in Okta, with search results populating." width="850" height="509" data-path="images/__third_party/okta-ld-app.png" />
</Frame>

4. Click **Add**. The **General Settings** page for the LaunchDarkly app appears.
5. (Optional) Give the app a custom name by modifying the **Application Label**.
6. (Optional) Configure the **Application Visibility** checkboxes however you prefer.
7. Click **Done**. The LaunchDarkly Application page appears.

You just activated the LaunchDarkly app in Okta.

After you have activated the app and confirmed you meet the prerequisites above, follow Okta's documentation to [Enable Single Sign-On with SAML](https://saml-doc.okta.com/SAML_Docs/How-to-Configure-SAML-2.0-for-LaunchDarkly.html).

## Use Okta to manage LaunchDarkly members with SCIM

<Note>
  **SCIM-based user provisioning is available to customers on select plans**

  SCIM facilitates *real-time user provisioning*, which means your IdP can create, update, and deactivate LaunchDarkly members before the first time a user authenticates in LaunchDarkly. User provisioning with SCIM is only available to customers on select plans. To learn more, [read about our pricing](https://launchdarkly.com/pricing/). To upgrade your plan, [contact Sales](https://launchdarkly.com/contact-sales/).
</Note>

<Note>
  **You cannot manage teams using the UI after enabling SCIM**

  If you configure SCIM to provision resources from identity providers, you can no longer manage teams using the LaunchDarkly user interface.
</Note>

<Danger>
  **If you have more than one SCIM connection**

  If you get an error during configuration that you cannot add an additional SCIM connection, go to the **Security** tab in LaunchDarkly's **Account settings** and click **Disconnect SCIM.** This allows you to connect Okta's SCIM-based protocols to LaunchDarkly.
</Danger>

You can use SCIM to connect the LaunchDarkly app to Okta. This lets you provision, manage, and deprovision LaunchDarkly account members in Okta. If you have not configured SAML SSO for LaunchDarkly in Okta, you must do that first. To learn how, read [Configure Okta SAML SSO for LaunchDarkly](#configure-okta-saml-sso-for-launchdarkly).

To grant Okta permission to manage account members:

1. Navigate to the LaunchDarkly app in Okta.

2. Click the **Provisioning** tab. The **Integration** page appears.

3. Click **Configure API Integration**:

   <Frame caption="The &#x22;Integration&#x22; page in Okta, with the &#x22;Configure API integration&#x22; button called out.">
     <img src="https://mintcdn.com/launchdarkly/6toei-i72Mf97ImT/images/__third_party/okta-configure-api-integration.png?fit=max&auto=format&n=6toei-i72Mf97ImT&q=85&s=9b3827724f4489f3fe7a5c0c6819ec4b" alt="The &#x22;Integration&#x22; page in Okta, with the &#x22;Configure API integration&#x22; button called out." width="1028" height="662" data-path="images/__third_party/okta-configure-api-integration.png" />
   </Frame>

4. Check the **Enable API Integration** checkbox.

5. Check the **Import Groups** checkbox.

6. Click **Save**. An authorization window appears.

7. Click **Authenticate with LaunchDarkly**. A new browser window appears describing what permissions Okta requires to integrate with LaunchDarkly.

8. Click **Authorize**. You return to the **Integration** page.

9. Click **Save**. The **To App** page appears.

10. In the Provisioning to App section, click **Edit**. Fields on the screen become configurable. Set the following fields to **Enable**:

    * Create Users
    * Update User Attributes
    * Deactivate Users

    <Frame caption="The &#x22;Provisioning to App&#x22; page in Okta, with the &#x22;Create Users,&#x22; &#x22;Update User Attributes,&#x22; and &#x22;Deactivate Users&#x22; options enabled.">
      <img src="https://mintcdn.com/launchdarkly/6toei-i72Mf97ImT/images/__third_party/okta-provisioning-to-app.png?fit=max&auto=format&n=6toei-i72Mf97ImT&q=85&s=a0e9d9ab2b034b055383ccc53438e5a1" alt="The &#x22;Provisioning to App&#x22; page in Okta, with the &#x22;Create Users,&#x22; &#x22;Update User Attributes,&#x22; and &#x22;Deactivate Users&#x22; options enabled." width="707" height="591" data-path="images/__third_party/okta-provisioning-to-app.png" />
    </Frame>

11. Click **Save**.

Okta is now connected to LaunchDarkly.

<Card>
  To learn more, download Okta's "Configuring Okta to Manage LaunchDarkly Users with SCIM" guide: <a href="/docs/assets/pdfs/okta/scim-configuration-guide.pdf" download className="download_btn inline-block bg-[#CFFC55] hover:bg-[#b8e63e] text-black font-semibold text-sm px-4 py-2 rounded-md no-underline border-b-0">Download PDF</a>
</Card>

## Set email addresses as the username

Next, you must configure Okta to recognize email addresses as the usernames for individual account members.

<Note>
  **How LaunchDarkly and Okta use email addresses**

  LaunchDarkly stores emails in lowercase, and does not differentiate between usernames and email addresses. You may use one email address with one LaunchDarkly account at a time. Okta uses email addresses as SCIM usernames. If you change a username or email address in Okta or LaunchDarkly after configuration, the corresponding value also changes. Only use lowercase letters to configure email addresses. Email addresses including uppercase letters cause an error.
</Note>

To configure Okta to recognize email addresses as usernames:

1. Navigate to the LaunchDarkly app in Okta.

2. Click the **Sign On** tab. The **Settings** page appears.

3. Click the **Edit** button in the top right corner of the **Settings** page.

4. Scroll to the "Advanced Sign-on Settings" section and enter your **Assertion consumer service URL**.

5. Enter your **Entity ID**.

6. In the "Credential Details" section, set the **Application username format** to "Email":

   <Frame caption="The &#x22;Credentials Details&#x22; screen, with username format set to &#x22;Email.&#x22;">
     <img src="https://mintcdn.com/launchdarkly/6toei-i72Mf97ImT/images/__third_party/okta-username-format.png?fit=max&auto=format&n=6toei-i72Mf97ImT&q=85&s=9a186a406349cfc82283f2d1a0fb1251" alt="The &#x22;Credentials Details&#x22; screen, with username format set to &#x22;Email.&#x22;" width="1316" height="1290" data-path="images/__third_party/okta-username-format.png" />
   </Frame>

7. Click **Save**.

You have successfully connected Okta and LaunchDarkly.

### Deactivate and delete members

If you have enabled SCIM and you deactivate a user in Okta, then Okta will deactivate the member and remove them from your LaunchDarkly account.

If you have configured Okta SAML SSO but have not enabled SCIM, then deactivating a user in Okta will not automatically remove them from your LaunchDarkly account. In that case, you will need to remove the member from LaunchDarkly manually.

## Assign custom roles in Okta

You can assign custom roles that you created in LaunchDarkly to account members through the Okta UI.

<Warning>
  **If you use Okta to manage account members, you cannot change back to LaunchDarkly.**

  SCIM setup takes precedence over LaunchDarkly's configuration options. If you begin to manage account members and their role assignment in Okta, you must continue managing them in Okta for additional changes to take effect.
</Warning>

Use Okta's Group Assignment feature to set up custom roles for a LaunchDarkly account member or group of members. The roles you set up in Okta are passed to LaunchDarkly as member roles.

<Danger>
  **Account members with multiple roles have permissions combining them**

  If an Okta user has multiple Okta groups representing different roles, the corresponding LaunchDarkly account member is assigned permissions for all of their roles. For example, if a user is in both a Marketing role and a more permissive Engineering role, they can use the permissions granted by the Engineering role.
</Danger>

To assign custom roles to Okta groups:

1. Navigate to the LaunchDarkly app in Okta.

2. Navigate to the LaunchDarkly app's **General Settings** page.

3. Navigate to the **Assignments** tab.

4. In the **Assign** menu, choose "Assign to Groups":

   <Frame caption="The &#x22;Assign&#x22; menu.">
     <img src="https://mintcdn.com/launchdarkly/6toei-i72Mf97ImT/images/__third_party/okta-assignments-assign-menu.png?fit=max&auto=format&n=6toei-i72Mf97ImT&q=85&s=7316e700af8b9d66988901027061f8db" alt="The &#x22;Assign&#x22; menu." width="752" height="423" data-path="images/__third_party/okta-assignments-assign-menu.png" />
   </Frame>

   <Tip>
     **Assigning custom roles to one user**

     You can also specify custom roles for individual Okta users by performing this procedure after choosing **Assign to Users** in step 3.
   </Tip>

5. Find the groups you want to assign custom roles to and click **Assign**:

   <Frame caption="The &#x22;Assign LaunchDarkly to Groups&#x22; screen.">
     <img src="https://mintcdn.com/launchdarkly/6toei-i72Mf97ImT/images/__third_party/okta-assign-ld-to-groups.png?fit=max&auto=format&n=6toei-i72Mf97ImT&q=85&s=6fb49e3d8f494b726a289370ff65360c" alt="The &#x22;Assign LaunchDarkly to Groups&#x22; screen." width="635" height="207" data-path="images/__third_party/okta-assign-ld-to-groups.png" />
   </Frame>

6. Enter the key for the custom role you wish to assign to this group. This connects one role to the selected group.

   <Danger>
     **You cannot assign roles and custom roles at the same time**

     You can assign either a role or a custom role in this step, but not both. If you enter values in both the **Role** and **customRole** fields, LaunchDarkly will ignore the **Role** field. If you want to assign a custom role, leave the **Role** field set to its default value.
   </Danger>

7. Add more custom roles by entering additional keys in the **customRole** field separated by commas, with no spaces:

   <Frame caption="The &#x22;Add Another Role&#x22; screen.">
     <img src="https://mintcdn.com/launchdarkly/6toei-i72Mf97ImT/images/__third_party/okta-ld-custom-roles.png?fit=max&auto=format&n=6toei-i72Mf97ImT&q=85&s=ef9873b1b8c88ea3a8be6914cc5403ba" alt="The &#x22;Add Another Role&#x22; screen." width="677" height="471" data-path="images/__third_party/okta-ld-custom-roles.png" />
   </Frame>

8. Click **Save and Go Back**.

## Add custom roles to new users

If you have custom roles already configured in Okta, you can set up custom roles in **Attribute Mapping** when you first set up a user in Okta:

<Frame caption="The Okta LaunchDarkly &#x22;Attributes&#x22; mapping screen with custom roles available.">
  <img src="https://mintcdn.com/launchdarkly/6toei-i72Mf97ImT/images/__third_party/okta-ld-attribute-mappings.png?fit=max&auto=format&n=6toei-i72Mf97ImT&q=85&s=e717e5710348928a17ed6d895ef57980" alt="The Okta LaunchDarkly &#x22;Attributes&#x22; mapping screen with custom roles available." width="2044" height="808" data-path="images/__third_party/okta-ld-attribute-mappings.png" />
</Frame>

<Note>
  **Removing existing roles**

  SAML ignores empty fields if used in **Roles** or **customRole**. To clear all existing roles, enter an empty string "" into the field.
</Note>

## Use Okta to manage LaunchDarkly teams with SCIM

You can use Okta to create new teams in LaunchDarkly, or link an Okta group to an existing team, to maintain team memberships within Okta.

Prerequisites:

* You must configure SCIM provisioning in the LaunchDarkly Okta app.
* You must have [turned on team sync with SCIM](/docs/home/account/scim#team-sync-with-scim).
* Any group members that you want to push to a team in LaunchDarkly must already be provisioned and assigned to the LaunchDarkly application in Okta. After you sync an Okta group with a LaunchDarkly team, you will no longer be able to make team membership changes in the LaunchDarkly UI.

<Warning>
  **You cannot use the same Okta group for assignments and for Group Push**

  Okta does not support using the same Okta group for assignments and for Group Push. You must create a separate group that is configured to push teams to maintain consistent group membership between Okta and LaunchDarkly. This is a known limitation of Okta's Group Push feature. To learn more, read [About Group Push](https://help.okta.com/en-us/Content/Topics/users-groups-profiles/usgp-about-group-push.htm).
</Warning>

### Push an Okta group to create a new team

To push an Okta group to create a new team in LaunchDarkly:

1. Navigate to the "Applications" page within Okta and open the LaunchDarkly app.
2. On the "Push Groups" tab, click **Push Groups**. Select whether to search for a group by name or by rule.

<Frame caption="The &#x22;Push Groups&#x22; tab within the LaunchDarkly Okta application.">
  <img src="https://mintcdn.com/launchdarkly/6toei-i72Mf97ImT/images/__third_party/okta-push-groups.png?fit=max&auto=format&n=6toei-i72Mf97ImT&q=85&s=b66b516954a7c8915b8b3832bc505c9a" alt="The &#x22;Push Groups&#x22; tab within the LaunchDarkly Okta application." width="996" height="395" data-path="images/__third_party/okta-push-groups.png" />
</Frame>

3. Search for the name of the group you wish you to push, then click **save**.

<Frame caption="The &#x22;Push groups by name&#x22; screen in Okta.">
  <img src="https://mintcdn.com/launchdarkly/6toei-i72Mf97ImT/images/__third_party/okta-push-groups-by-name.png?fit=max&auto=format&n=6toei-i72Mf97ImT&q=85&s=b7956735b16a1fd1741c11758f0c605c" alt="The &#x22;Push groups by name&#x22; screen in Okta." width="770" height="406" data-path="images/__third_party/okta-push-groups-by-name.png" />
</Frame>

4. The group now appears in the LaunchDarkly app's group list. It may take a moment for the "Push Status" column to change from "Pushing" to "Active."

<Frame caption="An active group push in Okta.">
  <img src="https://mintcdn.com/launchdarkly/6toei-i72Mf97ImT/images/__third_party/okta-active-group-push.png?fit=max&auto=format&n=6toei-i72Mf97ImT&q=85&s=2d7786090e1567179c1f2750ad5f6f22" alt="An active group push in Okta." width="993" height="337" data-path="images/__third_party/okta-active-group-push.png" />
</Frame>

After the push status in Okta is "Active," you can confirm the new team was created and synced with Okta on the **Teams** tab in LaunchDarkly.

### Link an Okta group to an existing team

LaunchDarkly also supports [Group Linking with Okta](https://help.okta.com/en-us/Content/Topics/users-groups-profiles/usgp-enhanced-group-push-main.htm), which adds the ability to push a group name that already exists within the LaunchDarkly application and link it to that team.

To link an Okta group to an existing LaunchDarkly team:

1. Navigate to the "Applications" page within Okta and open the LaunchDarkly app.
2. On the "Push Groups" tab, click **Push Groups**. Select whether to search for a group by name or by rule.

<Frame caption="The &#x22;Push Groups&#x22; tab within the LaunchDarkly Okta application.">
  <img src="https://mintcdn.com/launchdarkly/6toei-i72Mf97ImT/images/__third_party/okta-push-groups.png?fit=max&auto=format&n=6toei-i72Mf97ImT&q=85&s=b66b516954a7c8915b8b3832bc505c9a" alt="The &#x22;Push Groups&#x22; tab within the LaunchDarkly Okta application." width="996" height="395" data-path="images/__third_party/okta-push-groups.png" />
</Frame>

3. Find the group you wish to link by searching for its name. Okta will attempt to find a matching team based on the group name.

* If Okta doesn't automatically select a group based on the team name, click the "Create Group" menu and select "Link Group," then search for the team you wish to link.

<Frame caption="Linking a group to an existing LaunchDarkly team in Okta.">
  <img src="https://mintcdn.com/launchdarkly/6toei-i72Mf97ImT/images/__third_party/okta-group-link.png?fit=max&auto=format&n=6toei-i72Mf97ImT&q=85&s=7f9b4b7622564424dc7880376eb79d70" alt="Linking a group to an existing LaunchDarkly team in Okta." width="750" height="421" data-path="images/__third_party/okta-group-link.png" />
</Frame>

4. The group now appears in the LaunchDarkly application's group list. It may take a moment for the "Push Status" column to change from "Pushing" to "Active."

<Frame caption="An active group push.">
  <img src="https://mintcdn.com/launchdarkly/6toei-i72Mf97ImT/images/__third_party/okta-active-group-push.png?fit=max&auto=format&n=6toei-i72Mf97ImT&q=85&s=2d7786090e1567179c1f2750ad5f6f22" alt="An active group push." width="993" height="337" data-path="images/__third_party/okta-active-group-push.png" />
</Frame>

After the push status in Okta is "Active," you can confirm the team has been marked as "Synced" in the LaunchDarkly UI.

### Unlink pushed groups in Okta

After you have synced a team with an Okta group, you cannot unsync it. The only way to remove the team is to unlink the pushed group in Okta.

<Frame caption="Unlink and deactivate group push in Okta.">
  <img src="https://mintcdn.com/launchdarkly/6toei-i72Mf97ImT/images/__third_party/okta-deactivate-groups.png?fit=max&auto=format&n=6toei-i72Mf97ImT&q=85&s=3268235daf0b5d0c349ad55ab86980e0" alt="Unlink and deactivate group push in Okta." width="1022" height="542" data-path="images/__third_party/okta-deactivate-groups.png" />
</Frame>

To unlink the push group, click the group's push status, choose the "Unlink pushed group" option, then choose "Delete the group in the target app."

<Frame caption="Unlink pushed group in Okta.">
  <img src="https://mintcdn.com/launchdarkly/6toei-i72Mf97ImT/images/__third_party/okta-unlink-push-group.png?fit=max&auto=format&n=6toei-i72Mf97ImT&q=85&s=1c10af7d1526274b673f2e775fe70789" alt="Unlink pushed group in Okta." width="610" height="506" data-path="images/__third_party/okta-unlink-push-group.png" />
</Frame>

Deactivating group push or unlinking a group while leaving the group in LaunchDarkly results in an orphaned team. You will not be able to manage or maintain an orphaned team within the LaunchDarkly UI.

To remove the team, first re-link the team, choose the "Unlink pushed group" option, then choose the "Delete the group in the target app" option.
