Enable real-time user and group provisioning from Microsoft Entra ID to Bifrost Enterprise using SCIM 2.0.
SCIM (System for Cross-domain Identity Management) keeps Bifrost in sync with Entra in real time - new users are provisioned, deactivated users are suspended, and group memberships are updated without waiting for the next login or background sync.
Complete SSO using OIDC before setting up SCIM. SCIM runs as a separate provisioning job alongside your existing OIDC integration.
In your Bifrost dashboard, go to Governance → User Provisioning and open your configured Microsoft Entra provider.
The Microsoft Entra provider dashboard showing your connection details and attribute mappings.
2
Enable SCIM provisioning
Click the settings icon to open Provider Configuration.Toggle on Enable SCIM Provisioning and click Save & Enable.
Enable SCIM Provisioning in Provider Configuration - the SCIM endpoint URL and token are generated after saving.
3
Copy the SCIM credentials
After saving, Bifrost shows a Setup Complete dialog with:
SCIM Endpoint URL - the base URL Entra will send provisioning requests to
Provisioning Token - the bearer token Entra uses to authenticate
Copy both values now - you will need them in Step 2.
Setup Complete dialog showing the SCIM Endpoint URL and Provisioning Token.
The provisioning token is only shown once. Store it somewhere safe before closing this dialog. You can always rotate it later, but the previous token will immediately become invalid.
Alternative: seed the token declaratively (Helm / config.json)
If you manage Bifrost with Helm or a static config.json (GitOps), you can seed the Provisioning Token yourself instead of generating it in the dashboard.
This produces a URL-safe token in the same format Bifrost mints internally.
2
Add it to your SCIM config
Helm values.yaml:
bifrost: scim: enabled: true provider: "entra" config: tenantId: "..." clientId: "..." clientSecret: "env.ENTRA_CLIENT_SECRET" provisioningToken: "env.SCIM_PROVISIONING_TOKEN" # or the literal token claimScimAttributes: # per-claim SCIM interpretation groups: attributeType: "group" # "user" (SCIM User attribute) or "group" (match SCIM Group) attributeValue: "displayName" claimsSyncMode: "both" # provisioning source: "both" (SCIM + login claims) or "scim" (SCIM only - ignore login claims)
The same keys (provisioningToken, claimScimAttributes, claimsSyncMode) apply directly under scim_config.config in a raw config.json.
Keep the token in a Kubernetes Secret and reference it with the env. prefix - never commit the literal value. Rotating the token in the dashboard invalidates any value seeded here.
Then use this token as the Secret Token and your deployment’s SCIM endpoint as the Tenant URL in Step 2 below.
The provider configuration includes a Provisioning source setting that controls whether IdP login claims still provision users, or whether SCIM is the sole source of truth:
The Provisioning source setting in the provider configuration - choose between SCIM and login claims (default) or SCIM only.
Option
Config value
Behavior
SCIM and login claims (default)
both
Both SCIM and IdP login / token-refresh claims create and update users, roles, teams, and business units.
SCIM only - ignore login claims
scim
SCIM is the sole source of truth. OIDC claims will be ignored and will never create or update users from claims - new users must be pushed by SCIM. At login, a user is admitted only if what SCIM last pushed for them resolves to a role, even if they already hold one; anyone SCIM hasn’t pushed yet is denied.
Choose SCIM only when provisioning must be fully controlled by your IdP’s SCIM app and login-time claim changes should never alter membership. Leave it on the default SCIM and login claims if users are also provisioned just-in-time on first login.This maps to the claimsSyncMode config key (both or scim) and is inert when SCIM Provisioning is disabled - claims always sync then.
In the Azure Portal, go to Microsoft Entra ID → Enterprise applications → Bifrost Enterprise.Open Provisioning. On the Get started tab, click Connect your application under Create configuration.
These steps follow Entra’s new provisioning experience. If your tenant still shows the legacy layout, select Get started, set Provisioning Mode to Automatic, and then use the same settings on that one Provisioning page: Admin Credentials for the Tenant URL and Secret Token, Mappings for attribute mappings, and Settings for the scope.
Provisioning Get started tab - Connect your application opens the SCIM connection settings.
2
Set the provisioning mode and credentials
On the Connectivity page, keep Bearer authentication as the authentication method and enter:
Click Test connection to verify, then Save. Entra only enables Save after a successful test.
Connectivity - enter the SCIM Endpoint URL as Tenant URL and the Provisioning Token as Secret token, then test the connection.
3
Configure attribute mappings (optional)
Open Attribute mapping to review or adjust how Entra user and group attributes are mapped to SCIM fields that Bifrost receives.The default mappings cover standard fields (name, email, active status, groups). Skip this step unless you need to sync custom attributes.
To include a custom attribute in the SCIM payload Entra sends to Bifrost:
Open Attribute mapping and stay on the Users tab
Click Add attribute mapping
Set the Source attribute to the Entra user property (e.g. employeeId, department)
Set the Target attribute to the corresponding SCIM attribute name (e.g. urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:employeeNumber)
Click Add, then Save
Attribute mapping - map an Entra user attribute to the SCIM attribute Bifrost will receive.
Back in Bifrost, go to Attribute Mapping in the provider setup and add a SCIM Attribute entry using the same attribute name. The name must match exactly - including case.
4
Enable provisioning
Open Manage → Provisioning, confirm Provisioning Mode is Automatic, set Provisioning Status to On and click Save.
Set Provisioning Status to On to start the SCIM sync cycle.
Go to Enterprise applications → Bifrost Enterprise → Users and groups.Click Add user/group and select the users or groups you want to provision into Bifrost.
Users and groups - only users and groups assigned here are included in the SCIM provisioning scope.
Only users and groups explicitly assigned to the application are provisioned when the provisioning scope is set to Sync only assigned users and groups (the default). Set scope to Sync all users and groups only if you want to provision your entire directory.
Assigned users are pushed to Bifrost during the next provisioning cycle (typically within 40 minutes). When a user is unassigned or disabled in Entra, Bifrost deactivates them in real time.
2
Trigger an on-demand sync (optional)
To provision a specific user immediately without waiting for the next cycle, go to the Provisioning tab and click Provision on demand.Search for the user, select them, and click Provision.
Provision on demand - push a specific user to Bifrost immediately for testing or urgent onboarding.
Once provisioning is active, confirm everything is syncing correctly.
Go to Governance → Users to see provisioned users and their assigned roles
Go to Governance → Teams to see teams populated from synced groups
Go to Governance → Business Units to see business units resolved from group or attribute mappings
Changes in Entra - new assignments, group membership updates, deactivations - will reflect in Bifrost within the provisioning cycle (typically 40 minutes for incremental cycles, up to 4 hours for the initial cycle).
Initial cycle - on first enable, Entra performs a full sync of all in-scope users and groups. This can take up to 4 hours for large directories.Incremental cycles - after the initial sync, Entra pushes only changes (new users, deactivations, attribute updates, group membership changes) every ~40 minutes.No background reconciliation while SCIM Provisioning is on - Bifrost’s scheduled directory sync from the Microsoft Graph API is turned off while SCIM Provisioning is enabled, so make sure Entra’s provisioning job pushes every change, including deactivations.
Test Connection fails - verify the Tenant URL has no trailing slash and the Secret Token matches exactly what Bifrost generated. Rotate the token in Bifrost and update Entra if needed.Users are provisioned but have no role - SCIM provisions the user record; role assignment comes from attribute mappings in the OIDC provider. Confirm your Attribute-to-Role mappings are configured and the relevant claims are present in the JWT at login time.Custom attribute is not arriving in Bifrost - confirm the SCIM attribute name in Entra’s mapping and Bifrost’s SCIM Attribute setting match exactly (case-sensitive). Verify the mapping was saved under Provision Microsoft Entra ID Users.Group membership is not syncing - groups must be assigned to the Enterprise Application and provisioning scope must include groups. Check that Provision Microsoft Entra ID Groups is enabled under Mappings.Users are stuck in “Pending” - this is normal during the initial cycle for large directories. Check the Provisioning logs under Monitoring in the Provisioning tab for per-user status and any errors.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/schema.json","name":"Bifrost","colors":{"primary":"#0C3B43","light":"#07C983"},"logo":{"light":"https://mintcdn.com/bifrost/qFMmk8bNSnvgFYDI/media/bifrost-logo.png?fit=max\u0026auto=format\u0026n=qFMmk8bNSnvgFYDI\u0026q=85\u0026s=6af701a560aee4103444fa017b226cf0","dark":"https://mintcdn.com/bifrost/qFMmk8bNSnvgFYDI/media/bifrost-logo-dark.png?fit=max\u0026auto=format\u0026n=qFMmk8bNSnvgFYDI\u0026q=85\u0026s=84d264aad5f421c526dd17893e7c5739"},"favicon":"https://mintcdn.com/bifrost/qFMmk8bNSnvgFYDI/favicon.ico?fit=max\u0026auto=format\u0026n=qFMmk8bNSnvgFYDI\u0026q=85\u0026s=a57bad8c37d798efcb53dca5d96d8b45","navbar":{"links":[{"href":"https://www.getmaxim.ai/enterprise?utm_source=bifrost_docs\u0026utm_medium=Bifrost_Navbar#free-license","label":"Request License"}],"primary":{"type":"button","label":"Book a Demo","href":"https://www.getmaxim.ai/book-a-demo?utm_source=bifrost_docs\u0026utm_medium=Bifrost_Navbar"}},"footer":{"socials":{"x":"https://x.com/getbifrost","linkedin":"https://linkedin.com/company/maxim-ai","github":"https://github.com/maximhq/bifrost"},"links":[{"header":"Company","items":[{"label":"Book a Demo","href":"https://www.getmaxim.ai/book-a-demo?utm_source=bifrost_docs\u0026utm_medium=Bifrost_Footer"},{"label":"Partner Program","href":"https://www.getmaxim.ai/partners-program?utm_source=bifrost_docs\u0026utm_medium=Bifrost_Footer"},{"label":"Careers","href":"https://www.getmaxim.ai/careers?utm_source=bifrost_docs\u0026utm_medium=Bifrost_Footer"},{"label":"Contact Us","href":"mailto:[email protected]"},{"label":"Security","href":"https://docs.getbifrost.ai/security"},{"label":"Trust Center","href":"https://trust.getmaxim.ai/"},{"label":"Terms of Service","href":"https://www.getmaxim.ai/terms-of-service?utm_source=bifrost_docs\u0026utm_medium=Bifrost_Footer"},{"label":"Privacy Policy","href":"https://www.getmaxim.ai/privacy-policy?utm_source=bifrost_docs\u0026utm_medium=Bifrost_Footer"}]},{"header":"Products","items":[{"label":"LLM Gateway","href":"https://www.getmaxim.ai/llm-gateway?utm_source=bifrost_docs\u0026utm_medium=Bifrost_Footer"},{"label":"MCP Gateway","href":"https://www.getmaxim.ai/mcp-gateway?utm_source=bifrost_docs\u0026utm_medium=Bifrost_Footer"},{"label":"Governance","href":"https://www.getmaxim.ai/ai-governance?utm_source=bifrost_docs\u0026utm_medium=Bifrost_Footer"},{"label":"Guardrails","href":"https://www.getmaxim.ai/ai-guardrails?utm_source=bifrost_docs\u0026utm_medium=Bifrost_Footer"},{"label":"Observability","href":"https://www.getmaxim.ai/ai-observability?utm_source=bifrost_docs\u0026utm_medium=Bifrost_Footer"},{"label":"Bifrost Edge","href":"https://www.getmaxim.ai/edge?utm_source=bifrost_docs\u0026utm_medium=Bifrost_Footer"}]},{"header":"Resources","items":[{"label":"Bifrost Enterprise","href":"https://www.getmaxim.ai/enterprise?utm_source=bifrost_docs\u0026utm_medium=Bifrost_Footer"},{"label":"Performance Benchmarks","href":"https://www.getmaxim.ai/bifrost/resources/benchmarks?utm_source=bifrost_docs\u0026utm_medium=Bifrost_Footer"},{"label":"LLM Gateway Buyer's Guide","href":"https://www.getmaxim.ai/bifrost/resources/buyers-guide?utm_source=bifrost_docs\u0026utm_medium=Bifrost_Footer"},{"label":"Claude Code Integration","href":"https://www.getmaxim.ai/bifrost/resources/claude-code?utm_source=bifrost_docs\u0026utm_medium=Bifrost_Footer"},{"label":"Migrating from LiteLLM","href":"https://www.getmaxim.ai/bifrost/resources/migrating-from-litellm?utm_source=bifrost_docs\u0026utm_medium=Bifrost_Footer"},{"label":"Blogs","href":"https://www.getmaxim.ai/bifrost/blog?utm_source=bifrost_docs\u0026utm_medium=Bifrost_Footer"}]},{"header":"For LLMs","items":[{"label":"llms-full.txt","href":"https://docs.getbifrost.ai/llms-full.txt"},{"label":"llms.txt","href":"https://docs.getbifrost.ai/llms.txt"},{"label":"llm-info","href":"https://www.getmaxim.ai/llm-info?utm_source=bifrost_docs\u0026utm_medium=Bifrost_Footer"}]}]},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"Discord","icon":"discord","href":"https://discord.gg/exN5KAydbU"},{"anchor":"GitHub","icon":"github","href":"https://github.com/maximhq/bifrost"},{"anchor":"Try Enterprise","icon":"building","href":"https://www.getmaxim.ai/bifrost/enterprise"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"bifrost","hasAudioNarration":false,"actualSubdomain":"bifrost","customDomains":["docs.getbifrost.ai"],"gitSource":{"type":"github","owner":"maximhq","repo":"bifrost","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af33eb9e49ad3dd9a8f5554","clientVersion":"0.0.4094","searchFilterCounts":[{"language":"default","tag":"API","count":690},{"language":"default","tag":"Changelogs","count":324},{"language":"default","tag":"Integrations","count":252},{"language":"default","tag":"Platform","count":237},{"language":"default","tag":"Open Source","count":166},{"language":"default","tag":"OSS","count":152},{"language":"default","tag":"Governance","count":132},{"language":"default","tag":"Enterprise","count":108},{"language":"default","tag":"Helm","count":77},{"language":"default","tag":"Inference","count":71}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".nav-logo{height:1.50rem}div:has(>nav[aria-label=\"Main\"]){gap:1.5rem}nav[aria-label=\"Main\"]>ul{gap:1rem}nav[aria-label=\"Main\"] a[href*=\"book-a-demo\"]{padding:0.4375rem 0.625rem}nav[aria-label=\"Main\"] a[href*=\"book-a-demo\"] svg{display:none}div:has(>nav[aria-label=\"Main\"])>*,nav[aria-label=\"Main\"]>ul>*{margin-inline:0}nav[aria-label=\"Main\"] .navbar-link a[href*=\"#free-license\"]{display:inline-flex;align-items:center;border:1px solid rgb(var(--primary-dark));border-radius:0.75rem;box-sizing:border-box;padding:calc(0.4375rem - 1px) 0.625rem;color:rgb(var(--primary-dark));background:transparent;font-size:0.875rem;font-weight:500;line-height:1.25rem}nav[aria-label=\"Main\"] .navbar-link a[href*=\"#free-license\"]:hover{background-color:rgb(var(--primary-dark) / 0.1)}.dark nav[aria-label=\"Main\"] .navbar-link a[href*=\"#free-license\"]{border-color:rgb(var(--primary-light));color:rgb(var(--primary-light))}.dark nav[aria-label=\"Main\"] .navbar-link a[href*=\"#free-license\"]:hover{background-color:rgb(var(--primary-light) / 0.12)}#sidebar-group>li>button>div{line-height:normal}.footer-compliance{display:flex;align-items:center;flex-wrap:wrap;gap:0.5rem;max-width:100%}.footer-compliance img{width:2.5rem;height:2.5rem;flex:none;object-fit:contain}@media (max-width: 767px){footer.advanced-footer>div>div:first-child>div:first-child{flex-direction:column;align-items:flex-start;justify-content:flex-start;row-gap:1rem;width:100%;height:auto}footer.advanced-footer>div>div:first-child>div:first-child>div:last-child{justify-content:flex-start;min-width:0;max-width:100%}footer.advanced-footer>div>div:first-child>div:last-child,footer.advanced-footer>div>div:first-child>div:last-child>div,footer.advanced-footer a[class*=\"truncate\"]{white-space:normal!important}}@media (min-width: 768px){footer.advanced-footer>div>div:first-child{justify-content:flex-start;column-gap:3rem}footer.advanced-footer>div>div:first-child>div:first-child{min-width:0;justify-content:flex-start;align-items:flex-start;row-gap:1.25rem}footer.advanced-footer>div>div:first-child>div:first-child>div:last-child{margin-top:auto}footer.advanced-footer>div>div:first-child>div:last-child{flex:0 1 auto;justify-content:start;grid-template-columns:repeat(4, max-content)!important;column-gap:4rem!important}footer.advanced-footer>div>div:first-child>div:last-child>div{align-items:flex-start;width:auto;flex:none}footer.advanced-footer a[class*=\"truncate\"]{max-width:none!important;overflow:visible!important;text-overflow:unset!important;white-space:nowrap!important}}"}],"page":{"pagePath":"enterprise/setting-up-entra/scim","slug":"/enterprise/setting-up-entra/scim","pageMetadata":{"title":"Setup SCIM","description":"Enable real-time user and group provisioning from Microsoft Entra ID to Bifrost Enterprise using SCIM 2.0.","href":"/enterprise/setting-up-entra/scim"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Enable real-time user and group provisioning from Microsoft Entra ID to Bifrost Enterprise using SCIM 2.0.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,hr:`hr`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,CodeBlock,Frame,Heading,Note,OptimizedImage,Step,Steps,Table,Warning}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`SCIM (System for Cross-domain Identity Management) keeps Bifrost in sync with Entra in real time - new users are provisioned, deactivated users are suspended, and group memberships are updated without waiting for the next login or background sync.`}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`Complete `,_jsx(_components.a,{href:`/enterprise/setting-up-entra/oidc`,children:`SSO using OIDC`}),` before setting up SCIM. SCIM runs as a `,_jsx(_components.strong,{children:`separate`}),` provisioning job alongside your existing OIDC integration.`]})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`step-1-enable-scim-in-bifrost`,children:`Step 1: Enable SCIM in Bifrost`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Open your Entra provider`,children:[_jsxs(_components.p,{children:[`In your Bifrost dashboard, go to `,_jsx(_components.strong,{children:`Governance`}),` → `,_jsx(_components.strong,{children:`User Provisioning`}),` and open your configured Microsoft Entra provider.`]}),_jsx(Frame,{caption:`The Microsoft Entra provider dashboard showing your connection details and attribute mappings.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/bifrost/CLkUcHmzAZl61Y9J/media/user-provisioning/entra/bifrost-provider-setting.png?fit=max\u0026auto=format\u0026n=CLkUcHmzAZl61Y9J\u0026q=85\u0026s=95793c9fc255311d511f82a78149f8f6`,alt:`Bifrost Microsoft Entra provider dashboard showing connection details and attribute mappings`,\"data-og-width\":`1272`,width:`1272`,\"data-og-height\":`901`,height:`901`,\"data-path\":`media/user-provisioning/entra/bifrost-provider-setting.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/bifrost/CLkUcHmzAZl61Y9J/media/user-provisioning/entra/bifrost-provider-setting.png?w=280\u0026fit=max\u0026auto=format\u0026n=CLkUcHmzAZl61Y9J\u0026q=85\u0026s=7e60d4262fa6c3dc2542eddf6b85dcc0 280w, https://mintcdn.com/bifrost/CLkUcHmzAZl61Y9J/media/user-provisioning/entra/bifrost-provider-setting.png?w=560\u0026fit=max\u0026auto=format\u0026n=CLkUcHmzAZl61Y9J\u0026q=85\u0026s=448f9f55ca377da8274805f1109063ea 560w, https://mintcdn.com/bifrost/CLkUcHmzAZl61Y9J/media/user-provisioning/entra/bifrost-provider-setting.png?w=840\u0026fit=max\u0026auto=format\u0026n=CLkUcHmzAZl61Y9J\u0026q=85\u0026s=521000953c74accf518ec5306b9cb6b6 840w, https://mintcdn.com/bifrost/CLkUcHmzAZl61Y9J/media/user-provisioning/entra/bifrost-provider-setting.png?w=1100\u0026fit=max\u0026auto=format\u0026n=CLkUcHmzAZl61Y9J\u0026q=85\u0026s=becc024d97a22e9bd3e69c10d922907a 1100w, https://mintcdn.com/bifrost/CLkUcHmzAZl61Y9J/media/user-provisioning/entra/bifrost-provider-setting.png?w=1650\u0026fit=max\u0026auto=format\u0026n=CLkUcHmzAZl61Y9J\u0026q=85\u0026s=04c0f064bf30582e5b610cef1887e583 1650w, https://mintcdn.com/bifrost/CLkUcHmzAZl61Y9J/media/user-provisioning/entra/bifrost-provider-setting.png?w=2500\u0026fit=max\u0026auto=format\u0026n=CLkUcHmzAZl61Y9J\u0026q=85\u0026s=c20949e89c6a36ef69498f805cc426f3 2500w`})})]}),_jsxs(Step,{title:`Enable SCIM provisioning`,children:[_jsxs(_components.p,{children:[`Click the settings icon to open `,_jsx(_components.strong,{children:`Provider Configuration`}),`.`]}),_jsxs(_components.p,{children:[`Toggle on `,_jsx(_components.strong,{children:`Enable SCIM Provisioning`}),` and click `,_jsx(_components.strong,{children:`Save \u0026 Enable`}),`.`]}),_jsx(Frame,{caption:`Enable SCIM Provisioning in Provider Configuration - the SCIM endpoint URL and token are generated after saving.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/bifrost/CLkUcHmzAZl61Y9J/media/user-provisioning/entra/bifrost-enable-scim.png?fit=max\u0026auto=format\u0026n=CLkUcHmzAZl61Y9J\u0026q=85\u0026s=90ebffe959879211085e0a11ee0b105b`,alt:`Bifrost Provider Configuration with Enable SCIM Provisioning toggle turned on`,\"data-og-width\":`1272`,width:`1272`,\"data-og-height\":`901`,height:`901`,\"data-path\":`media/user-provisioning/entra/bifrost-enable-scim.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/bifrost/CLkUcHmzAZl61Y9J/media/user-provisioning/entra/bifrost-enable-scim.png?w=280\u0026fit=max\u0026auto=format\u0026n=CLkUcHmzAZl61Y9J\u0026q=85\u0026s=c179aebde0734a5852b88bc72a96609f 280w, https://mintcdn.com/bifrost/CLkUcHmzAZl61Y9J/media/user-provisioning/entra/bifrost-enable-scim.png?w=560\u0026fit=max\u0026auto=format\u0026n=CLkUcHmzAZl61Y9J\u0026q=85\u0026s=a7efc4e6a87405f208c406f122f1bba7 560w, https://mintcdn.com/bifrost/CLkUcHmzAZl61Y9J/media/user-provisioning/entra/bifrost-enable-scim.png?w=840\u0026fit=max\u0026auto=format\u0026n=CLkUcHmzAZl61Y9J\u0026q=85\u0026s=153b9c4e10b2c0487b1a67723e19707d 840w, https://mintcdn.com/bifrost/CLkUcHmzAZl61Y9J/media/user-provisioning/entra/bifrost-enable-scim.png?w=1100\u0026fit=max\u0026auto=format\u0026n=CLkUcHmzAZl61Y9J\u0026q=85\u0026s=9305a199ce39c98912b45ebe7c27fe88 1100w, https://mintcdn.com/bifrost/CLkUcHmzAZl61Y9J/media/user-provisioning/entra/bifrost-enable-scim.png?w=1650\u0026fit=max\u0026auto=format\u0026n=CLkUcHmzAZl61Y9J\u0026q=85\u0026s=3dbe3bcd2eba0bd6f3dd3b335d582943 1650w, https://mintcdn.com/bifrost/CLkUcHmzAZl61Y9J/media/user-provisioning/entra/bifrost-enable-scim.png?w=2500\u0026fit=max\u0026auto=format\u0026n=CLkUcHmzAZl61Y9J\u0026q=85\u0026s=9b5b7b965a113f8c4f190626326e7f36 2500w`})})]}),_jsxs(Step,{title:`Copy the SCIM credentials`,children:[_jsxs(_components.p,{children:[`After saving, Bifrost shows a `,_jsx(_components.strong,{children:`Setup Complete`}),` dialog with:`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`SCIM Endpoint URL`}),` - the base URL Entra will send provisioning requests to`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Provisioning Token`}),` - the bearer token Entra uses to authenticate`]}),`\n`]}),_jsxs(_components.p,{children:[`Copy both values now - you will need them in `,_jsx(_components.a,{href:`#step-2-configure-entra-provisioning`,children:`Step 2`}),`.`]}),_jsx(Frame,{caption:`Setup Complete dialog showing the SCIM Endpoint URL and Provisioning Token.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/bifrost/CLkUcHmzAZl61Y9J/media/user-provisioning/entra/bifrost-scim-provisioning-token-dialog.png?fit=max\u0026auto=format\u0026n=CLkUcHmzAZl61Y9J\u0026q=85\u0026s=43e605d7e52824b5dbf791556e7a3080`,alt:`Bifrost Setup Complete dialog displaying the SCIM Endpoint URL and one-time Provisioning Token`,\"data-og-width\":`1272`,width:`1272`,\"data-og-height\":`901`,height:`901`,\"data-path\":`media/user-provisioning/entra/bifrost-scim-provisioning-token-dialog.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/bifrost/CLkUcHmzAZl61Y9J/media/user-provisioning/entra/bifrost-scim-provisioning-token-dialog.png?w=280\u0026fit=max\u0026auto=format\u0026n=CLkUcHmzAZl61Y9J\u0026q=85\u0026s=f2ad5daf56b866e03dc6dad11f96831f 280w, https://mintcdn.com/bifrost/CLkUcHmzAZl61Y9J/media/user-provisioning/entra/bifrost-scim-provisioning-token-dialog.png?w=560\u0026fit=max\u0026auto=format\u0026n=CLkUcHmzAZl61Y9J\u0026q=85\u0026s=303b67c5822124bcc9506182baecab91 560w, https://mintcdn.com/bifrost/CLkUcHmzAZl61Y9J/media/user-provisioning/entra/bifrost-scim-provisioning-token-dialog.png?w=840\u0026fit=max\u0026auto=format\u0026n=CLkUcHmzAZl61Y9J\u0026q=85\u0026s=26c7c78d6f38d71b7384754a44353351 840w, https://mintcdn.com/bifrost/CLkUcHmzAZl61Y9J/media/user-provisioning/entra/bifrost-scim-provisioning-token-dialog.png?w=1100\u0026fit=max\u0026auto=format\u0026n=CLkUcHmzAZl61Y9J\u0026q=85\u0026s=f5d2a857bc76e04dd4328202862ff637 1100w, https://mintcdn.com/bifrost/CLkUcHmzAZl61Y9J/media/user-provisioning/entra/bifrost-scim-provisioning-token-dialog.png?w=1650\u0026fit=max\u0026auto=format\u0026n=CLkUcHmzAZl61Y9J\u0026q=85\u0026s=09f0a0fa3d51b006ec3c17ba5f0c0610 1650w, https://mintcdn.com/bifrost/CLkUcHmzAZl61Y9J/media/user-provisioning/entra/bifrost-scim-provisioning-token-dialog.png?w=2500\u0026fit=max\u0026auto=format\u0026n=CLkUcHmzAZl61Y9J\u0026q=85\u0026s=8f9da5d627eca73f23c752665945e7d0 2500w`})}),_jsx(Warning,{children:_jsx(_components.p,{children:`The provisioning token is only shown once. Store it somewhere safe before closing this dialog. You can always rotate it later, but the previous token will immediately become invalid.`})})]})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`3`,id:`alternative-seed-the-token-declaratively-helm-/-config-json`,children:`Alternative: seed the token declaratively (Helm / config.json)`}),`\n`,_jsxs(_components.p,{children:[`If you manage Bifrost with Helm or a static `,_jsx(_components.code,{children:`config.json`}),` (GitOps), you can seed the `,_jsx(_components.strong,{children:`Provisioning Token`}),` yourself instead of generating it in the dashboard.`]}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Generate a token`,children:[_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`openssl`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` rand`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -base64`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 32`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` |`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` tr`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '+/'`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '-_'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` |`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` tr`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '='`})]}),`\n`]})})}),_jsx(_components.p,{children:`This produces a URL-safe token in the same format Bifrost mints internally.`})]}),_jsxs(Step,{title:`Add it to your SCIM config`,children:[_jsxs(_components.p,{children:[`Helm `,_jsx(_components.code,{children:`values.yaml`}),`:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`14`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`14`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`bifrost`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` scim`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` enabled`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` provider`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"entra\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` config`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` tenantId`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"...\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` clientId`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"...\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` clientSecret`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"env.ENTRA_CLIENT_SECRET\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` provisioningToken`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"env.SCIM_PROVISIONING_TOKEN\"`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # or the literal token`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` claimScimAttributes`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# per-claim SCIM interpretation`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` groups`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` attributeType`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"group\"`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # \"user\" (SCIM User attribute) or \"group\" (match SCIM Group)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` attributeValue`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"displayName\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` claimsSyncMode`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"both\"`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # provisioning source: \"both\" (SCIM + login claims) or \"scim\" (SCIM only - ignore login claims)`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`The same keys (`,_jsx(_components.code,{children:`provisioningToken`}),`, `,_jsx(_components.code,{children:`claimScimAttributes`}),`, `,_jsx(_components.code,{children:`claimsSyncMode`}),`) apply directly under `,_jsx(_components.code,{children:`scim_config.config`}),` in a raw `,_jsx(_components.code,{children:`config.json`}),`.`]})]})]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Keep the token in a Kubernetes Secret and reference it with the `,_jsx(_components.code,{children:`env.`}),` prefix - never commit the literal value. Rotating the token in the dashboard invalidates any value seeded here.`]})}),`\n`,_jsxs(_components.p,{children:[`Then use this token as the `,_jsx(_components.strong,{children:`Secret Token`}),` and your deployment’s SCIM endpoint as the `,_jsx(_components.strong,{children:`Tenant URL`}),` in `,_jsx(_components.a,{href:`#step-2-configure-entra-provisioning`,children:`Step 2`}),` below.`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`3`,id:`provisioning-source`,children:`Provisioning source`}),`\n`,_jsxs(_components.p,{children:[`The provider configuration includes a `,_jsx(_components.strong,{children:`Provisioning source`}),` setting that controls whether IdP login claims still provision users, or whether SCIM is the sole source of truth:`]}),`\n`,_jsx(Frame,{caption:`The Provisioning source setting in the provider configuration - choose between SCIM and login claims (default) or SCIM only.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/bifrost/BA383rIWIhMH5bnQ/media/user-provisioning/scim-provisioning-source.png?fit=max\u0026auto=format\u0026n=BA383rIWIhMH5bnQ\u0026q=85\u0026s=10a69800e0241a2e9c642c36051c5155`,alt:`Provisioning source dropdown showing SCIM and login claims (default) and SCIM only - ignore login claims options`,\"data-og-width\":`1692`,width:`1692`,\"data-og-height\":`470`,height:`470`,\"data-path\":`media/user-provisioning/scim-provisioning-source.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/bifrost/BA383rIWIhMH5bnQ/media/user-provisioning/scim-provisioning-source.png?w=280\u0026fit=max\u0026auto=format\u0026n=BA383rIWIhMH5bnQ\u0026q=85\u0026s=5f27ff0c082e3ef82efd8023caebab1d 280w, https://mintcdn.com/bifrost/BA383rIWIhMH5bnQ/media/user-provisioning/scim-provisioning-source.png?w=560\u0026fit=max\u0026auto=format\u0026n=BA383rIWIhMH5bnQ\u0026q=85\u0026s=94a2ab36ba31413454bb0452f0e391f6 560w, https://mintcdn.com/bifrost/BA383rIWIhMH5bnQ/media/user-provisioning/scim-provisioning-source.png?w=840\u0026fit=max\u0026auto=format\u0026n=BA383rIWIhMH5bnQ\u0026q=85\u0026s=65bc70fe3cd9423fb236065b464f3401 840w, https://mintcdn.com/bifrost/BA383rIWIhMH5bnQ/media/user-provisioning/scim-provisioning-source.png?w=1100\u0026fit=max\u0026auto=format\u0026n=BA383rIWIhMH5bnQ\u0026q=85\u0026s=ea078c261cca87de98a5e15511e707b7 1100w, https://mintcdn.com/bifrost/BA383rIWIhMH5bnQ/media/user-provisioning/scim-provisioning-source.png?w=1650\u0026fit=max\u0026auto=format\u0026n=BA383rIWIhMH5bnQ\u0026q=85\u0026s=2e9b8c841342b3d758e0f535b6a17c3e 1650w, https://mintcdn.com/bifrost/BA383rIWIhMH5bnQ/media/user-provisioning/scim-provisioning-source.png?w=2500\u0026fit=max\u0026auto=format\u0026n=BA383rIWIhMH5bnQ\u0026q=85\u0026s=f5cb5ae2fafddb47635303409a7dc695 2500w`})}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Option`}),_jsx(_components.th,{children:`Config value`}),_jsx(_components.th,{children:`Behavior`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`SCIM and login claims`}),` (default)`]}),_jsx(_components.td,{children:_jsx(_components.code,{children:`both`})}),_jsx(_components.td,{children:`Both SCIM and IdP login / token-refresh claims create and update users, roles, teams, and business units.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`SCIM only - ignore login claims`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`scim`})}),_jsx(_components.td,{children:`SCIM is the sole source of truth. OIDC claims will be ignored and will never create or update users from claims - new users must be pushed by SCIM. At login, a user is admitted only if what SCIM last pushed for them resolves to a role, even if they already hold one; anyone SCIM hasn’t pushed yet is denied.`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`Choose `,_jsx(_components.strong,{children:`SCIM only`}),` when provisioning must be fully controlled by your IdP’s SCIM app and login-time claim changes should never alter membership. Leave it on the default `,_jsx(_components.strong,{children:`SCIM and login claims`}),` if users are also provisioned just-in-time on first login.`]}),`\n`,_jsxs(_components.p,{children:[`This maps to the `,_jsx(_components.code,{children:`claimsSyncMode`}),` config key (`,_jsx(_components.code,{children:`both`}),` or `,_jsx(_components.code,{children:`scim`}),`) and is inert when SCIM Provisioning is disabled - claims always sync then.`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`step-2-configure-entra-provisioning`,children:`Step 2: Configure Entra provisioning`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Open the Provisioning tab`,children:[_jsxs(_components.p,{children:[`In the `,_jsx(_components.a,{href:`https://portal.azure.com`,children:`Azure Portal`}),`, go to `,_jsx(_components.strong,{children:`Microsoft Entra ID → Enterprise applications → Bifrost Enterprise`}),`.`]}),_jsxs(_components.p,{children:[`Open `,_jsx(_components.strong,{children:`Provisioning`}),`. On the `,_jsx(_components.strong,{children:`Get started`}),` tab, click `,_jsx(_components.strong,{children:`Connect your application`}),` under `,_jsx(_components.strong,{children:`Create configuration`}),`.`]}),_jsx(Note,{children:_jsxs(_components.p,{children:[`These steps follow Entra’s new provisioning experience. If your tenant still shows the legacy layout, select `,_jsx(_components.strong,{children:`Get started`}),`, set `,_jsx(_components.strong,{children:`Provisioning Mode`}),` to `,_jsx(_components.strong,{children:`Automatic`}),`, and then use the same settings on that one Provisioning page: `,_jsx(_components.strong,{children:`Admin Credentials`}),` for the Tenant URL and Secret Token, `,_jsx(_components.strong,{children:`Mappings`}),` for attribute mappings, and `,_jsx(_components.strong,{children:`Settings`}),` for the scope.`]})}),_jsx(Frame,{caption:`Provisioning Get started tab - Connect your application opens the SCIM connection settings.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-provisioning-get-started.png?fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=6597faf695a11da295516d46cab098cb`,alt:`Microsoft Entra provisioning Get started tab with the Create configuration card highlighted`,\"data-og-width\":`1568`,width:`1568`,\"data-og-height\":`740`,height:`740`,\"data-path\":`media/user-provisioning/entra/entra-provisioning-get-started.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-provisioning-get-started.png?w=280\u0026fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=c4bfee2cc972d134b896da13719f7ca1 280w, https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-provisioning-get-started.png?w=560\u0026fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=54cb67a4a2b70d193dafdaf0b49a4c67 560w, https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-provisioning-get-started.png?w=840\u0026fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=c2a262740afaed3bbeed74691bcee1c7 840w, https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-provisioning-get-started.png?w=1100\u0026fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=86d7d6a18017378cc6359c55b7aaf666 1100w, https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-provisioning-get-started.png?w=1650\u0026fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=7065c03368213c5210391bf2b61778c5 1650w, https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-provisioning-get-started.png?w=2500\u0026fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=4f83b327e4fd48b7339c901e5aa37c96 2500w`})})]}),_jsxs(Step,{title:`Set the provisioning mode and credentials`,children:[_jsxs(_components.p,{children:[`On the `,_jsx(_components.strong,{children:`Connectivity`}),` page, keep `,_jsx(_components.strong,{children:`Bearer authentication`}),` as the authentication method and enter:`]}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`Value`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Tenant URL`})}),_jsxs(_components.td,{children:[`The SCIM Endpoint URL from `,_jsx(_components.a,{href:`#step-1-enable-scim-in-bifrost`,children:`Step 1`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Secret Token`})}),_jsxs(_components.td,{children:[`The Provisioning Token from `,_jsx(_components.a,{href:`#step-1-enable-scim-in-bifrost`,children:`Step 1`})]})]})]})]}),_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Test connection`}),` to verify, then `,_jsx(_components.strong,{children:`Save`}),`. Entra only enables `,_jsx(_components.strong,{children:`Save`}),` after a successful test.`]}),_jsx(Frame,{caption:`Connectivity - enter the SCIM Endpoint URL as Tenant URL and the Provisioning Token as Secret token, then test the connection.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-scim-admin-credentials.png?fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=0c081537343dd7214154b8eb5cb03efe`,alt:`Entra Connectivity page with Tenant URL and Secret token filled in and the Test connection button highlighted`,\"data-og-width\":`1568`,width:`1568`,\"data-og-height\":`740`,height:`740`,\"data-path\":`media/user-provisioning/entra/entra-scim-admin-credentials.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-scim-admin-credentials.png?w=280\u0026fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=1add6111df2876920e025536c76ffa91 280w, https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-scim-admin-credentials.png?w=560\u0026fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=66c39513937f6f4f56f50634a2ed54b3 560w, https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-scim-admin-credentials.png?w=840\u0026fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=0902617f5523b1c68e12dc7ee9d1eef2 840w, https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-scim-admin-credentials.png?w=1100\u0026fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=271c6753615dc461084133ca4f678e2f 1100w, https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-scim-admin-credentials.png?w=1650\u0026fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=c1fa52cf3279cd6ba9eafe9aedc8a684 1650w, https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-scim-admin-credentials.png?w=2500\u0026fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=858bdcd033dd600af1d7a0d044b5e6a9 2500w`})})]}),_jsxs(Step,{title:`Configure attribute mappings (optional)`,children:[_jsxs(_components.p,{children:[`Open `,_jsx(_components.strong,{children:`Attribute mapping`}),` to review or adjust how Entra user and group attributes are mapped to SCIM fields that Bifrost receives.`]}),_jsx(_components.p,{children:`The default mappings cover standard fields (name, email, active status, groups). Skip this step unless you need to sync custom attributes.`}),_jsxs(Accordion,{title:`Syncing custom profile attributes (e.g. employeeId, department, costCenter)`,id:`syncing-custom-profile-attributes-e-g-employeeid-department-costcenter`,children:[_jsx(_components.p,{children:`To include a custom attribute in the SCIM payload Entra sends to Bifrost:`}),_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Open `,_jsx(_components.strong,{children:`Attribute mapping`}),` and stay on the `,_jsx(_components.strong,{children:`Users`}),` tab`]}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`Add attribute mapping`})]}),`\n`,_jsxs(_components.li,{children:[`Set the `,_jsx(_components.strong,{children:`Source attribute`}),` to the Entra user property (e.g. `,_jsx(_components.code,{children:`employeeId`}),`, `,_jsx(_components.code,{children:`department`}),`)`]}),`\n`,_jsxs(_components.li,{children:[`Set the `,_jsx(_components.strong,{children:`Target attribute`}),` to the corresponding SCIM attribute name (e.g. `,_jsx(_components.code,{children:`urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:employeeNumber`}),`)`]}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`Add`}),`, then `,_jsx(_components.strong,{children:`Save`})]}),`\n`]}),_jsx(Frame,{caption:`Attribute mapping - map an Entra user attribute to the SCIM attribute Bifrost will receive.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-scim-attribute-mapping.png?fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=e027de3a78396433b427d3f288a6b049`,alt:`Entra attribute mapping panel mapping employeeId to the SCIM enterprise employeeNumber attribute`,\"data-og-width\":`1568`,width:`1568`,\"data-og-height\":`764`,height:`764`,\"data-path\":`media/user-provisioning/entra/entra-scim-attribute-mapping.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-scim-attribute-mapping.png?w=280\u0026fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=89e09d9d13f8939662e2b3ffa0846803 280w, https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-scim-attribute-mapping.png?w=560\u0026fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=82912ed0d27fcfff038582634657e9ef 560w, https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-scim-attribute-mapping.png?w=840\u0026fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=e63634467ceaf1d2772f886f8720b008 840w, https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-scim-attribute-mapping.png?w=1100\u0026fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=2b67c3cb7ad5e0b4b96fa1a34a8e5bd7 1100w, https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-scim-attribute-mapping.png?w=1650\u0026fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=d3202acbeaf4604c3f6f70547af653c8 1650w, https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-scim-attribute-mapping.png?w=2500\u0026fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=87c26f1cf8dd0ca801a19f5463cd043a 2500w`})}),_jsxs(_components.p,{children:[`Back in Bifrost, go to `,_jsx(_components.strong,{children:`Attribute Mapping`}),` in the provider setup and add a `,_jsx(_components.strong,{children:`SCIM Attribute`}),` entry using the same attribute name. The name must match exactly - including case.`]})]})]}),_jsxs(Step,{title:`Enable provisioning`,children:[_jsxs(_components.p,{children:[`Open `,_jsx(_components.strong,{children:`Manage → Provisioning`}),`, confirm `,_jsx(_components.strong,{children:`Provisioning Mode`}),` is `,_jsx(_components.strong,{children:`Automatic`}),`, set `,_jsx(_components.strong,{children:`Provisioning Status`}),` to `,_jsx(_components.strong,{children:`On`}),` and click `,_jsx(_components.strong,{children:`Save`}),`.`]}),_jsx(Frame,{caption:`Set Provisioning Status to On to start the SCIM sync cycle.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-scim-provisioning-on.png?fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=63b1494c984d80143607316fa9ed45db`,alt:`Entra Provisioning settings page with Provisioning Status toggle set to On`,\"data-og-width\":`1559`,width:`1559`,\"data-og-height\":`784`,height:`784`,\"data-path\":`media/user-provisioning/entra/entra-scim-provisioning-on.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-scim-provisioning-on.png?w=280\u0026fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=8af0fcd3d4af57bdbe93af8a4820279e 280w, https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-scim-provisioning-on.png?w=560\u0026fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=4d9c90bf403e2d23b22b9d1384558123 560w, https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-scim-provisioning-on.png?w=840\u0026fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=fad1dcc59bf54c63e47be3d86afe90f9 840w, https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-scim-provisioning-on.png?w=1100\u0026fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=645d5f31e4449af5c478e67468d10377 1100w, https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-scim-provisioning-on.png?w=1650\u0026fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=5a654a5bf9875e7e173e3aa84f66f5b4 1650w, https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-scim-provisioning-on.png?w=2500\u0026fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=db5a7b56a2739300212ce92ab695fbfd 2500w`})})]})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`step-3-assign-users-and-groups`,children:`Step 3: Assign users and groups`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Assign users or groups to the application`,children:[_jsxs(_components.p,{children:[`Go to `,_jsx(_components.strong,{children:`Enterprise applications → Bifrost Enterprise → Users and groups`}),`.`]}),_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Add user/group`}),` and select the users or groups you want to provision into Bifrost.`]}),_jsx(Frame,{caption:`Users and groups - only users and groups assigned here are included in the SCIM provisioning scope.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-scim-user-assignments.png?fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=e836244e36aba420a3d55bc0f7ec8fcc`,alt:`Entra Enterprise Application Users and groups page with Add user/group button highlighted`,\"data-og-width\":`1512`,width:`1512`,\"data-og-height\":`808`,height:`808`,\"data-path\":`media/user-provisioning/entra/entra-scim-user-assignments.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-scim-user-assignments.png?w=280\u0026fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=9fac982507b002d623a7cf31a8ce7ca5 280w, https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-scim-user-assignments.png?w=560\u0026fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=2d4889f5114590eac8743ac52bac06f1 560w, https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-scim-user-assignments.png?w=840\u0026fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=82fb1ba75a3d4b2418fd635473011483 840w, https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-scim-user-assignments.png?w=1100\u0026fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=4f54933d23a06de63b3becc2f25578fb 1100w, https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-scim-user-assignments.png?w=1650\u0026fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=0d78c4e37756b667dcf9e58895782e8d 1650w, https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-scim-user-assignments.png?w=2500\u0026fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=1fb26440d53a6a96e3492cb3f8567957 2500w`})}),_jsx(Note,{children:_jsxs(_components.p,{children:[`Only users and groups explicitly assigned to the application are provisioned when the provisioning scope is set to `,_jsx(_components.strong,{children:`Sync only assigned users and groups`}),` (the default). Set scope to `,_jsx(_components.strong,{children:`Sync all users and groups`}),` only if you want to provision your entire directory.`]})}),_jsx(_components.p,{children:`Assigned users are pushed to Bifrost during the next provisioning cycle (typically within 40 minutes). When a user is unassigned or disabled in Entra, Bifrost deactivates them in real time.`})]}),_jsxs(Step,{title:`Trigger an on-demand sync (optional)`,children:[_jsxs(_components.p,{children:[`To provision a specific user immediately without waiting for the next cycle, go to the `,_jsx(_components.strong,{children:`Provisioning`}),` tab and click `,_jsx(_components.strong,{children:`Provision on demand`}),`.`]}),_jsxs(_components.p,{children:[`Search for the user, select them, and click `,_jsx(_components.strong,{children:`Provision`}),`.`]}),_jsx(Frame,{caption:`Provision on demand - push a specific user to Bifrost immediately for testing or urgent onboarding.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-scim-provision-on-demand.png?fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=8f0af8e2d99a94e1d37cf7ab9cc1d7d5`,alt:`Entra Provision on demand screen with a user selected and Provision button`,\"data-og-width\":`1272`,width:`1272`,\"data-og-height\":`845`,height:`845`,\"data-path\":`media/user-provisioning/entra/entra-scim-provision-on-demand.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-scim-provision-on-demand.png?w=280\u0026fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=b766fb980be0628cc1c588ec1a09753e 280w, https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-scim-provision-on-demand.png?w=560\u0026fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=f676d88de2033c9e883bc05de7a5df2d 560w, https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-scim-provision-on-demand.png?w=840\u0026fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=689b8584e555485b223e939992d2a509 840w, https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-scim-provision-on-demand.png?w=1100\u0026fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=770692f634dfd29ba9fb6867ba5d01da 1100w, https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-scim-provision-on-demand.png?w=1650\u0026fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=79fea8f057bf9ca3bb1be7209418260d 1650w, https://mintcdn.com/bifrost/VA3lO_brB-TLaKgO/media/user-provisioning/entra/entra-scim-provision-on-demand.png?w=2500\u0026fit=max\u0026auto=format\u0026n=VA3lO_brB-TLaKgO\u0026q=85\u0026s=bd5cab18c95ad491672251f9335bc476 2500w`})})]})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`step-4-verify-in-bifrost`,children:`Step 4: Verify in Bifrost`}),`\n`,_jsx(_components.p,{children:`Once provisioning is active, confirm everything is syncing correctly.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Go to `,_jsx(_components.strong,{children:`Governance`}),` → `,_jsx(_components.strong,{children:`Users`}),` to see provisioned users and their assigned roles`]}),`\n`,_jsxs(_components.li,{children:[`Go to `,_jsx(_components.strong,{children:`Governance`}),` → `,_jsx(_components.strong,{children:`Teams`}),` to see teams populated from synced groups`]}),`\n`,_jsxs(_components.li,{children:[`Go to `,_jsx(_components.strong,{children:`Governance`}),` → `,_jsx(_components.strong,{children:`Business Units`}),` to see business units resolved from group or attribute mappings`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Changes in Entra - new assignments, group membership updates, deactivations - will reflect in Bifrost within the provisioning cycle (typically 40 minutes for incremental cycles, up to 4 hours for the initial cycle).`}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`how-sync-works`,children:`How sync works`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Initial cycle`}),` - on first enable, Entra performs a full sync of all in-scope users and groups. This can take up to 4 hours for large directories.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Incremental cycles`}),` - after the initial sync, Entra pushes only changes (new users, deactivations, attribute updates, group membership changes) every ~40 minutes.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`No background reconciliation while SCIM Provisioning is on`}),` - Bifrost’s scheduled directory sync from the Microsoft Graph API is turned off while SCIM Provisioning is enabled, so make sure Entra’s provisioning job pushes every change, including deactivations.`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`troubleshooting`,children:`Troubleshooting`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Test Connection fails`}),` - verify the Tenant URL has no trailing slash and the Secret Token matches exactly what Bifrost generated. Rotate the token in Bifrost and update Entra if needed.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Users are provisioned but have no role`}),` - SCIM provisions the user record; role assignment comes from attribute mappings in the OIDC provider. Confirm your Attribute-to-Role mappings are configured and the relevant claims are present in the JWT at login time.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Custom attribute is not arriving in Bifrost`}),` - confirm the SCIM attribute name in Entra’s mapping and Bifrost’s SCIM Attribute setting match exactly (case-sensitive). Verify the mapping was saved under `,_jsx(_components.strong,{children:`Provision Microsoft Entra ID Users`}),`.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Group membership is not syncing`}),` - groups must be assigned to the Enterprise Application and provisioning scope must include groups. Check that `,_jsx(_components.strong,{children:`Provision Microsoft Entra ID Groups`}),` is enabled under `,_jsx(_components.strong,{children:`Mappings`}),`.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Users are stuck in “Pending”`}),` - this is normal during the initial cycle for large directories. Check the `,_jsx(_components.strong,{children:`Provisioning logs`}),` under `,_jsx(_components.strong,{children:`Monitoring`}),` in the Provisioning tab for per-user status and any errors.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Setup SCIM","description":"Enable real-time user and group provisioning from Microsoft Entra ID to Bifrost Enterprise using SCIM 2.0.","href":"/enterprise/setting-up-entra/scim"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Step 1: Enable SCIM in Bifrost","slug":"step-1-enable-scim-in-bifrost","depth":2,"children":[{"title":"Alternative: seed the token declaratively (Helm / config.json)","slug":"alternative-seed-the-token-declaratively-helm-/-config-json","depth":3,"children":[]},{"title":"Provisioning source","slug":"provisioning-source","depth":3,"children":[]}]},{"title":"Step 2: Configure Entra provisioning","slug":"step-2-configure-entra-provisioning","depth":2,"children":[]},{"title":"Step 3: Assign users and groups","slug":"step-3-assign-users-and-groups","depth":2,"children":[]},{"title":"Step 4: Verify in Bifrost","slug":"step-4-verify-in-bifrost","depth":2,"children":[]},{"title":"How sync works","slug":"how-sync-works","depth":2,"children":[]},{"title":"Troubleshooting","slug":"troubleshooting","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/bifrost/62ad9b1aea461302/googleTag.js","/_mintlify/custom/bifrost/c4c9272fd1c525e5/jsonLd.js","/_mintlify/custom/bifrost/5a8b9314a2dac891/supportWidget.js","/_mintlify/custom/bifrost/088e287583b748b0/baseUrlSwitcher.js","/_mintlify/custom/bifrost/aa532cead633d329/tally-embed.js","/_mintlify/custom/bifrost/fe58824b4f1a0ad5/footerCompliance.js"],"subdomain":"bifrost","siteName":"Bifrost","title":"Setup SCIM - Bifrost","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-02T04:54:55.991Z","originalFileLocation":"enterprise/setting-up-entra/scim.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Enable real-time user and group provisioning from Microsoft Entra ID to Bifrost Enterprise using SCIM 2.0.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Bifrost\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/bifrost/kXIL-Qs6IzN4ZLK4/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/bifrost/kXIL-Qs6IzN4ZLK4/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/bifrost/kXIL-Qs6IzN4ZLK4/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/bifrost/kXIL-Qs6IzN4ZLK4/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/bifrost/kXIL-Qs6IzN4ZLK4/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/bifrost/kXIL-Qs6IzN4ZLK4/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/bifrost/kXIL-Qs6IzN4ZLK4/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/bifrost/kXIL-Qs6IzN4ZLK4/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/bifrost/kXIL-Qs6IzN4ZLK4/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Setup SCIM - Bifrost\">\u003cmeta data-mint-head property=\"og:description\" content=\"Enable real-time user and group provisioning from Microsoft Entra ID to Bifrost Enterprise using SCIM 2.0.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Bifrost\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.getbifrost.ai/enterprise/setting-up-entra/scim\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://bifrost.mintlify.site/_mintlify/api/og/v2?division=Microsoft+Entra\u0026amp;title=Setup+SCIM\u0026amp;description=Enable+real-time+user+and+group+provisioning+from+Microsoft+Entra+ID+to+Bifrost+Enterprise+using+SCIM+2.0.\u0026amp;theme=b382615b1ec5d0a74479e6c7\u0026amp;signature=590fe691e3f91617b37fde510073ce809d8b978209a79e832965fac8eedc235b\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Setup SCIM - Bifrost\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Enable real-time user and group provisioning from Microsoft Entra ID to Bifrost Enterprise using SCIM 2.0.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://bifrost.mintlify.site/_mintlify/api/og/v2?division=Microsoft+Entra\u0026amp;title=Setup+SCIM\u0026amp;description=Enable+real-time+user+and+group+provisioning+from+Microsoft+Entra+ID+to+Bifrost+Enterprise+using+SCIM+2.0.\u0026amp;theme=b382615b1ec5d0a74479e6c7\u0026amp;signature=590fe691e3f91617b37fde510073ce809d8b978209a79e832965fac8eedc235b\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/bifrost/kXIL-Qs6IzN4ZLK4/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Bifrost\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0C3B43\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.getbifrost.ai/enterprise/setting-up-entra/scim\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/enterprise/setting-up-entra/scim.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.getbifrost.ai/#organization\",\"name\":\"Bifrost\",\"url\":\"https://docs.getbifrost.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/bifrost/qFMmk8bNSnvgFYDI/media/bifrost-logo.png?fit=max\u0026auto=format\u0026n=qFMmk8bNSnvgFYDI\u0026q=85\u0026s=6af701a560aee4103444fa017b226cf0\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.getbifrost.ai#website\",\"name\":\"Bifrost\",\"url\":\"https://docs.getbifrost.ai\",\"publisher\":{\"@id\":\"https://docs.getbifrost.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.getbifrost.ai/enterprise/setting-up-entra/scim#webpage\",\"url\":\"https://docs.getbifrost.ai/enterprise/setting-up-entra/scim\",\"name\":\"Setup SCIM\",\"description\":\"Enable real-time user and group provisioning from Microsoft Entra ID to Bifrost Enterprise using SCIM 2.0.\",\"dateModified\":\"2026-11-02T04:54:55.991Z\",\"isPartOf\":{\"@id\":\"https://docs.getbifrost.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.getbifrost.ai/enterprise/setting-up-entra/scim#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.getbifrost.ai/enterprise/setting-up-entra/scim#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Identity Providers (SSO)\",\"item\":\"https://docs.getbifrost.ai/enterprise/setting-up-okta/oidc\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Microsoft Entra\",\"item\":\"https://docs.getbifrost.ai/enterprise/setting-up-entra/oidc\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Setup SCIM\",\"item\":\"https://docs.getbifrost.ai/enterprise/setting-up-entra/scim\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.getbifrost.ai/enterprise/setting-up-entra/scim#article\",\"headline\":\"Setup SCIM\",\"name\":\"Setup SCIM\",\"description\":\"Enable real-time user and group provisioning from Microsoft Entra ID to Bifrost Enterprise using SCIM 2.0.\",\"url\":\"https://docs.getbifrost.ai/enterprise/setting-up-entra/scim\",\"mainEntityOfPage\":{\"@id\":\"https://docs.getbifrost.ai/enterprise/setting-up-entra/scim#webpage\"},\"dateModified\":\"2026-11-02T04:54:55.991Z\",\"publisher\":{\"@id\":\"https://docs.getbifrost.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.getbifrost.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Bifrost\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Bifrost","nav":{"global":{"anchors":[{"anchor":"Discord","icon":"discord","href":"https://discord.gg/exN5KAydbU"},{"anchor":"GitHub","icon":"github","href":"https://github.com/maximhq/bifrost"},{"anchor":"Try Enterprise","icon":"building","href":"https://www.getmaxim.ai/bifrost/enterprise"}]},"tabs":[{"tab":"OSS","icon":"book-open-cover","pages":[{"title":"OSS","href":"/overview"}]},{"tab":"Enterprise","icon":"building","pages":[{"title":"Enterprise","href":"/enterprise/overview"}]},{"tab":"Edge","icon":"globe","pages":[{"title":"Edge","href":"/edge/overview"}]},{"tab":"Integrations","icon":"plug","groups":[{"group":"Runbooks","icon":"book-open","pages":[{"title":"Set up Claude Code with Amazon Bedrock","icon":"star-of-life","href":"/runbooks/claude-code-bedrock"},{"title":"Set up Codex CLI with Amazon Bedrock","icon":"openai","href":"/runbooks/codex-bedrock"}]},{"group":"CLI Agents \u0026 Editors","icon":"command","pages":[{"title":"Overview","icon":"Book","href":"/cli-agents/overview"},{"title":"Cursor","icon":"arrow-pointer","href":"/cli-agents/cursor"},{"title":"LibreChat","icon":"message","href":"/cli-agents/librechat"},{"title":"Claude Code","icon":"star-of-life","href":"/cli-agents/claude-code"},{"title":"Claude Desktop","icon":"desktop","href":"/cli-agents/claude-desktop"},{"title":"Claude for Office","icon":"file-word","href":"/cli-agents/claude-for-office"},{"title":"GitHub Copilot","icon":"github","href":"/cli-agents/github-copilot"},{"title":"Codex CLI","icon":"openai","href":"/cli-agents/codex-cli"},{"title":"Gemini CLI","icon":"diamond","href":"/cli-agents/gemini-cli"},{"title":"Qwen Code","icon":"q","href":"/cli-agents/qwen-code"},{"title":"OpenCode","icon":"codepen","href":"/cli-agents/opencode"},{"title":"Zed Editor","icon":"z","href":"/cli-agents/zed-editor"},{"title":"Roo Code","icon":"code","href":"/cli-agents/roo-code"},{"title":"Open WebUI","icon":"globe","href":"/cli-agents/open-webui"}]},{"group":"SDKs \u0026 Frameworks","icon":"code","pages":[{"group":"OpenAI SDK","icon":"openai","pages":[{"title":"Overview","icon":"book","href":"/integrations/openai-sdk/overview"},{"title":"Files and Batch API","tag":"Beta","icon":"folder-open","href":"/integrations/openai-sdk/files-and-batch"}]},{"group":"Anthropic SDK","icon":"asterisk","pages":[{"title":"Overview","icon":"book","href":"/integrations/anthropic-sdk/overview"},{"title":"Files and Batch API","tag":"Beta","icon":"folder-open","href":"/integrations/anthropic-sdk/files-and-batch"}]},{"group":"Bedrock SDK","icon":"aws","pages":[{"title":"Overview","icon":"book","href":"/integrations/bedrock-sdk/overview"},{"title":"Files and Batch API","tag":"Beta","icon":"folder-open","href":"/integrations/bedrock-sdk/files-and-batch"}]},{"group":"GenAI SDK","icon":"diamond","pages":[{"title":"Overview","icon":"book","href":"/integrations/genai-sdk/overview"},{"title":"Files and Batch API","icon":"folder-open","href":"/integrations/genai-sdk/files-and-batch"}]},{"group":"Cohere SDK","icon":"c","pages":[{"title":"Overview","icon":"book","href":"/integrations/cohere-sdk/overview"}]},{"title":"LiteLLM SDK","icon":"train","href":"/integrations/litellm-sdk"},{"title":"Langchain SDK","icon":"crow","href":"/integrations/langchain-sdk"},{"title":"Pydantic AI SDK","icon":"triangle","href":"/integrations/pydanticai-sdk"},{"title":"TypeSafe SDK","icon":"scale-balanced","href":"/integrations/typesafe-sdk"},{"title":"Passthrough","icon":"route","href":"/integrations/passthrough"}]},{"group":"Identity Providers (SSO)","icon":"id-card","pages":[{"group":"Okta","icon":"/media/okta-icon.svg","pages":[{"title":"SSO using OIDC","href":"/enterprise/setting-up-okta/oidc"},{"title":"Setup SCIM","href":"/enterprise/setting-up-okta/scim"}]},{"group":"Microsoft Entra","icon":"microsoft","pages":[{"title":"SSO using OIDC","description":"Configure Microsoft Entra ID (Azure AD) as your identity provider for Bifrost Enterprise using OpenID Connect.","href":"/enterprise/setting-up-entra/oidc"},{"title":"Setup SCIM","href":"/enterprise/setting-up-entra/scim"}]},{"group":"Zitadel","icon":"/media/zitadel-icon.svg","pages":[{"title":"SSO using OIDC","description":"Configure Zitadel (cloud or self-hosted) as your identity provider for Bifrost Enterprise using OpenID Connect.","href":"/enterprise/setting-up-zitadel/oidc"}]},{"group":"Keycloak","icon":"/media/keycloak-icon.svg","pages":[{"title":"SSO using OIDC","href":"/enterprise/setting-up-keycloak/oidc"}]},{"group":"Google Workspace","icon":"google","pages":[{"title":"SSO using OIDC","href":"/enterprise/setting-up-google-workspace/oidc"},{"title":"Setup SCIM","href":"/enterprise/setting-up-google-workspace/scim"}]},{"group":"Auth0","icon":"/media/auth0-icon.svg","pages":[{"title":"SSO using OIDC","href":"/enterprise/setting-up-auth0/oidc"}]},{"group":"Generic OIDC","icon":"fingerprint","pages":[{"title":"SSO using OIDC","href":"/enterprise/setting-up-generic-oidc/oidc"},{"title":"Setup SCIM","href":"/enterprise/setting-up-generic-oidc/scim"}]},{"group":"Auth Proxy","icon":"shield-halved","pages":[{"title":"Cloudflare ZTNA (Access)","href":"/enterprise/auth-proxy/cloudflare-ztna"},{"title":"AWS ALB (Application Load Balancer)","href":"/enterprise/auth-proxy/aws-alb"},{"title":"Generic OIDC Proxy","href":"/enterprise/auth-proxy/generic-proxy"}]}]},{"group":"Content Safety (Guardrails)","icon":"road-barrier","pages":[{"title":"Secrets Detection","icon":"key","href":"/enterprise/guardrails/secrets-detection"},{"title":"Prompt Guardrails","icon":"shield-check","href":"/enterprise/guardrails/prompt-guardrails"},{"title":"Custom Regex","icon":"code","href":"/enterprise/guardrails/custom-regex"},{"title":"Microsoft Presidio","icon":"microsoft","href":"/integrations/guardrails/presidio"},{"title":"Azure AI Language PII","icon":"microsoft","href":"/integrations/guardrails/azure-language-pii"},{"title":"AWS Bedrock Guardrails","icon":"aws","href":"/integrations/guardrails/aws-bedrock"},{"title":"Azure Content Safety","icon":"microsoft","href":"/integrations/guardrails/azure-content-safety"},{"title":"Google Model Armor","icon":"https://mintlify.s3.us-west-1.amazonaws.com/bifrost/media/google-model-armor-nav.svg","href":"/integrations/guardrails/google-model-armor"},{"title":"CrowdStrike AIDR","icon":"https://mintlify.s3.us-west-1.amazonaws.com/bifrost/media/crowdstrike-nav.svg","href":"/integrations/guardrails/crowdstrike-aidr"},{"title":"Gray Swan Cygnal","icon":"https://mintlify.s3.us-west-1.amazonaws.com/bifrost/media/grayswan-logo-nav.svg","href":"/integrations/guardrails/grayswan"},{"title":"Patronus AI","icon":"https://mintlify.s3.us-west-1.amazonaws.com/bifrost/media/patronus-logo-nav.svg","href":"/integrations/guardrails/patronus-ai"},{"title":"Check Point's AI Agent Security","icon":"https://mintlify.s3.us-west-1.amazonaws.com/bifrost/media/lakera-logo-nav-v5.svg","href":"/integrations/guardrails/checkpoint"},{"title":"Repello Argus","icon":"https://mintlify.s3.us-west-1.amazonaws.com/bifrost/media/repello-argus-logo-nav.svg","href":"/integrations/guardrails/repello-argus"},{"title":"Singulr AI","icon":"https://mintlify.s3.us-west-1.amazonaws.com/bifrost/media/singulr-logo-nav.svg","href":"/integrations/guardrails/singulr-ai"},{"title":"Noma Security","icon":"https://mintlify.s3.us-west-1.amazonaws.com/bifrost/media/noma-logo-nav-v2.svg","href":"/integrations/guardrails/noma-security"},{"title":"A10 Guardrails","icon":"https://mintlify.s3.us-west-1.amazonaws.com/bifrost/media/a10-logo-nav.svg","href":"/integrations/guardrails/a10"}]},{"group":"Observability","icon":"binoculars","pages":[{"title":"Built-in Observability","icon":"cube","href":"/features/observability/default"},{"title":"Maxim AI","icon":"infinity","href":"/features/observability/maxim"},{"title":"Datadog","icon":"dog","href":"/features/observability/datadog"},{"title":"OpenTelemetry (OTel)","icon":"bolt","href":"/features/observability/otel"},{"title":"Prometheus","icon":"chart-line","href":"/features/observability/prometheus"},{"title":"Kafka","icon":"database","href":"/features/observability/kafka"},{"title":"BigQuery","icon":"table","href":"/features/observability/bigquery"},{"title":"Pub/Sub","icon":"database","href":"/features/observability/pubsub"},{"title":"Splunk","icon":"database","href":"/features/observability/splunk"}]},{"group":"Vector Databases","icon":"database","pages":[{"title":"Weaviate","icon":"database","href":"/integrations/vector-databases/weaviate"},{"title":"Redis / Valkey","icon":"database","href":"/integrations/vector-databases/redis"},{"title":"Qdrant","icon":"database","href":"/integrations/vector-databases/qdrant"},{"title":"Pinecone","icon":"database","href":"/integrations/vector-databases/pinecone"}]}]},{"tab":"Deployment Guides","icon":"server","pages":[{"title":"Deployment Guides","href":"/deployment-guides/overview"}]},{"tab":"API","icon":"code","pages":[{"title":"API","href":"/api/procuring-api-keys"}]},{"tab":"Contributing","icon":"code-pull-request","pages":[{"title":"Contributing","href":"/contributing/setting-up-repo"}]},{"tab":"Benchmarks","icon":"chart-line","pages":[{"title":"Benchmarks","href":"/benchmarking/getting-started"}]},{"tab":"Changelogs","icon":"bolt","menu":[{"item":"Open Source","icon":"rocket","pages":[{"title":"Open Source","href":"/changelogs/v2.5.1"}]},{"item":"Enterprise","icon":"building","pages":[{"title":"Enterprise","href":"/changelogs/ent-v2.5.1"}]},{"item":"Edge","icon":"grip","pages":[{"title":"Edge","href":"/changelogs/edge-v1.0.1"}]},{"item":"Bifrost CLI","icon":"laptop-code","pages":[{"title":"Bifrost CLI","href":"/changelogs/cli-v1.0.0"}]},{"item":"Helm","icon":"box","pages":[{"title":"Helm","href":"/changelogs/helm-v2.1.48"}]}],"pages":[{"title":"Changelogs","href":"/changelogs/v2.5.1"}]}]},"basePath":"","title":"Setup SCIM - Bifrost","buildId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","deploymentId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-5Xwp92K7.js","DynamicMarkdown-BoyYAA8K.js","zoom-image-lightbox-DkE6VzSN.js","lightbox-handle-r17bVUz3.js"]}