Jira Cloud Users & Groups Provisioning: Keycloak Sync Guide (REST API)

The miniOrange User & Group Sync for Jira app syncs user and group information from Keycloak to your Jira Cloud instance. Once configured, user accounts managed in Keycloak are automatically reflected in Jira, so admins only maintain identities in one place. Sync can run manually or on a schedule.

Before you begin

  • You need admin access to both your Jira Cloud site and your Keycloak Admin Console.

Download and Installation

  • Log into your Jira instance as admin.
  • Under Apps section, Click on Explore more apps.
  • Search for miniOrange SCIM.
  • Click “Try it free” to begin a new trial of the app.
  • After installation, locate the miniOrange Users & Groups Provisioning For Jira app and click to open it.

1: Admin Setup Configuration

Admin Setup Button

Upon installing the miniOrange Users & Groups Provisioning For Jira app, the admin needs to configure the Admin Token and API Key to complete the admin setup and start the provisioning process.


Note: The Atlassian API key is needed when provisioning or managing verified domain users or managed users. 

Part A: Configure Atlassian API Token

  • Go to Atlassian Account and login with your admin account.
  • Create API Token without scope and save at a safe place.
  • Create API Token in Atlassian
  • Go to Admin Setup page inside plugin and edit API Token Configuration (using pencil button)
  • Admin Setup Page
  • Enter your Atlassian admin Email Address, API Token, and expiry date of API Token.
  • Configure API Token
  • Click on Save Token.

Part B: Configure Atlassian API Key

  • Go to Atlassian Administration
  • Select your organization if you have more than one.
  • Navigate to Organization settings → API Keys
  • Click "Create API Key" and select "API keys without scopes"
  • Name API Key
  • Go to Admin Setup page inside plugin and edit API Key Configuration (using pencil button)
  • Enter API Key and click on Save API Key button. 
  • Configure API Key

Once these configurations are fully processed, your core administrative setup is complete and ready for application configuration.

2: Set Up Keycloak IDP

Before configuring the app, create a dedicated client in Keycloak.


  • Log in to your Keycloak Admin Console and select the realm you want to sync from.
  • In the sidebar, go to Clients and click Create client.
  • Keycloak Client Lists
  • Under General Settings:
    1. Set Client type to OpenID Connect.
    2. Enter a Client ID (e.g., jira-user-sync).
    3. Click Next.
    4. Keycloak Create Client General Settings
  • Under Capability config:
    1. Toggle on Client authentication.
    2. Toggle on Authorization.
    3. Toggle on Direct access grants; this must be enabled for the app to authenticate with Keycloak. Click Next.
    4. Keycloak Create Client General Settings
  • Under Login settings, set Valid redirect URIs to your Jira base URL, then click Save.
  • Keycloak Set Valid Redirect URI
  • Open the Credentials tab and copy the Client Secret. You'll need it in Step 3.1.
  • Keycloak Client Credentials
  • In the sidebar, go to Realm roles and select the uma_authorization role.
  • Open the Associated roles tab and click Assign role(Client roles).
  • Assign the roles the app needs to read users and groups, for example: query-users, manage-users, manage-realm, query-groups, query-realms. (This refers to master realm. Assign these realm roles as per your respective realms.)
  • Keycloak Realm Roles

Keycloak is now ready. Keep the Client ID, Client Secret, Domain URL, and Realm name handy for the next step.

3: Service Provider Configuration (Jira)

Now switch back to your Jira tab.


bullet 3.1 Application Configuration

  • Navigate back to the Configured Application tab on the main dashboard and click the + Add New App button.
  • From the Configure Application directory screen, locate and select Keycloak as your chosen provider.
  • Select Keycloak from provider directory
  • In the App Configuration wizard > Application Configuration section enter,
  • Field Value
    Application Name A unique label for this configuration
    Client ID The Client ID from Keycloak
    Client Secret The secret from the Keycloak Credentials tab
    Domain URL e.g., https://example.keycloak.com
    Keycloak Version The version of your Keycloak server
    Realm Name The Keycloak realm name
    Application Configurations

bullet 3.2 Provisioning Operations

In the Provisioning Operations section, define your synchronization settings:

  • Keycloak Directory: sync all users in the realm.
  • Keycloak Groups: sync only users belonging to specific groups.
  • Keycloak Roles: sync only users assigned to specific roles (see Step 2).
  • Select Synchronize Type
  • Click Save Settings.

Group-Based Sync (optional)

  • Enter the names of the Keycloak groups from which you want to sync users.
  • Press Enter after entering each group name to add multiple groups. Group names are case-sensitive.
  • To sync users from nested groups, enable the Enable Nested Group Sync option.
  • When enabled, users from the selected groups and their nested child groups will also be synchronized.
  • Group Based Synchronize Configurations

Role-Based Sync (optional)

If you selected Keycloak Roles above, configure the roles in Keycloak:

  • In your Keycloak client, open the Roles tab and click Create role. Create the roles you want to sync by.
  • Open the Service Accounts Roles tab of the same client.
  • Click Assign role, then add the roles the service account needs to read users, for example: view-users, view-clients.
  • Role Based Synchronize Configurations

User Operations:

Ensure the Import Users toggle is switched ON. In the Deactivated User Action dropdown, select the action that should be taken when a user is unassigned or deactivated in Keycloak.

User Provisioning Options

Group Operations:

  • Switch to Group Operations and enable Import Groups.
  • Group operations can be performed either with On-the-Fly Group Mapping or Manual Group Mapping.

1. On the Fly Group Mapping:

  • Select this tab to create groups dynamically as it is from IdP to Jira Cloud if they do not exist in Jira and map the users accordingly.
  • You can enable the Apply Regular Expressions on Group Names option to transform group names using Regex patterns before mapping them to Jira groups.
  • Under Filter Incoming Groups, you can configure how you want to filter group names received from the provider.
  • Group Provisioning Operations

2. Manual Group Mapping:

To map groups from your IdP to Jira's native groups, select this tab. When the sync executes, the users from respective groups of the IdP will be mapped to Jira groups as per configuration.

Manual Group Mapping
Note: Any unmapped groups left blank within this mapping list will be safely ignored when saving your profile.

Keep Existing Groups

This setting controls how a user's Jira group memberships are managed during user provisioning and deprovisioning operations performed by the Identity Provider (IdP).

Keep Existing Groups

Enabled:

For any new user added to IdP groups, it will be added to Jira groups. But if users are removed from IdP groups, Jira group memberships are preserved in the Jira directory.

  • Current Jira groups: jira-software-users, jira-administrators
  • Groups received from Keycloak: developers, employees
  • Resulting Jira groups: jira-software-users, jira-administrators, developers, employees

No existing Jira group memberships are removed.


Disabled:

During provisioning, deprovisioning, or user unassignment, all existing Jira group memberships are removed except those specified in the Exclude Groups list. During provisioning, the user is subsequently assigned only to the groups received from the Identity Provider (IdP).

  • Current Jira groups: jira-software-users, jira-administrators, support-team
  • Groups received from Keycloak: developers, employees
  • Excluded groups: jira-administrators
  • Resulting Jira groups after provisioning: jira-administrators, developers, employees (jira-software-users and support-team are removed because they weren't received from Keycloak and aren't excluded)

After provisioning, the groups jira-software-users and support-team are removed because they are not received from the IdP and are not included in the exclusion list.


Exclude Groups: Use the Exclude Groups option to specify Jira groups that should never be removed during provisioning or deprovisioning operations, such as jira-administrators or org-admins. These groups will always be retained regardless of the user's group assignments in the IdP.


Scheduler Option:

To enable dynamic data synchronization at scheduled intervals, set Automate Synchronization to ON and define the processing interval by entering the desired number of days in the Synchronization Cycle (Days) field.

Scheduler

bullet 3.3 Review and Save Configuration

  • On the Review & Submit summary page, review your mapping details across the Application Configuration and Provisioning Operations summary tables to make sure everything looks right.
  • Click the Save Configuration button in the bottom right corner.

bullet 3.4 Run the Synchronization

  • Return to the Configured App Tab.
  • Click Synchronize on your Keycloak app.
  • When the sync completes,verify the new and updated users under Jira’s user management section.
  • If you set a scheduler in step 3.2, no manual action is needed for future syncs.

bullet 3.5 Verification

  • The app profile will appear on your main dashboard.
  • Under the actions column for your new entry, run a sync (or wait for the scheduled cycle if the Scheduler is enabled).
  • In Jira, navigate to User Management and confirm that users and groups from Keycloak appear in the directory. You can also review sync activity under the Audit Logs tab of the Plugin app.

The miniOrange Users & Groups Provisioning For Jira app is now successfully set up with Keycloak via REST API.

Did this page help you?

miniOrange Atlassian Contact Us

Book a Free Consultation with
Our Experts Today!

Schedule a call now!


Contact Us
Hello there!

Need Help? We are right here!

support