> ## Documentation Index
> Fetch the complete documentation index at: https://bruno-a6972042-mintlify-c74cb75a.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Okta SCIM provisioning with Bruno

This guide will walk you through setting up SCIM (System for Cross-domain Identity Management) provisioning with Bruno using Okta SWA (Secure Web Authentication).

<Info>
  **Prerequisites**: Before configuring Okta, you must first enable SCIM provisioning in Bruno and generate an API key. Follow the [Enabling SCIM Provisioning](./overview#enabling-scim-provisioning) section in the overview page to complete this setup and save your API key for use in the steps below.
</Info>

## Create your Okta App

<Info>
  **Already have an Okta App for SSO?** If you previously set up a Bruno Okta application for [SAML SSO](../saml-sso/configure-saml-sso-with-okta), you can reuse it for SCIM provisioning. Skip to the [Configure your Okta App](#configure-your-okta-app) section to add provisioning to your existing application.
</Info>

1. As an Okta admin, navigate to **Applications** and click **Create App Integration**

<img src="https://mintcdn.com/bruno-a6972042-mintlify-c74cb75a/y2keFn0TI-qqwsMv/images/screenshots/sso-scim-management/okta/okta-swa-1.webp?fit=max&auto=format&n=y2keFn0TI-qqwsMv&q=85&s=20d7c2da810dcf58200ec23018f2536f" alt="License portal login" width="2088" height="1180" data-path="images/screenshots/sso-scim-management/okta/okta-swa-1.webp" />

2. Select **SWA - Secure Web Authentication** and click **Next**

<img src="https://mintcdn.com/bruno-a6972042-mintlify-c74cb75a/y2keFn0TI-qqwsMv/images/screenshots/sso-scim-management/okta/okta-swa-2.webp?fit=max&auto=format&n=y2keFn0TI-qqwsMv&q=85&s=2a2ba58151d1171052d9aab003dbcaf0" alt="License portal login" width="1868" height="1066" data-path="images/screenshots/sso-scim-management/okta/okta-swa-2.webp" />

3. On the **Create SWA Integration** page, add the following values and click **Finish**:
   * **App name**: (Unique App Name - e.g. Bruno SCIM Integration)
   * **App's login page URL**: `https://license.usebruno.com/`

<img src="https://mintcdn.com/bruno-a6972042-mintlify-c74cb75a/y2keFn0TI-qqwsMv/images/screenshots/sso-scim-management/okta/okta-swa-3.webp?fit=max&auto=format&n=y2keFn0TI-qqwsMv&q=85&s=866ddfaec45eeba373b730f5a9c52ff0" alt="License portal login" width="1538" height="1218" data-path="images/screenshots/sso-scim-management/okta/okta-swa-3.webp" />

## Configure your Okta App

1. On your newly created application page, select the **General** tab
2. Under **App Settings**, select **Edit**, and check the **Provisioning** option **SCIM** and click **Save**

<img src="https://mintcdn.com/bruno-a6972042-mintlify-c74cb75a/y2keFn0TI-qqwsMv/images/screenshots/sso-scim-management/okta/okta-swa-5.webp?fit=max&auto=format&n=y2keFn0TI-qqwsMv&q=85&s=8eeb9b764b3f2a04bdff8b4405aca2d3" alt="License portal login" width="1498" height="1630" data-path="images/screenshots/sso-scim-management/okta/okta-swa-5.webp" />

3. Return to your Okta app, select the **Provisioning** tab, under **SCIM Connection** select **Edit** and configure the following values:
   * **SCIM connector base URL**: `https://license.usebruno.com/scim/v2`
   * **Unique identifier field for users**: `email`
   * **Supported provisioning actions**: Check the following options:
     * `Import New Users and Profile Updates`
     * `Push New Users`
     * `Push Profile Updates`
     * `Push Groups`
   * **Authentication**: set to **HTTP Header**
   * Under **HTTP Header**, for **token**: add the generated API Key value from the [prerequisites step](./overview#enabling-scim-provisioning)

<img src="https://mintcdn.com/bruno-a6972042-mintlify-c74cb75a/y2keFn0TI-qqwsMv/images/screenshots/sso-scim-management/okta/okta-swa-7.webp?fit=max&auto=format&n=y2keFn0TI-qqwsMv&q=85&s=be8775174beffeeab22b12ca9c8da1f4" alt="License portal login" width="1970" height="1542" data-path="images/screenshots/sso-scim-management/okta/okta-swa-7.webp" />

4. Click **Test Connector Configuration**. If successful, a **Connector configured successfully** message dialogue appears.

<img src="https://mintcdn.com/bruno-a6972042-mintlify-c74cb75a/y2keFn0TI-qqwsMv/images/screenshots/sso-scim-management/okta/okta-swa-8.webp?fit=max&auto=format&n=y2keFn0TI-qqwsMv&q=85&s=c4d674feae1835ad4e82c99efd37b34f" alt="License portal login" width="1972" height="1398" data-path="images/screenshots/sso-scim-management/okta/okta-swa-8.webp" />

5. Click **Save** to complete the Provisioning integration.

6. Under the **Provisioning** tab, select the **To Apps** setting, edit and enable the following options and click **Save**:
   * `Create Users`
   * `Update User Attributes`
   * `Deactivate Users`

<img src="https://mintcdn.com/bruno-a6972042-mintlify-c74cb75a/y2keFn0TI-qqwsMv/images/screenshots/sso-scim-management/okta/okta-swa-9.webp?fit=max&auto=format&n=y2keFn0TI-qqwsMv&q=85&s=23655d5bbdf3685494de179b1a5c2f94" alt="License portal login" width="1860" height="1620" data-path="images/screenshots/sso-scim-management/okta/okta-swa-9.webp" />

Your SCIM integration is now complete. You can now begin [assigning users to Bruno](#assign-people-and-groups-to-bruno-in-okta).

## Configure Admin Role Mapping

Admin Role Mapping lets you provision specific Okta users as Bruno License Manager admins. Admins provisioned this way get portal access, do **not** consume a license seat, and do **not** appear in the Users list.

<Info>
  This section is optional. Skip it if you only want to provision regular licensed users.
</Info>

Unlike Entra ID, Okta has no built-in App Roles concept for custom SCIM apps, so this uses a custom profile attribute instead.

### Add a custom attribute to the Okta user profile

1. Go to **Directory** → **Profile Editor**
2. Select **Okta** (the default/base user profile, not this app's own profile)
3. Click **Add Attribute**
4. Fill in:
   * **Data type**: `string`
   * **Display name**: `Bruno License Role`
   * **Variable name**: `brunoLicenseRole`
   * **Attribute type**: `Personal`
5. Click **Save**

<img src="https://mintcdn.com/bruno-a6972042-mintlify-c74cb75a/y2keFn0TI-qqwsMv/images/screenshots/sso-scim-management/okta/okta-swa-17.webp?fit=max&auto=format&n=y2keFn0TI-qqwsMv&q=85&s=6bd54ea3bb52405f33e4849965099017" alt="Add custom attribute in Okta Profile Editor" width="1254" height="1454" data-path="images/screenshots/sso-scim-management/okta/okta-swa-17.webp" />

<Warning>
  Do not check any "define enumerated list of values" / array option when creating this attribute. If it renders as a dropdown instead of a plain text box afterward, it was created as an enum with no options, and any value you set on a user's profile will be silently dropped. It must be a plain free-text string.
</Warning>

### Add a roles attribute to your Bruno app's profile

1. Go to your Bruno SCIM app → **Provisioning** → **To App**, click **Go to Profile Editor**
2. Click **Add Attribute**
3. Fill in:
   * **Data type**: `string`
   * **Display name**: `Roles`
   * **Variable name**: `roles`
4. Click **Save**

<img src="https://mintcdn.com/bruno-a6972042-mintlify-c74cb75a/y2keFn0TI-qqwsMv/images/screenshots/sso-scim-management/okta/okta-swa-18.webp?fit=max&auto=format&n=y2keFn0TI-qqwsMv&q=85&s=6035fc8373f2910a11679f9f7ae56634" alt="Add roles attribute to app profile" width="1738" height="958" data-path="images/screenshots/sso-scim-management/okta/okta-swa-18.webp" />

<Warning>
  Okta may default this attribute's namespace to something app-specific instead of the base SCIM schema, which causes it to be sent nested (e.g. `"roles": {"roles": "..."}`) instead of as a flat field, and Bruno won't recognize it. If this happens, use the Okta API to set this attribute's `externalNamespace` to `urn:ietf:params:scim:schemas:core:2.0:User` (matching the other built-in attributes like `givenName`), the same namespace already used by attributes such as `givenName` or `locale` on this profile.
</Warning>

### Map the attribute to the roles field

1. Go to your Bruno SCIM app → **Provisioning** → **To App** → **Attribute Mappings**
2. Find the `roles` row and click the pencil icon
3. Set **Attribute value** to **Expression** and enter:
   ```
   user.brunoLicenseRole
   ```
4. Set **Apply on** to **Create and update**
5. Click **Save**

<img src="https://mintcdn.com/bruno-a6972042-mintlify-c74cb75a/y2keFn0TI-qqwsMv/images/screenshots/sso-scim-management/okta/okta-swa-19.webp?fit=max&auto=format&n=y2keFn0TI-qqwsMv&q=85&s=e5c4228cc90e90ad2290a3405a5adbe8" alt="Configure roles attribute mapping expression" width="1272" height="346" data-path="images/screenshots/sso-scim-management/okta/okta-swa-19.webp" />

<Warning>
  Use `user.brunoLicenseRole` (global profile), not `appuser.brunoLicenseRole`. Okta blocks same-profile attribute references in expression mappings.
</Warning>

### Configure Admin Role Mapping in Bruno

1. In the Bruno LM portal, go to **Settings → SCIM → Admin Role Mapping**
2. Enter the role value(s) that should grant admin access, for example:
   ```
   bruno-admin
   ```
3. Multiple values are supported comma-separated (e.g. `bruno-admin, admin`). Any match grants admin access.
4. Values must exactly match what you set on users in Okta (case-sensitive)
5. Click **Save**

<img src="https://mintcdn.com/bruno-a6972042-mintlify-c74cb75a/y2keFn0TI-qqwsMv/images/screenshots/sso-scim-management/okta/okta-swa-20.webp?fit=max&auto=format&n=y2keFn0TI-qqwsMv&q=85&s=e7e2a03a8aaceec75298222968f00468" alt="Configure Admin Role Mapping in Bruno" width="2000" height="734" data-path="images/screenshots/sso-scim-management/okta/okta-swa-20.webp" />

### Set the role on users in Okta

For each user you want to provision as a License Manager admin:

1. Go to **Directory → People → \[user] → Profile tab → Edit**
2. Find **Bruno License Role** and set the value to `bruno-admin` (or whatever you configured above)
3. Click **Save**

<img src="https://mintcdn.com/bruno-a6972042-mintlify-c74cb75a/y2keFn0TI-qqwsMv/images/screenshots/sso-scim-management/okta/okta-swa-21.webp?fit=max&auto=format&n=y2keFn0TI-qqwsMv&q=85&s=da6f916eb39263f1b4c8785d0c3054d2" alt="Set Bruno License Role on a user's profile" width="1136" height="536" data-path="images/screenshots/sso-scim-management/okta/okta-swa-21.webp" />

Leave **Bruno License Role** empty for users who should be provisioned as regular licensed users.

## Assign people and groups to Bruno in Okta

1. Under your created Bruno Application, navigate to the **Assignments** tab

2. Select **Assign** and either **Assign to People** or **Assign to Groups** to provision Bruno license keys. If you [configured Admin Role Mapping](#configure-admin-role-mapping), make sure the assigned user's **Bruno License Role** attribute is set first

<img src="https://mintcdn.com/bruno-a6972042-mintlify-c74cb75a/y2keFn0TI-qqwsMv/images/screenshots/sso-scim-management/okta/okta-swa-15.webp?fit=max&auto=format&n=y2keFn0TI-qqwsMv&q=85&s=4c66bdc3f03724610b9856888994c8f1" alt="License portal login" width="1370" height="708" data-path="images/screenshots/sso-scim-management/okta/okta-swa-15.webp" />

<img src="https://mintcdn.com/bruno-a6972042-mintlify-c74cb75a/y2keFn0TI-qqwsMv/images/screenshots/sso-scim-management/okta/okta-swa-16.webp?fit=max&auto=format&n=y2keFn0TI-qqwsMv&q=85&s=c36d2987322b0249eafdbafd2f6bc00d" alt="License portal login" width="1258" height="614" data-path="images/screenshots/sso-scim-management/okta/okta-swa-16.webp" />

3. Assigned users with a matching admin role get portal access directly, with no license key or email. All other assigned users receive an email with their **License Key**

<img src="https://mintcdn.com/bruno-a6972042-mintlify-c74cb75a/y2keFn0TI-qqwsMv/images/screenshots/sso-scim-management/okta/okta-swa-12.webp?fit=max&auto=format&n=y2keFn0TI-qqwsMv&q=85&s=5fc629ef2134c2cd3bdd00d2bd3eb3c7" alt="License portal login" width="1812" height="976" data-path="images/screenshots/sso-scim-management/okta/okta-swa-12.webp" />

## Deprovision users from Bruno in Okta

1. Under your created Bruno Application, navigate to the **Assignments** tab
   <img src="https://mintcdn.com/bruno-a6972042-mintlify-c74cb75a/y2keFn0TI-qqwsMv/images/screenshots/sso-scim-management/okta/okta-swa-13.webp?fit=max&auto=format&n=y2keFn0TI-qqwsMv&q=85&s=998312694929cb07db8c0c39b8babb06" alt="License portal login" width="1360" height="1050" data-path="images/screenshots/sso-scim-management/okta/okta-swa-13.webp" />
2. Remove the desired users or groups, their license key(s) will be deactivated and they will receive an email notification
   <img src="https://mintcdn.com/bruno-a6972042-mintlify-c74cb75a/y2keFn0TI-qqwsMv/images/screenshots/sso-scim-management/okta/okta-swa-14.webp?fit=max&auto=format&n=y2keFn0TI-qqwsMv&q=85&s=e48f735053dd7e63d2691e0e9e1bdeac" alt="License portal login" width="897" height="461" data-path="images/screenshots/sso-scim-management/okta/okta-swa-14.webp" />

## Related Resources

For more information about configuring SCIM provisioning with Okta, refer to these Okta documentation resources:

* [Add SCIM provisioning to app integrations](https://help.okta.com/en-us/content/topics/apps/apps_app_integration_wizard_scim.htm) - Step-by-step guide for adding SCIM provisioning to Okta applications
* [SCIM 2.0 protocol overview](https://help.okta.com/en-us/content/topics/provisioning/opp/opp-provision-scim-messages.htm) - Reference for SCIM 2.0 messages and provisioning operations
* [On-premises provisioning with SCIM](https://help.okta.com/en-us/content/topics/provisioning/opp/opp-architecture.htm) - Architecture and setup for SCIM provisioning
* [Test SCIM connectors](https://help.okta.com/en-us/content/topics/provisioning/opp/opp-test-scim-server.htm) - Guide for testing SCIM connectors and servers
* [Okta provisioning documentation](https://help.okta.com/en-us/content/topics/provisioning/provisioning.htm) - Comprehensive provisioning documentation and best practices
