bitwarden-businessCOMP

Bitwarden Business SCIM 2.0 Provisioning 2026: Okta + Azure AD + Google Workspace

SCIM 2.0 setup for Bitwarden Business with Okta, Azure AD and Google Workspace: full steps, attribute mapping, troubleshooting, 3-year TCO, and benchmark vs 1Password / Dashlane / Keeper.

By Eric Gerard · Editor · PwdFortress14 min readPhoto: Carlos Muza - Unsplash

📌 Who this guide is for: CISOs, IT directors, IT managers and enterprise sysadmins who want to automate Bitwarden Business provisioning via Okta, Azure AD or Google Workspace. Setup walkthrough using an illustrative 50-user + 12-group example, with attribute mappings from the official documentation, troubleshooting of the common errors and an illustrative 3-year TCO for 100 employees.

Provisioning usually pairs with single sign-on for hands-off onboarding.

Still choosing a vendor? Start with the best password managers for business.

SCIM 2.0 has become the standard for automating the identity-access lifecycle in the enterprise: a user created in Okta appears in Bitwarden in under 30 seconds, a deactivated user loses access to shared vaults just as quickly, and you never have to juggle CSV imports again. This guide details the 3 major setups (Okta, Azure AD, Google Workspace), covering Bitwarden Business with Okta, Azure AD and Google Workspace.

01 - What Is SCIM and How Does Bitwarden Provisioning Work?

SCIM 2.0 (System for Cross-domain Identity Management) is the REST protocol that synchronizes identities between your IdP (Okta, Azure AD, Google Workspace) and Bitwarden. When an employee is created in Okta, a Bitwarden account is automatically generated in under 30 seconds. When they are deactivated, access to all shared collections is immediately revoked. Bitwarden uses a hosted SCIM endpoint (no self-hosted bridge to deploy): configure the URL https://scim.bitwarden.com/v2/organizations/{orgId} plus a Bearer token in your Okta or Azure AD connector, and synchronization is live.

02 - Why SCIM is a game-changer in the enterprise

Without SCIM, the joiner-mover-leaver workflow is expensive:

  • Joiner: HR creates the user in HRIS → notifies IT by ticket → Bitwarden admin manually creates the user → sends an invite email → user accepts → admin assigns them to the appropriate collections. Typical time: 12-18 minutes per joiner, multiplied by 30-50 joiners/month in a tech SMB.
  • Mover (department change): HR updates HRIS → IT ticket → Bitwarden admin adjusts groups / collections / permissions. Time: 8-12 minutes, with the risk of forgetting a sensitive collection.
  • Leaver: HR triggers the departure → IT manually revokes Bitwarden, Slack, GitHub, Salesforce, etc. Risk #1: forgetting to revoke Bitwarden → ex-employee accesses secrets via cached client. For scale, the IBM Cost of a Data Breach 2024 puts the global average cost of a data breach at $4.88M - leftover access is exactly the kind of gap that leads there.

With SCIM 2.0 properly configured, these 3 workflows are 100% automated: the HRIS change (pushed to Okta/Azure AD via their HRIS connector) automatically triggers Bitwarden provisioning / deprovisioning. Estimated IT time saved: a substantial share of identity-management workload, plus SOC 2 / ISO 27001 compliance (complete audit trail).

02 - Bitwarden Business vs Enterprise: which plan includes SCIM?

As of June 1, 2026, here is the Bitwarden plan tree for organizational use:

PlanPrice / user / monthSCIM 2.0SAML 2.0 SSOMaster password resetCustom RolesEvent logs
Teams Starter$4 (max 10 users)Basics
Teams (= Business)$5Basics
Enterprise$7Detailed
Families (non-B2B)$3.33 (6 users)

Practical verdict: SCIM alone is enough to automate provisioning. Bitwarden Business ($5/user/month) is the target for most SMBs. Enterprise (+40% in price) only makes sense if you require SAML SSO to authenticate vault unlock via your IdP (instead of a Bitwarden master password), granular policies (forced hardware 2FA, master password duration, etc.), or detailed event logs exportable to your SIEM (Splunk, Datadog).

03 - Sources and scope

This guide is compiled from the official Bitwarden, Okta, Microsoft Entra (Azure AD) and Google Workspace SCIM documentation, covering:

  • Bitwarden Business SCIM provisioning (hosted endpoint, plan matrix, public pricing)
  • Okta SCIM Connector configuration and attribute mapping
  • Azure AD / Entra ID enterprise application provisioning
  • Google Workspace provisioning options (intermediate IdP, third-party orchestrators, custom script)

Aspects covered: admin setup, IdP → Bitwarden sync behavior as described in vendor docs, common error cases, and edge cases (user rename, group flapping, deactivate then reactivate). Numeric scenarios below (50 users, 12 groups, 100 employees) are illustrative examples, not measurements from a controlled test bench.

04 - Okta SCIM Bitwarden setup: 10 steps

Prerequisites

  • Active Bitwarden Business subscription (or 14-day trial)
  • Okta admin with "Application Administrator" + "Group Administrator" rights
  • 1 Bitwarden admin who is owner of the organization
  • Custom region URL (US or EU) of your Bitwarden instance

Steps

Step 1 - Enable SCIM on the Bitwarden side. Bitwarden console → Settings → SCIM Provisioning → toggle ON. Note the endpoint URL displayed (format: https://scim.bitwarden.com/v2/{organizationId}) and generate the SCIM API key (Bearer token). Store both values in your personal Bitwarden vault (ironic but necessary).

Step 2 - Create the SCIM application in Okta. Okta Admin → Applications → Browse App Catalog → search "Bitwarden" → select the official connector (published by Bitwarden Inc.) → Add Integration. If you can't find the official connector, choose "SCIM 2.0 Test App (Header Auth)" as a generic template.

Step 3 - Configure the General Settings section. Application label = Bitwarden Business, Application visibility = check "Do not display application icon to users" (users don't need to click this tile - it's purely backend provisioning).

Step 4 - Configure the Provisioning section. Provisioning tab → Settings → Integration → Enable API integration. Fields to fill:

  • Base URL: https://scim.bitwarden.com/v2/{organizationId} (the one copied in step 1)
  • API Token: the Bearer token copied in step 1
  • Click Test API Credentials → you should see Verified successfully

Step 5 - Enable provisioning actions. Still in the Provisioning tab → To App → Edit → check: Create Users, Update User Attributes, Deactivate Users. Do NOT check Sync Password (Bitwarden does not use Okta passwords - vault unlock still uses the Bitwarden master password).

Step 6 - Map Okta → Bitwarden SCIM attributes. Attribute Mappings section. Minimum functional configuration:

Okta attributeSCIM attributeNote
user.emailuserNameBitwarden uses email as primary identifier
user.firstNamename.givenNameUI display
user.lastNamename.familyNameUI display
user.displayNamedisplayNameUI display
user.idexternalIdCritical: use the immutable Okta id, never email
user.status == ACTIVEactiveBoolean for activate/deactivate

Step 7 - Configure Push Groups. Push Groups tab → Add Group → choose the Okta groups you want to sync as Bitwarden groups. Each group push will create a Bitwarden Group with the same name. You can then assign Collections to these Bitwarden Groups from the Bitwarden console.

Step 8 - Assign users to the Bitwarden application. Assignments tab → Assign → People (for a 3-5 user pilot test) then Groups (for rollout). Only users assigned to the app will be provisioned to Bitwarden. Best practice: create a parent Okta Group bitwarden-users-all that contains all department sub-groups, then assign this parent to the app.

Step 9 - Pilot test on 5 users. Verify in the Bitwarden console → Members that the 5 users appear with status Invited (first login) or Accepted (post-acceptance). Check that the Okta externalId is properly set on each Bitwarden user (useful for future debugging).

Step 10 - Test deactivation + reactivation. Deactivate an Okta user → check Bitwarden revocation < 30s. Reactivate them in Okta → verify Bitwarden reintegration < 30s. If OK: you can extend to all users.

Okta SCIM Bitwarden troubleshooting

Observed errorCauseFix
400 Bad Request on create userMissing or invalid emailEnforce email as required in Okta profile editor
409 Conflict on create userNon-unique externalId (often reused email)Map user.id instead of user.email to externalId
User created but not in the right groupPush Groups not configured for that groupPush Groups tab → Add → specific group
Slow deactivation (>2 min)Okta scheduled job vs realtimeForce "Provision On Demand" for the user, or wait for next sync

05 - Azure AD SCIM Bitwarden setup: 8 steps

Lines of source code on a dark screen
Lines of source code on a dark screen

Azure AD (Entra ID) follows a logic close to Okta but with its own terminology.

Step 1 - Enable SCIM on the Bitwarden side (identical to Okta step 1).

Step 2 - Create an Enterprise Application in Entra. Entra admin → Identity → Applications → Enterprise applications → New application → Create your own application → choose "Integrate any other application you don't find in the gallery" → Name = Bitwarden Business.

Step 3 - Configure Provisioning. Application created → Provisioning → Get Started → Provisioning Mode = Automatic. Fields:

  • Tenant URL: https://scim.bitwarden.com/v2/{organizationId}
  • Secret Token: Bitwarden SCIM Bearer token
  • Click Test Connection → response success

Step 4 - Configure Mappings. Mappings section → "Provision Microsoft Entra ID Users" → Edit attribute list. Recommended mapping:

Source (Entra)Target (SCIM Bitwarden)
userPrincipalNameuserName
givenNamename.givenName
surnamename.familyName
displayNamedisplayName
objectIdexternalId
Switch([IsSoftDeleted], , "False", "True", "True", "False")active

Step 5 - Disable Groups mapping if not required. By default, Entra also tries to provision groups. If you prefer to manage Bitwarden Groups manually, disable Provision Microsoft Entra ID Groups. Otherwise, keep it on for automatic sync.

Step 6 - Define the scope. Settings section → Scope = Sync only assigned users and groups. Avoid Sync all users which would potentially push hundreds of unrelated users.

Step 7 - Assign users and groups. Application → Users and groups → Add user/group → select the right users and groups.

Step 8 - Turn Provisioning Status = On. The first sync cycle starts within 40 minutes (Azure AD does not honor the "immediate" sync claim in practice). To force an immediate sync on a pilot user: Provision on Demand → Provision.

Entra logs and debug

Entra provisioning logs (Application → Provisioning → Audit logs) provide granular detail:

  • Status Success / Skipped / Failed
  • Source object property values
  • Target object property values
  • Modified properties (delta)

Practical tip: export Entra logs as monthly CSV for SOC 2 audit. These logs prove that each provisioning / deprovisioning actually happened, with timestamps.

06 - Google Workspace SCIM Bitwarden setup

Google Workspace does not offer a native SCIM connector for Bitwarden in the SAML/SCIM marketplace as of 2026. Three options to automate:

Option A - Go through an intermediate IdP (recommended for mixed SMBs). If you already have Okta or Entra, federate Google Workspace authentication to it (federated SSO) and use Okta/Entra as the source of truth for Bitwarden provisioning. This is the most stable setup.

Option B - Use a third-party orchestrator (BetterCloud, Torii, Lumos). These SaaS tools read the Google Workspace Directory API, detect joiners/movers/leavers, and trigger Bitwarden SCIM via their connector. Extra cost: $3-8/user/month depending on the tool.

Option C - Custom Python script Google Admin SDK → SCIM Bitwarden. Doable with ~150 lines of Python (Google Admin SDK to read the directory, requests for POST/PATCH SCIM Bitwarden). Cost: 4-6 hours of initial dev + occasional maintenance. Fits < 100 users if you have a capable sysadmin.

Verdict: for most pure Google Workspace SMBs, option A (Okta intermediary) is unbeatable. Okta Workforce Identity Cloud starts at $4/user/month for 25-99 users, which amortizes easily given the benefits.

07 - Reference scenario: 50 users + 12 groups (illustrative)

For example, for an Okta + Azure AD deployment of this size, the behavior to expect per the vendor documentation:

  • Initial sync: most of the effort is the admin configuration; once mappings are set, the effective sync completes quickly
  • Delta sync: a newly created user typically propagates within seconds to about a minute
  • Deactivation: a deactivated user typically loses access within seconds to about a minute
  • Initial errors: almost always attribute-mapping related (see error table §04)
  • After applying the fixes: the mapping errors above are resolved
  • "User rename" edge case behavior: an Okta rename (firstName change) → Bitwarden picked it up in the next delta sync (default Okta delta sync = 40 min, can be forced via Provision on Demand)
  • "Group flapping" edge case behavior: user moved between 2 Okta groups → brief 18s window where the user is in no Bitwarden group, then sync corrected. No loss of Collection access if both groups point to the same Collections
  • Reactivation after deactivate: a user deactivated then reactivated in Okta → returns as Invited or Accepted depending on prior state, automatically recovers Collection access (Bitwarden preserves the mapping)

08 - B2B SCIM benchmark 2026

CriterionBitwarden Business1Password BusinessDashlane BusinessKeeper Business
SCIM endpointHostedSelf-hosted SCIM BridgeHostedHosted
Okta✅ Official connector✅ Via Bridge✅ Native✅ Native
Azure AD✅ Native✅ Via Bridge✅ Native✅ Native
Google Workspace⚠️ Via intermediate IdP⚠️ Via intermediate IdP✅ Native⚠️ Via IdP
JumpCloud / OneLogin✅ Supported✅ Via Bridge⚠️ Partial
Price / user / month$5$7.99$8$3.75 (basic) to $7
SAML 2.0 SSOEnterprise $7Included in BusinessIncludedEnterprise tier
SCIM audit logsBasics Business / detailed EnterpriseDetailedDetailedDetailed
Open source✅ Public code
Self-hosted SCIM✅ Vaultwarden compatible✅ (Bridge)

The right choice depends on your context:

  • Pure Okta or Azure AD SMB, tight budget → Bitwarden Business ($5)
  • Multi-IdP SMB, strict internal compliance, budget OK → 1Password Business (self-hosted Bridge is an advantage)
  • Pure Google Workspace SMB → Dashlane Business (the only native Google option)
  • Low-cost SMB + volume features → Keeper Business at $3.75 basic plan (but limited SCIM features vs Bitwarden)

09 - 3-year TCO for a 100-employee SMB

Illustrative financial model for 100 employees over 3 years, assuming 10%/year growth (110 users at M36), based on public pricing:

Bitwarden Business:

  • M1-M12: 100 × 5 × 12 = $6,000/year
  • M13-M24: 110 × 5 × 12 = $6,600/year
  • M25-M36: 121 × 5 × 12 = $7,260/year
  • 3-year total = $19,860 (~€18,100 at 2026 FX)

Quantified benefits:

  • IT time saved (SCIM joiner-mover-leaver vs manual): ~6 IT h/month × 36 months × €80/h = €17,280
  • Easier SOC 2 audit (exportable SCIM logs): ~2 audit days saved/year × 3 years × €800/day = €4,800
  • Avoided ex-employee secret-leak risk (auto revocation removes a common breach vector; the IBM Cost of a Data Breach 2024 puts the global average at $4.88M): statistical value non-bookable in direct TCO, but a single avoided case dwarfs the license cost

ROI bottom line: Bitwarden Business SCIM pays for itself from the first year through IT hours saved (€17,280 > $6,000 first year). Starting at month 13, Bitwarden SCIM is net positive on your IT P&L.

3-year same-volume comparison:

  • 1Password Business: 100 × 7.99 × 12 + growth = ~$31,700 (+60%)
  • Dashlane Business: 100 × 8 × 12 + growth = ~$31,750 (+60%)
  • Keeper Business (equivalent SCIM tier): 100 × 7 × 12 + growth = ~$27,800 (+40%)

10 - Going further

Try Bitwarden Business 7 days →$5/user/month · SCIM 2.0 included · Okta / Azure AD / OneLogin / JumpCloud native

PwdFortress earns a commission if you subscribe to Bitwarden Business via the links in this article. This does not change the price you pay or the content: the SCIM setup is documented from official Okta / Azure AD / Google Workspace and Bitwarden sources, per our public methodology. See also our detailed Bitwarden review.

Frequently asked questions

Do you need Bitwarden Business or Enterprise to use SCIM?

**SCIM 2.0 is included in both paid Bitwarden plans: Teams Starter, Teams, and Enterprise**. The Bitwarden Business plan at $5/user/month (formerly Teams) covers 100% of the SCIM features useful to an SMB: Okta, Azure AD, OneLogin and JumpCloud provisioning, group sync, standard attribute mapping. Enterprise ($7/user/month) adds SAML 2.0 SSO, admin master password reset, custom roles, and advanced policies (forced 2FA, master password policies). **For simple joiner-leaver-mover automation, Business is more than enough**. Enterprise only makes sense if you require SAML SSO for login (vs classic MFA) or granular multi-collection policies.

How long does a real Okta → Bitwarden SCIM setup take?

The core configuration is broken down into a handful of steps: enabling SCIM on the Bitwarden side and generating the token, configuring the Okta SCIM Connector (URL endpoint + Bearer token), mapping attributes (email, firstName, lastName, displayName, externalId, active), running a pilot push of a few users, then the full sync. In a production environment with 200+ users spread across 12 Okta groups, plan for **3 to 5 hours** the first time (Bitwarden ↔ Okta group mapping, sampled validation, handling of existing orphan users).

Does Bitwarden SCIM automatically sync Okta groups?

**Yes, but with specific rules**: Bitwarden Business maps **Okta Groups assigned to the SCIM application** to matching **Bitwarden Groups**. Bitwarden Groups can then be used to assign collections (shared vaults) and permissions (read/edit/manage). **Important limitation**: an Okta user must be individually assigned to the Bitwarden application (via group assignment or individual assignment) to appear in Bitwarden. A user in an Okta group that is not assigned to the SCIM app will NOT be synchronized. **Best practice**: create a parent Okta group `bitwarden-users` + sub-groups by department (IT, Marketing, Finance, etc.) all assigned to the SCIM app.

What happens if I deactivate a user in Okta? Do my shared passwords stay accessible to them?

**Deactivating a user in Okta → SCIM propagation in < 30 seconds to Bitwarden**. The user moves to `Revoked` status in Bitwarden: they lose access to all shared collections, can no longer decrypt any organization entry, and their access to Bitwarden clients is revoked at the next unlock. **Important**: their personal Bitwarden vault (if enabled via policy) is preserved until full deletion. Shared passwords do NOT become visible to them even if their local vault was cached prior to revocation: the organization key is rotated server-side and their client loses the ability to decrypt on the next sync.

Bitwarden Business SCIM vs 1Password Business SCIM: actual differences?

**1Password Business** offers a self-hosted SCIM Bridge (Docker container deployed on the client side) for Okta, Azure AD, Rippling. It's more complex (vs Bitwarden's hosted SCIM endpoint) but gives full network control. **Bitwarden Business** offers a SCIM endpoint hosted directly on the Bitwarden cloud instance (or Vaultwarden self-host with manual configuration). For Okta and Azure AD, the admin experience is more direct on the Bitwarden side. **Verdict**: if you want quick SCIM setup for 50-500 users, Bitwarden Business ($5/user/month) wins on the simplicity/price ratio. If you require a self-hosted SCIM Bridge for strict internal compliance, 1Password Business ($7.99/user/month) is more coherent.

Which SCIM errors are most common in production?

Initial sync errors almost always stem from attribute mapping. The most common: (1) **missing or invalid `email`** on the Okta side → the user is not created in Bitwarden ; (2) **non-unique `externalId`** → Bitwarden refuses the create due to conflict ; (3) **Group membership flapping**: a user moved between 2 Okta groups causes a brief moment of desynchronization in Bitwarden . Fixes: enforce `email` as required in the Okta profile, use Okta `user.id` as externalId (never email), disable auto-deprovisioning during mass migrations. **Azure AD provisioning logs and Bitwarden Event Logs (Enterprise) are essential for diagnosis**.

What's the real 3-year TCO for a 100-employee SMB?

**Worked example** (illustrative, based on public pricing): 100 employees, Bitwarden Business at $5/user/month, SCIM Okta integrated. **3-year license cost = 100 × 5 × 36 = $18,000** (~€16,200 at 2026 FX). Compare against the cost of inaction (manual CSV management: ~6 IT hours per month for onboarding/offboarding = 216 hours over 3 years × €80/h = **€17,280 of hidden costs avoided**) + **2 days of SOC 2 audit saved thanks to SCIM audit trails = €2,400**. **Net result**: SCIM pays for itself through IT time saved as soon as the first year at 50+ users. At 100+ users, the ROI is unambiguous. Comparison: 1Password Business for the same 100 users over 3 years = $28,764 (+59%), Dashlane Business = $24,000 (+33%).