Authenticate users, sync teams, and provision roles and business units from your identity provider using OAuth 2.0 / OIDC and background directory sync.
Bifrost Enterprise connects your organization’s identity provider to Bifrost through OAuth 2.0 / OIDC login plus provider-backed directory sync. A single configuration gives you:
Single sign-on (SSO) via OAuth 2.0 / OIDC with JWKS-based JWT validation
Automatic role assignment using custom claims, app roles, or group-to-role mappings
Team synchronization from IdP groups into Bifrost teams
Business unit mapping from IdP attributes to Bifrost business units
Bulk user provisioning with filter-preview before import
Background lifecycle reconciliation every 24 hours for imported users
OIDC session refresh checks every 15 minutes to confirm users are still active with the IdP
Silent token refresh using server-stored refresh tokens when the user remains active
Once configured, users sign in to Bifrost with their corporate credentials and inherit the right role and permissions immediately - no manual account creation.
Pick your IdP to follow a step-by-step setup guide. All providers share the same Bifrost configuration surface - the only difference is how the OAuth client and role/group claims are created on the provider side.
Okta
OIDC with Org or Custom Authorization Servers, plus group-to-role mapping and API tokens for bulk user sync and 24-hour background reconciliation.
Microsoft Entra
Entra ID (Azure AD) with app roles, group claims, and v1.0 / v2.0 token support.
Keycloak
Self-hosted or managed Keycloak with OIDC login and Admin REST API based user provisioning.
Zitadel
Cloud or self-hosted Zitadel with project-scoped role claims and service-account-based provisioning.
Google Workspace
Google Workspace domains with OAuth login plus optional Directory API sync via a service account.
Login - Bifrost redirects unauthenticated users to the provider’s authorization endpoint (Authorization Code flow).
Token exchange - on callback, Bifrost exchanges the code for an access token and refresh token, stores them in an HttpOnly cookie / server session, and validates the JWT against the provider’s JWKS.
Identity extraction - configurable JWT claims (userIdField, rolesField, teamIdsField) are mapped to a Bifrost user, role, and teams. Provider-specific app roles or custom attributes override claim lookup.
Attribute mapping - optional attributeRoleMappings, attributeTeamMappings, and attributeBusinessUnitMappings translate arbitrary claim values (e.g., a department string or Okta group name) into Bifrost roles, teams, or business units.
Session refresh checks - every 15 minutes, Bifrost refreshes the OIDC session. If the session cannot be refreshed, Bifrost checks with the OIDC server whether the user is still active.
Background reconciliation - Bifrost periodically calls the configured provider’s directory APIs to reconcile imported users and mapped roles, teams, and business units.
Bulk import - admins can preview users matching a filter and bulk-import them via the dashboard, which calls the provider’s user directory API.
Daily sync - Bifrost reconciles imported users every 24 hours.
Decommissioning - if the OIDC server reports that a user is no longer active, or the 24-hour reconciliation no longer finds them in the active source set, Bifrost decommissions that user locally.
JWTs are validated against the provider’s published JWKS keys; configuration is cached and auto-refreshed.
Role mapping
Map from a claim value (string or array) to Admin / Developer / Viewer or a custom role. Highest-privilege wins when multiple match.
Team mapping
Map multiple claim values to Bifrost teams in a single pass (a user can belong to many teams).
Business unit mapping
Same as team mapping but scoped to business units.
Provisioning preview
Preview up to 50 users matching filters (groups, roles, departments) before importing.
Bulk import
Import matched users into Bifrost with role + team + BU assignments applied.
Team sync
Sync IdP groups as Bifrost teams with a single action.
Business unit sync
Sync IdP organizational units as Bifrost business units.
Deprovisioning
Bifrost checks user status during each 15-minute OIDC session refresh and reconciles imported users against the provider directory every 24 hours. Users that are inactive, disabled, unassigned, or missing from the source set are decommissioned locally.
API key pass-through
Requests using Bifrost API keys (bfst-*) bypass OIDC user-provisioning middleware so inference traffic is not affected.
Bifrost does not currently support inbound SCIM management APIs from IdPs. Do not configure an IdP SCIM app or point an IdP provisioning connector at Bifrost /scim/v2 yet. SCIM management API support is coming soon.
Bifrost’s supported lifecycle model is source-side reconciliation plus OIDC session validation. Every 15 minutes, Bifrost refreshes active OIDC sessions. If a session cannot be refreshed, Bifrost checks with the OIDC server whether the user is still active; if the provider reports the user is inactive, Bifrost decommissions that user locally.After users are imported, Bifrost also uses the configured provider credentials to sync with the IdP in the background every 24 hours. That sync updates mapped roles, teams, and business units, and decommissions imported users that are disabled, unassigned, or no longer present in the provider source set.
Fields marked env.* supported accept "env.VAR_NAME" in addition to a literal value - Bifrost resolves the variable from the process environment at startup. Attribute mapping arrays are always plain JSON (they cannot reference env vars).
Navigate to Governance → User Provisioning in the Bifrost dashboard.
Select your identity provider from the OIDC Provider dropdown.
Fill in the provider-specific fields. Required fields are marked and validated on Verify.
Click Verify to test credentials end-to-end. Bifrost will reach the provider’s JWKS / directory endpoint and report any failures.
Configure Attribute → Role / Team / Business Unit mappings as needed.
Toggle Enabled and click Save Configuration.
After enabling a new provider, the next dashboard load redirects to your IdP for login. Test in an incognito window first to avoid being locked out of your current session.
Attribute mappings let you translate claim values into Bifrost roles, teams, or business units without forcing your IdP admins to restructure claim names.
Access denied: no application role or group mapping is assigned to this user.
Make sure you have assigned user to the Bifrost IdP application and they have a valid group/attribute mapping to role in Bifrost
Redirect loop on login
Make sure you have restarted pods/Bifrost instance after changing OIDC configuration, or check for a redirect URI mismatch. Exact string match required - check trailing slashes and http vs https.
invalid audience
audience field does not match the access token’s aud claim. Use the same value your IdP issues.
Empty roles / teams
Claim mapping is off. Verify the JWT at jwt.io and check rolesField / teamIdsField.
Token refresh failing
offline_access scope missing or refresh token revoked. Re-enable the scope and re-authenticate.
First user gets Admin
By design - if no matching role mapping applies, the first user is promoted to Admin so they can finish configuration. Subsequent users default to Viewer.
Provider-specific troubleshooting lives in each IdP’s guide.