Single sign-on (SSO)
Orimora supports per-team single sign-on so each workspace can bring its own identity provider (IdP). Two protocols are available:
- OIDC (OpenID Connect) — Okta, Microsoft Entra ID, Google, Auth0, Keycloak, …
- SAML 2.0 — the same IdPs plus JumpCloud, OneLogin and other enterprise IdPs.
Process-wide environment providers (the OIDC_* and Google/Microsoft variables)
still work as an instance-wide fallback.
How users sign in
Section titled “How users sign in”On the login screen, a user enters their email and clicks Sign in with company SSO. Orimora maps the email’s domain to the team’s configured provider and redirects into the right flow. A team can also be reached directly via its slug:
- OIDC:
/auth/oidc?team=<team-slug> - SAML:
/auth/saml/login?team=<team-slug>
A provider is only auto-discovered by email when its allowed domains are set (otherwise it would match every address); such a provider is reachable only via its team slug. New users are provisioned on first login (JIT) and bound to the SSO team; existing members are never reassigned.
Configure a provider
Section titled “Configure a provider”Open Settings → Identity (SSO) (requires the settings.team_edit capability).
- Add OIDC provider and fill in: display name, issuer URL, client ID, client
secret, optional scope (default
openid email profile). - Optionally set allowed email domains to enable email-based discovery and to restrict which domains may sign in.
- Register the redirect URI
\${APP_URL}/auth/oidc/callbackin your IdP. - Enable the provider.
SAML 2.0
Section titled “SAML 2.0”First, configure the instance-wide SP signing key (one pair for all teams):
openssl req -x509 -newkey rsa:2048 -nodes \ -keyout sp-key.pem -out sp-cert.pem -days 1095 -subj "/CN=orimora-sp"# set SAML_SP_PRIVATE_KEY and SAML_SP_CERT from these PEM filesThen in Settings → Identity (SSO) → Add SAML provider, fill in the IdP entity ID (Issuer), IdP SSO URL, the IdP signing certificate (PEM), NameID format, optional email attribute, and optional allowed domains.
Give your IdP these SP details:
- SP metadata:
\${APP_URL}/auth/saml/metadata - ACS (HTTP-POST):
\${APP_URL}/auth/saml/acs - Entity ID:
\${APP_URL}/auth/saml/metadata
Security model
Section titled “Security model”Each SAML assertion is validated against the provider’s pinned signing
certificate. Orimora enforces: a valid XML signature (rejecting XML-signature-
wrapping), the expected Issuer and Audience, the NotBefore/NotOnOrAfter
lifetime (± clock skew), single-use InResponseTo correlation (replay defence),
and a Success status — then applies the allowed-domain policy.
Automated provisioning (SCIM 2.0)
Section titled “Automated provisioning (SCIM 2.0)”SCIM lets your IdP create, update and deactivate users — and sync groups — automatically, so you don’t manage accounts by hand.
Set up
Section titled “Set up”- In Settings → Identity (SSO), under SCIM provisioning, click Create SCIM token. Copy the token immediately — it is shown only once.
- In your IdP’s provisioning settings, set:
- Tenant / Base URL:
\${APP_URL}/scim/v2 - Secret token: the token you just created
- Tenant / Base URL:
- Map at least
userName→ email. Start provisioning.
Behaviour
Section titled “Behaviour”- Users (
/Users): create, read, replace (PUT), update (PATCH) and delete. Provisioning is idempotent — re-sending the same user (matched byexternalId, then email) updates rather than duplicates. - Deactivation is non-destructive.
active=false(or a SCIMDELETE) suspends the user — their email is preserved so re-activation works. Orimora never hard-deletes via SCIM. - New users join the Viewers group by default (least privilege); broader access comes from group membership.
- Groups (
/Groups): create, patch members (add/remove/replace) and delete custom groups. The four system groups (Admins/Editors/Members/Viewers) are read-only over SCIM, and an IdP cannot remove the team’s last admin. - Filtering supports
eq,co, andswon Users (eq/coon Groups); pagination usesstartIndex/count; optimistic concurrency viaETag/If-Match.