Prerequisites: Before configuring Okta, you must first enable SCIM provisioning in Bruno and generate an API key. Follow the Enabling SCIM Provisioning section in the overview page to complete this setup and save your API key for use in the steps below.
Create your Okta App
Already have an Okta App for SSO? If you previously set up a Bruno Okta application for SAML SSO, you can reuse it for SCIM provisioning. Skip to the Configure your Okta App section to add provisioning to your existing application.
- As an Okta admin, navigate to Applications and click Create App Integration

- Select SWA - Secure Web Authentication and click Next

- 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/

Configure your Okta App
- On your newly created application page, select the General tab
- Under App Settings, select Edit, and check the Provisioning option SCIM and click Save

- 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 UpdatesPush New UsersPush Profile UpdatesPush Groups
- Authentication: set to HTTP Header
- Under HTTP Header, for token: add the generated API Key value from the prerequisites step
- SCIM connector base URL:

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

- Click Save to complete the Provisioning integration.
-
Under the Provisioning tab, select the To Apps setting, edit and enable the following options and click Save:
Create UsersUpdate User AttributesDeactivate Users

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.This section is optional. Skip it if you only want to provision regular licensed users.
Role values are matched exactly and are case-sensitive. If Okta sends
admin, the Admin Role Mapping in Bruno must contain admin — not Admin or ADMIN. Multiple values are supported as a comma-separated list, and a match against any one grants administrator access.Administrators provisioned via SCIM do not appear in the Users list, because they do not hold a license. They appear under Settings → Admins.roles attribute on your Bruno app’s profile.
Add a roles attribute to your Bruno app’s profile
- Go to your Bruno SCIM app → Provisioning → To App, click Go to Profile Editor
- Click Add Attribute
- Fill in:
- Data type:
string - Display name:
Roles - Variable name:
roles
- Data type:
- Click Save

Choosing how to send the role
The role value must reach Bruno in the same request that creates the user. Two approaches:Option A: Resolve from group membership (recommended)
Have Okta evaluate the role at the moment it pushes to Bruno, rather than reading a stored profile attribute.-
Create an Okta group for your Bruno administrators (e.g.
Bruno - Admin) - In your Bruno app, go to Provisioning → To App → Attribute Mappings
-
Edit the
rolesattribute and set the value expression to: - Set Apply on to Create and update
- Save
Option B: Read a stored profile attribute
Map theroles attribute to a custom attribute on the user’s Okta profile (for example user.brunoLicenseRole), populated per user or by a group rule.
1. Add a custom attribute to the Okta user profile
- Go to Directory → Profile Editor
- Select Okta (the default/base user profile, not this app’s own profile)
- Click Add Attribute
- Fill in:
- Data type:
string - Display name:
Bruno License Role - Variable name:
brunoLicenseRole - Attribute type:
Personal
- Data type:
- Click Save

- Go to your Bruno SCIM app → Provisioning → To App → Attribute Mappings
- Find the
rolesrow and click the pencil icon - Set Attribute value to Expression and enter:
- Set Apply on to Create and update
- Click Save

- Go to Directory → People → [user] → Profile tab → Edit
- Find Bruno License Role and set the value to
bruno-admin(or whatever you configured in Bruno) - Click Save

Configure Admin Role Mapping in Bruno
- In the Bruno LM portal, go to Settings → SCIM → Admin Role Mapping
- Enter the role value(s) that should grant admin access, for example:
- Multiple values are supported comma-separated (e.g.
bruno-admin, admin). Any match grants admin access. - Values must exactly match the role value Okta sends (case-sensitive)
- Click Save

Assign people and groups to Bruno in Okta
- Under your created Bruno Application, navigate to the Assignments tab
- Select Assign and either Assign to People or Assign to Groups to provision Bruno license keys. If you configured Admin Role Mapping, make sure the user’s admin role will be included in the account creation request — with Option A add them to the admin group first, and with Option B set their Bruno License Role attribute first


- 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

Verify an administrator provisioned correctly
After assigning the user:- In the Bruno portal, confirm they appear under Settings → Admins
- Confirm they do not appear in the Users list
Deprovision users from Bruno in Okta
- Under your created Bruno Application, navigate to the Assignments tab

- Remove the desired users or groups, their license key(s) will be deactivated and they will receive an email notification

Troubleshooting
A user was provisioned as a licensed user instead of an administrator
The role value was not included when Okta created the account. To confirm, open Reports → System Log and filter to the user and the Bruno app. Compare the timestamp of Push new user to external application against Updated user application property. If the property update is later, the account was created before the role value resolved. To prevent it for future users, switch to the group-membership expression in Option A. To correct an affected user, remove their license under Users in the Bruno portal. Their administrator access is tracked separately and is unaffected.Re-provisioning the user through Okta does not remove the license. Removing and re-adding the app assignment preserves the existing license, so the license must be removed in the portal.
An administrator also appears in the Users list with a license
Same cause and same remedy as above — the user was created as a licensed user before the admin role reached Bruno, then promoted.Admin Role Mapping appears to have no effect
- Confirm Enable SCIM is on under Settings → SCIM Provisioning — the Admin Role Mapping field is only shown when SCIM is enabled
- Confirm the value matches what Okta sends, exactly and case-sensitively
- Confirm the
rolesattribute is present in the outbound request, via Reports → System Log - Confirm the attribute’s external namespace is
urn:ietf:params:scim:schemas:core:2.0:User. If Okta assigned an app-specific namespace, the value is sent under that namespace instead and Bruno will not read it
A provisioned administrator does not appear in the Users list
Expected. Administrators provisioned via SCIM do not consume a license seat and do not appear in the Users list. They appear under Settings → Admins.Related Resources
For more information about configuring SCIM provisioning with Okta, refer to these Okta documentation resources:- Add SCIM provisioning to app integrations - Step-by-step guide for adding SCIM provisioning to Okta applications
- SCIM 2.0 protocol overview - Reference for SCIM 2.0 messages and provisioning operations
- On-premises provisioning with SCIM - Architecture and setup for SCIM provisioning
- Test SCIM connectors - Guide for testing SCIM connectors and servers
- Okta provisioning documentation - Comprehensive provisioning documentation and best practices