Single sign-on
With single sign-on (SSO), your team signs in to NuRoute with your company's identity provider instead of a NuRoute password. It works with any provider that supports OpenID Connect, including Microsoft Entra ID (Azure AD), Okta, Google Workspace, Keycloak and Auth0. It is part of the Enterprise plan, on self-hosted installs and on NuRoute Cloud.
How it works
- On the login page, someone enters their work email and chooses Sign in with SSO.
- NuRoute recognises your company from the email's domain and sends them to your identity provider, where they sign in as they do everywhere else (with MFA, if you require it there).
- The first time, NuRoute creates their account with the role you chose (Member by default). Owners and admins change roles later on Members, as for anyone else.
Accounts that already exist with the same email (people invited before SSO) are connected to their identity provider account at their first SSO sign-in. Emails outside your domains, or belonging to another NuRoute organization, are always refused.
Set it up
You need to be an owner or admin of your NuRoute organization, and an administrator of your identity provider. It takes about 10 minutes.
In NuRoute, open Settings → Single sign-on. Step 1 on that page shows your
redirect URI: https://<your domain>/auth/sso/callback. You need it at the identity
provider.
At your identity provider, create an application for NuRoute (steps for each provider below), then copy three values back into NuRoute:
| NuRoute field | What it is |
|---|---|
| Issuer URL | Your provider's OpenID Connect issuer (shown for each provider below). NuRoute reads its configuration from <issuer>/.well-known/openid-configuration |
| Client ID | The application's ID |
| Client secret | The application's secret. Stored encrypted; never shown again (leave the field empty when you change other settings) |
| Email domains | Your company's email domains, e.g. acme.com, acme.de. People whose email ends in one of them sign in through your provider. A domain can belong to one NuRoute organization only |
| Role for people signing in for the first time | Member (default), Viewer or Admin. Never Owner |
Select Save. NuRoute checks it can read your provider's configuration and tells you if not.
Then try it: open a private browser window, go to https://<your domain>/app/login, enter your
work email and choose Sign in with SSO.
Microsoft Entra ID (Azure AD)
- In the Entra admin center, open Identity → Applications → App registrations → New registration.
- Name:
NuRoute. Supported account types: Accounts in this organizational directory only. Redirect URI: platform Web, your NuRoute redirect URI. Select Register. - On the app's Overview, copy the Application (client) ID (NuRoute's Client ID) and the Directory (tenant) ID.
- Certificates & secrets → New client secret, then copy its Value (not the Secret ID) into NuRoute's Client secret. Note when it expires, and replace it in NuRoute before then.
- Issuer URL:
https://login.microsoftonline.com/<Directory (tenant) ID>/v2.0. - Optional, to choose who may sign in: Enterprise applications → NuRoute → Properties → Assignment required? → Yes, then add users or groups under Users and groups.
NuRoute uses the email claim, or preferred_username when Entra sends no email, so accounts
without a mailbox work too.
Okta
- In the Okta Admin Console, Applications → Applications → Create App Integration.
- Sign-in method OIDC - OpenID Connect, application type Web Application. Next.
- Name
NuRoute; grant type Authorization Code; Sign-in redirect URIs: your NuRoute redirect URI. Under Assignments, choose who may use it. Save. - Copy the Client ID and the Client secret from the app's General tab.
- Issuer URL: your Okta domain, e.g.
https://acme.okta.com.
Google Workspace
- In the Google Cloud console, choose (or create) a project for your company.
- APIs & Services → OAuth consent screen: user type Internal (only your Workspace's
users can sign in), app name
NuRoute. Save. - APIs & Services → Credentials → Create credentials → OAuth client ID: application type Web application, Authorized redirect URIs: your NuRoute redirect URI. Create.
- Copy the Client ID and Client secret.
- Issuer URL:
https://accounts.google.com.
Keycloak
- In your realm, Clients → Create client: type OpenID Connect, Client ID
nuroute. - Client authentication: On, Standard flow: On (others off). Next.
- Valid redirect URIs: your NuRoute redirect URI. Save.
- Copy the secret from the client's Credentials tab.
- Issuer URL:
https://<your Keycloak>/realms/<realm>.
Auth0
- Applications → Applications → Create Application: name
NuRoute, type Regular Web Applications. - On Settings, set Allowed Callback URLs to your NuRoute redirect URI. Save.
- Copy the Client ID and Client Secret from the same page.
- Issuer URL:
https://<your tenant>.<region>.auth0.com/(your Auth0 Domain withhttps://in front).
Any other OpenID Connect provider
Create a web (confidential) application with the authorization code flow, your NuRoute redirect
URI, and the scopes openid email profile. The issuer URL is the address its
/.well-known/openid-configuration lives under.
Single sign-on only
With Single sign-on only switched on, passwords stop working for everyone except owners: access then follows your identity provider, so someone who leaves loses NuRoute access when you disable them there. Owners keep their password so they can still sign in, and fix the settings, if the identity provider is down or misconfigured. Keep at least one owner whose password is stored somewhere safe.
API keys are not affected: they keep working until an admin deletes them on API Keys. When someone leaves, delete the API keys they created.
Changing or removing it
- Switch it off for a while: turn off Single sign-on on and save. Settings are kept; everyone signs in with a password again (people created by SSO have none yet; see below).
- Remove it: Remove single sign-on on the same page.
- People created by SSO have no NuRoute password. If SSO is off and they need to sign in, they
use Forgot password? on the login page (with your
mail server connected), or someone with access to the server runs
./reset-password.sh <their email>.
When sign-in fails
The login page explains what went wrong:
| Message | What to do |
|---|---|
| "Single sign-on is not set up for this email domain…" | The email's domain is not in Email domains. Check for typos in the email, or add the domain |
| "Your identity provider signed you in with an email address this organization does not accept." | The provider sent an email outside your domains, e.g. a guest account. Sign in with a company account, or add that domain |
| "This email address already belongs to another NuRoute organization." | On NuRoute Cloud, that email is registered elsewhere. Contact support |
| "Your identity provider did not sign you in. You may not be assigned to NuRoute there." | Assign the person to the NuRoute application at your provider (Entra: Users and groups; Okta: Assignments) |
| "Your identity provider did not send an email address…" | Make sure the application gets the email scope (and, in Entra, an email or user principal name in the email format) |
| "The answer from your identity provider could not be verified…" | Often a wrong client secret or an expired one (Entra secrets expire). Enter the current secret under Settings → Single sign-on |
| "The sign-in took too long or was already used." | Start again from the login page (sign-ins expire after 10 minutes) |
| "Your organization signs in with single sign-on. Use Sign in with SSO." (password login) | Single sign-on only is on: use Sign in with SSO. Owners can still use their password |
On a self-hosted install, docker compose logs auth-service | grep sso shows the reason for
each refused sign-in.