How to Set Up Okta SCIM Provisioning for GitHub Enterprise Cloud (2026)

How to Set Up Okta SCIM Provisioning for GitHub Enterprise Cloud (2026)

title: How to Set Up Okta SCIM Provisioning for GitHub (Enterprise Cloud) (2026) slug: how-to-set-up-okta-scim-provisioning-for-github excerpt: Automate GitHub Enterprise Cloud user provisioning and team membership from Okta using SCIM. Full setup guide for Enterprise Managed Users. post_type: how-to


Lead

When Okta SCIM is configured for GitHub Enterprise Managed Users (EMU), new employees are provisioned as GitHub accounts within seconds of assignment. Their usernames are automatically suffixed with your enterprise shortcode (e.g., jane_smith_acmecorp), and they're added to teams based on Okta group membership. Deprovisioning is equally swift: deactivate in Okta, and their GitHub account is suspended with all repo and org permissions revoked.

Quick answer:

Verified against:** Okta Workforce Identity Cloud and GitHub Enterprise Cloud on 2026-05-04.


Prerequisites

How ScaleIT handles this: See how compliance works


Steps

Step 1: Verify EMU is Enabled

  1. Log in to GitHub as the EMU setup user or an Enterprise owner.
  2. Go to your Enterprise settings: github.com/enterprises/YOUR-ENTERPRISE-SLUG/settings.
  3. Look at any GitHub username in your enterprise. If it ends in _YOUR-ENTERPRISE-SLUG (e.g., jane_smith_acmecorp), EMU is enabled. If it's a plain GitHub handle, you're not on EMU and need to migrate first.
  4. Note your Enterprise slug (from the URL or the username suffix).

Step 2: Generate the SCIM Personal Access Token in GitHub

  1. Still in Enterprise settings, go to → Authentication security → Manage SCIM.
  2. Click → Generate token.
  3. GitHub will prompt you to confirm and generate a new token. Click → Generate.
  4. A token beginning with ghs_ will appear. Copy it immediately. GitHub shows SCIM tokens only once.
  5. Save both the token and your enterprise slug for the next step.

Step 3: Add the GitHub Enterprise Managed Users App to Okta

  1. In the Okta Admin Console, go to → Applications → Browse App Catalog.
  2. Search for → GitHub Enterprise Managed User (not just "GitHub"; the EMU version is separate).
  3. Click it, then click → Add Integration.
  4. Enter a label (e.g., "GitHub Enterprise EMU") and click → Done.

Step 4: Enable API Integration in Okta

  1. Click → Provisioning tab on the GitHub EMU app tile.
  2. Click → Configure API Integration.
  3. Check → Enable API integration.
  4. In the Base URL field, enter: https://api.github.com/scim/v2/enterprises/YOUR-ENTERPRISE-SLUG
  1. In the Bearer Token field, paste the ghs_ token from Step 2.
  2. Click → Save.
  3. Okta will validate the credentials. If you see a 404 error, the enterprise slug is likely incorrect. If you see a 401, the token is invalid or expired.

Step 5: Enable Provisioning Actions

  1. Still on the Provisioning tab, go to → To App in the Settings section.
  2. Click → Edit.
  3. Check the following:
  1. Click → Save.

Step 6: Review Attribute Mappings (Optional)

  1. On the Provisioning tab, go to → Attribute Mappings.
  2. Confirm these mappings are in place:
  1. These defaults are correct for most setups. Customize only if you have special naming requirements.
  2. Click → Save.

Step 7: Assign Users and Test Provisioning

  1. Go to → Assignments tab on the GitHub EMU app in Okta.
  2. Click → Assign and add one test user.
  3. Wait a few seconds for the provisioning job to run.
  4. Check the Provisioning tab → Provisioning Log to verify success.
  5. Go to your GitHub Enterprise account (github.com/enterprises/YOUR-SLUG) → Settings → Users and verify the test user appears with their Okta username suffixed with your enterprise shortcode (e.g., test_user_acmecorp).

Step 8: Create Okta Groups and Push to GitHub Teams

  1. In Okta, create groups that match your GitHub teams (e.g., github-engineers, github-devops). These don't need to follow a naming convention; use what's clear to your team.
  2. Go to the GitHub EMU app → Provisioning → Push Groups.
  3. Click → Push Groups and select each group to sync to GitHub.
  4. Okta will create matching groups in GitHub.
  5. Log in to GitHub and go to your Enterprise account → Orgs → select an org → Teams.
  6. For each team you want to manage via Okta:
  1. Now, team membership is managed from Okta. Adding someone to the Okta group automatically adds them to the GitHub team.

Verify


Troubleshooting

Symptom: "404 Not Found" when configuring API integration

Cause: The enterprise slug in the Base URL is incorrect, or it's not in the format https://api.github.com/scim/v2/enterprises/YOUR-SLUG.

Fix: Double-check your enterprise slug from the GitHub URL (github.com/enterprises/YOUR-SLUG). Verify the Base URL matches the format exactly, with no trailing slash.

Symptom: "401 Unauthorized" when testing credentials

Cause: The SCIM token is invalid, expired, or doesn't have the correct scope.

Fix: Log in to GitHub Enterprise settings → Authentication security → Manage SCIM and generate a fresh token. Ensure it starts with ghs_. Paste the new token into Okta.

Symptom: User is created but with a different username than expected

Cause: Okta's userName attribute is set to something other than the Okta username, or GitHub is truncating or modifying the username.

Fix: Check Provisioning → Attribute Mappings and confirm userName is mapped to Okta username. GitHub automatically appends the enterprise shortcode to the username prefix.

Symptom: Users appear in GitHub but team assignments aren't syncing

Cause: The Okta groups haven't been pushed to GitHub, or the group hasn't been set as the source-of-truth in the GitHub team settings.

Fix: Go to Provisioning → Push Groups and manually push the group. Then log in to GitHub, open the team, go to Team Settings → Identity Provider (IdP) Groups, and assign the Okta group as the team's membership source.

Symptom: "This enterprise is not using Enterprise Managed Users"

Cause: EMU is not enabled on the enterprise. You're on a Business plan or EMU migration is incomplete.

Fix: Verify that all usernames in your enterprise end in _ENTERPRISE-SLUG. If not, you're not on EMU and must complete EMU migration before SCIM will work. Contact GitHub support for guidance.


CTA

SCIM provisioning for GitHub takes team membership management out of spreadsheets and into Okta. If you're managing multiple integrations and want a phased rollout plan, or if you're hitting provisioning errors, our team can help you scope and execute it cleanly. Let's talk through your setup.