SSO and SCIM
Your identity provider decides who gets in
Your people sign in to the organization through the provider you already run, over OIDC or SAML 2.0. Require it, and every token, SSH key and agent needs its person's say-so too. With SCIM, the provider adds people, sets their roles and removes them when they leave.
Your provider
OIDC or SAML 2.0, through Keycloak
Choose OIDC or SAML 2.0, and a preset for Microsoft Entra ID, Google Workspace, Okta, JumpCloud or ADFS, or any other provider. Keycloak brokers the sign-ins, so Branchscope never sees the provider's passwords. An owner tests the connection by signing in through it before it can be turned on, and the client secret is encrypted and never shown again.
Protocol
OIDC
- Microsoft Entra ID
- Google Workspace
- Okta
- Another OIDC provider
SAML 2.0
- Microsoft Entra ID
- Okta
- Google Workspace
- JumpCloud
- ADFS
- Another SAML provider
https://sso.branchscope.example/realms/branchscope/broker/org-acme/endpoint
Requiring SSO
Required for members, with time to switch over
Verify your domains with a DNS record, and sign-ins with an email on them go to your provider; no other organization can claim them. Once you require SSO, members reach the organization's repositories only after signing in through it, for the hours you set, 24 by default. Credentials get a grace period of 14 days to be authorized, which owners can end early or extend once by up to 30 days. Just-in-time membership, off by default, lets people from your domains join as members when they first sign in.
Verified domains
- acme.comVerified
- acme.exampleNot verified
- On: sign-ins with an email on a verified domain go to it
- Require SSO: members reach acme's repositories only after signing in through it
- Just-in-time membership: people who sign in through it with an email on a verified domain join as members
Members' tokens, SSH keys and agents keep working while they're linked to the provider. Outside collaborators and site administrators aren't held to it.
Credentials
Every token and agent authorized by its person
Where SSO is required, each personal token, SSH key, app and agent reaches the organization only once its person has authorized it, signed in through the provider, in the web app. A token can't authorize itself, and neither can an agent. One that's refused is told exactly what its person has to do, and on which page.
- deploy-scriptacme · AuthorizedConfigure SSO
- laptopacme · Not authorized: it can't reach the organization's repositoriesConfigure SSO
$ bscope repo view -R acme/invoicesbscope: acme requires SSO: the agent claude-code isn't authorized for acme: alice signs in with Okta, then Settings → Authorizations → Configure SSO (/settings/authorizations in the web app)
SCIM
People and groups from your provider
SCIM 2.0 lets your provider add people, change them and remove them. Deactivating someone ends their access to the organization at once: membership, sessions and authorizations. Groups you choose make owners; every other provisioned member is a member, and the last owner always stays one. Branchscope implements the users and groups endpoints with equality filters, paging and PATCH; not bulk, sorting or ETags. An organization has at most two live SCIM tokens, for rotating.
SCIM base URL
https://api.branchscope.example/scim/v2/acme
42 people provisioned, 40 active, 37 bound to accounts.
Groups that make owners
- platform-admins (3 members)
- engineering (38 members)
Members of these groups are owners; every other provisioned member is a member. The last owner always stays one.
Two tokens at most: revoke the old one once the provider uses the new one.
On the record
Everything on the organization's audit log
The provider being set, tested or removed, domains verified, sign-ins through it, just-in-time members, credentials authorized and their authorizations ended, the grace period, and each identity and group SCIM provisions, binds, changes or removes. Never a secret, a token or a SAML or SCIM document.
- scimprovisioned dave@acme.comscim.user_provisioned
- davesigned in through Oktasso.signed_in
- scimbound dave@acme.com to the account davescim.user_bound
- aliceverified the domain acme.comsso.domain_verified
- alicerequired SSO, with a grace period for authorizing credentialssso.grace_started
Bring your identity provider
Open your organization's Settings → SSO, connect your provider, test it, and turn it on.