For your IT department, to connect your own identity provider and (optionally) automate user provisioning.
@acme.com) — this is how Ninecore knows which identity provider to send someone to when they click "Log in with SSO".openid, email, profile (these are usually present by default).https://login.microsoftonline.com/<tenant-id>/v2.0https://your-org.okta.com (or an Authorization Server's issuer if you use custom ones).https://accounts.google.comNote: Google Workspace has no native SCIM provisioning for third-party applications like this one. Use JIT provisioning instead (Ninecore auto-creates an account the first time someone signs in), or have a Ninecore admin create accounts manually.
Any provider that publishes a standard OIDC discovery document works the same way: register a Web/Confidential OAuth client, set the redirect URI to Ninecore's Redirect URI, and enter your provider's discovery URL as the Issuer field (usually ending in /.well-known/openid-configuration once Ninecore appends it — just enter the base issuer URL, not the full discovery path). Request the openid, email, and profile scopes.
In Ninecore, go to Admin → SSO & SCIM:
| Field | What to enter |
|---|---|
| Enable SSO | Turns the section on. Nothing else takes effect until this is checked. |
| Redirect URI | Read-only — copy this into your identity provider's app registration (see above). |
| Issuer / discovery URL | From your provider, per the sections above. |
| Client ID / Client secret | From your provider's app registration. |
| Email domain | Your company's email domain (e.g. acme.com) — routes users to your identity provider when they click "Log in with SSO". |
| Auto-create accounts (JIT) | If on, a person's Ninecore account is created automatically the first time they sign in via SSO, with no modules assigned yet. If off, an admin must create their account first. |
| Require SSO | If on, password login is blocked for everyone except break-glass-exempt accounts (see below). Ninecore won't let you turn this on until at least one working break-glass account exists. |
A break-glass account is a normal Ninecore admin account with "SSO exempt" checked (Team management → edit the person) and MFA already set up. If your identity provider is ever unreachable and SSO is required, this is the one account that can still sign in with a password, so you're never completely locked out of your own system.
Recommendation: set up at least two break-glass-exempt admin accounts, held by different people, before turning on "Require SSO." Every break-glass sign-in is recorded in the Audit Trail, so using one when it isn't a real emergency is visible.
SCIM requires SSO to already be enabled. On the SSO & SCIM page, check Enable SCIM, then click Generate new bearer token — the token is shown exactly once, so copy it immediately into your identity provider's provisioning settings (see the provider-specific sections above for where that field lives). Generating a new token immediately invalidates whatever token was configured before.
| Operation | What happens in Ninecore |
|---|---|
| Create user | New account, no modules assigned yet — a Ninecore admin assigns access afterward. |
| Update user (name/email) | Updates the matching fields on the existing account. |
| Deactivate / Delete user | Account is disabled (can no longer log in). Not a permanent delete — their historical records stay intact, and re-provisioning the same email later reactivates the same account. |
| Group push | Not supported — nothing happens; Ninecore doesn't advertise Groups as a supported resource type to your identity provider. |
"SSO isn't set up for this email address's domain" — the email's domain doesn't match what's configured in Email domain, or SSO isn't enabled yet. Double-check both.
Redirect URI mismatch / "invalid redirect_uri" from your identity provider — the single most common setup mistake. The Redirect URI in your provider's app registration must match Ninecore's Redirect URI field exactly, including https:// and no trailing slash.
"No account exists" after signing in — JIT provisioning is off and no admin has created this person's account yet. Either create it manually or turn on Auto-create accounts.
Sign-in fails with a token/clock error — usually means the server's clock and your identity provider's clock have drifted apart. This is rare with cloud identity providers but worth checking if nothing else explains a failure.
Still stuck? Contact your Ninecore ERP support contact with the exact error message shown.