Skip to content

Enterprise SSO & SCIM

Drizby supports enterprise authentication via SAML 2.0 (single sign-on) and SCIM 2.0 (automatic user and group provisioning). This guide walks through setup with Okta and Azure AD/Entra ID — the same patterns apply to OneLogin, JumpCloud, and other SAML/SCIM-compatible identity providers.

  • Drizby deployed with a stable public URL (set via APP_URL environment variable)
  • ENCRYPTION_SECRET set in production (secrets are encrypted at rest)
  • Admin access to both Drizby and your identity provider

SAML SSO lets users authenticate through your organization’s identity provider instead of managing separate Drizby credentials.

You’ll need these values when configuring your IdP. They’re also displayed in the Drizby admin UI under Settings > Authentication > SAML 2.0 SSO.

FieldValue
ACS URL (Assertion Consumer Service)https://your-drizby.example.com/api/auth/saml/callback
SP Entity IDhttps://your-drizby.example.com/api/auth/saml/metadata
SP Metadata URLhttps://your-drizby.example.com/api/auth/saml/metadata
NameID Formaturn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
  1. In the Okta admin console, go to Applications > Create App Integration
  2. Select SAML 2.0 and click Next
  3. Give the app a name (e.g. “Drizby”) and click Next
  4. Fill in the SAML settings:
Okta FieldValue
Single sign-on URLhttps://your-drizby.example.com/api/auth/saml/callback
Audience URI (SP Entity ID)https://your-drizby.example.com/api/auth/saml/metadata
Name ID formatEmailAddress
Application usernameEmail
  1. Under Attribute Statements, add:
NameValue
emailuser.email
nameuser.displayName
  1. (Optional) Under Group Attribute Statements, add:
NameFilter
groupsMatches regex: .* (or filter to specific groups)
  1. Click Next, select “I’m an Okta customer adding an internal app”, and click Finish
  2. On the app’s Sign On tab, copy the Metadata URL (under “SAML Signing Certificates” > Actions > View IdP metadata)
  1. Go to Settings > Authentication in the Drizby admin UI
  2. Select SAML 2.0 SSO in the sidebar and enable it
  3. Paste the Okta Metadata URL into the “IdP Metadata URL” field
  4. Verify the attribute mapping matches what you configured in Okta:
    • Email: email
    • Name: name
    • Groups: groups
  5. Click Save

The login page will now show a “Sign in with SSO” button.

  1. In Azure portal, go to Enterprise Applications > New Application > Create your own
  2. Select “Integrate any other application you don’t find in the gallery (Non-gallery)”
  3. Under Single sign-on, select SAML and configure:
    • Identifier (Entity ID): https://your-drizby.example.com/api/auth/saml/metadata
    • Reply URL (ACS): https://your-drizby.example.com/api/auth/saml/callback
    • Sign on URL: https://your-drizby.example.com/api/auth/saml/login
  4. Under Attributes & Claims, ensure:
    • email maps to user.mail
    • name maps to user.displayname
  5. Download the Federation Metadata XML and paste it into Drizby’s “IdP Metadata XML” field in Settings > Authentication > SAML 2.0 SSO

Drizby extracts user information from the SAML assertion using configurable attribute names. The defaults work with most IdPs:

Drizby FieldDefault AttributeFallback URIs
Emailemailhttp://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
Namenamehttp://schemas.xmlsoap.org/ws/2005/05/identity/claims/name
Groupsgroupshttp://schemas.xmlsoap.org/claims/Group, memberOf

If your IdP uses different attribute names, update the mapping in the SAML settings UI.

When SAML assertions include group information, Drizby automatically:

  • Creates a SAML group type (if it doesn’t exist)
  • Creates groups matching the assertion values
  • Syncs the user’s group membership on each login (adds and removes as needed)

These groups can be used for dashboard and notebook visibility controls.


SCIM allows your IdP to automatically create, update, and deactivate users and groups in Drizby — no manual invites needed.

  1. Go to Settings > Authentication in the Drizby admin UI
  2. Select SCIM Provisioning in the sidebar and enable it
  3. Click Generate Token — give it a name like “Okta SCIM”
  4. Copy the token immediately — it is only shown once
  5. Note the SCIM Endpoint URL displayed (e.g. https://your-drizby.example.com/scim/v2)
  1. In the Okta admin console, open the SAML app you created above
  2. Go to the General tab and click Edit
  3. Under Provisioning, select SCIM and click Save
  4. Go to the new Provisioning tab and click Edit under “SCIM Connection”
  5. Fill in:
Okta FieldValue
SCIM connector base URLhttps://your-drizby.example.com/scim/v2
Unique identifier field for usersuserName
Supported provisioning actionsPush New Users, Push Profile Updates, Push Groups
Authentication ModeHTTP Header
AuthorizationBearer token you generated in Drizby
  1. Click Test Connector Configuration to verify the connection
  2. Click Save
  3. Under Provisioning > To App, enable:
    • Create Users
    • Update User Attributes
    • Deactivate Users
  1. In the Enterprise Application you created for SAML, go to Provisioning
  2. Set provisioning mode to Automatic
  3. Under Admin Credentials, enter:
    • Tenant URL: https://your-drizby.example.com/scim/v2
    • Secret Token: the bearer token you generated in Drizby
  4. Click Test Connection to verify
  5. Configure attribute mappings and enable provisioning

Once enabled, Drizby exposes the full SCIM 2.0 API:

EndpointMethodPurpose
/scim/v2/ServiceProviderConfigGETServer capabilities
/scim/v2/SchemasGETSchema definitions
/scim/v2/ResourceTypesGETSupported resource types
/scim/v2/UsersGET, POSTList/create users
/scim/v2/Users/:idGET, PUT, PATCH, DELETECRUD single user
/scim/v2/GroupsGET, POSTList/create groups
/scim/v2/Groups/:idGET, PUT, PATCH, DELETECRUD single group
/scim/v2/.searchPOSTCross-resource search

All endpoints require a bearer token in the Authorization header.

IdP ActionDrizby Behavior
Create userUser created with member role (pre-approved)
Update userProfile fields updated
Deactivate userUser blocked (isBlocked = true)
Reactivate userUser unblocked
Delete userUser blocked (soft delete)
Create groupGroup created under “SCIM” group type
Update group membersMembership synced (adds/removes)
Delete groupGroup deleted (memberships cascade)

SCIM-provisioned users are marked internally so you can distinguish them from manually created accounts.

  • Tokens are hashed (SHA-256) before storage — Drizby never stores the raw token
  • You can generate multiple tokens (e.g. one per IdP)
  • Revoke tokens at any time from Settings > Authentication > SCIM Provisioning
  • Last-used timestamps are tracked for each token

SAML login redirects but fails on callback

Section titled “SAML login redirects but fails on callback”
  • Verify the ACS URL in your IdP exactly matches https://your-drizby.example.com/api/auth/saml/callback
  • Check that the IdP signing certificate is correct (or that metadata XML/URL is properly configured)
  • Ensure APP_URL is set to your public-facing URL (not localhost)
  • Verify the SCIM endpoint URL ends with /scim/v2 (no trailing slash)
  • Confirm the bearer token was copied correctly (it’s only shown once)
  • Check that SCIM is enabled in Drizby settings
  • SCIM-provisioned users are automatically assigned the member role — they should not require approval
  • If a user was created manually before SCIM provisioning, they may retain their original user (pending) role
  • For SAML: verify the group attribute name in the assertion matches your mapping (default: groups)
  • For SCIM: ensure “Push Groups” is enabled in your IdP’s provisioning settings
  • SCIM groups are created under the “SCIM” group type; SAML groups under the “SAML” group type