Administration Single sign-on
Single sign-on
Let members sign in to the console through your identity provider, over SAML 2.0 or OpenID Connect. You can also create members on their first sign-in, and turn off passwords for your email domains.
Who can do it
Every member can read the page. Saving, testing and turning it on need Manage workspace settings (settings:manage), which only the Owner role holds. Everyone else sees "Changing single sign-on needs the settings:manage permission." and every control is disabled.
Where: Settings › Access › Single sign-on. The header badge reads Not configured, Configured or On.
How sign-in works
A member goes to the sign-in page, chooses Continue with SSO, types their work email, and is sent to your identity provider. The address's domain decides which workspace's provider they reach, so the domain must be listed under Email domains.
Sign-in always starts from Oxelone. A response your identity provider sends without being asked, such as a tile in its app launcher, is refused.
Single sign-on signs in only accounts it created itself. The first sign-in of a new address creates the account, when Create members on first sign-in is on. A person who already has a password account, in this workspace or another, is refused with "An account with this email already exists. Sign in with your password."
Set it up
SAML 2.0
- Open Settings › Access › Single sign-on and set Protocol to SAML 2.0.
- Create a SAML app in your identity provider and give it the two values the console shows. Use Copy beside each. The name ID must be the person's email address.
- ACS URL: where the identity provider sends the signed response.
- Entity ID: the audience of the SAML app. The console's SAML metadata is at the address in the hint beside Entity ID.
- Back in the console, paste the identity provider's metadata XML, or its URL, into IdP metadata. A URL must use https. The metadata must name a sign-on URL for the redirect binding and a signing certificate.
- Under Email domains, add the domains whose addresses should sign in this way, for example
acme.com. - Choose Test connection. For SAML it checks the signing certificate and answers "The IdP's signing certificate is valid until …".
- Switch on Sign in with SSO, then choose Save.
Your identity provider must sign the assertion, or the whole response. Encrypted assertions are not supported. The person's email address is read from the name ID, or from an attribute named email, mail or emailaddress.
Step by step for Okta, Microsoft Entra ID and Google Workspace.
OpenID Connect
- Set Protocol to OpenID Connect.
- Create a client in your identity provider and register the Redirect URI the console shows as a valid redirect URI.
- Enter the Issuer URL, the Client ID and the Client secret. The secret is write-only: once saved, the box shows "Stored · …" and its last four characters, and leaving it empty keeps the stored one.
- Add Email domains, choose Test connection, then switch on Sign in with SSO and choose Save.
The console asks for the scopes openid email profile, uses PKCE, and needs the identity provider to confirm the email address.
Every setting
| Setting | What it does | Default |
|---|---|---|
| Protocol | SAML 2.0 or OpenID Connect. Both give members the same sign-in. | OpenID Connect |
| IdP metadata (SAML) | The identity provider's metadata XML, or a URL to it. Once stored, the box says "Stored." and the date the certificate is valid until. Leave it empty to keep what is stored. | Empty |
| ACS URL, Entity ID (SAML) | Read-only values to give your identity provider. | Shown by the console |
| Issuer URL, Client ID, Client secret (OIDC) | From the client you create in your identity provider. | Empty |
| Redirect URI (OIDC) | Read-only. Register it on the client. | Shown by the console |
| Email domains | Addresses at these domains sign in here. Typed in lower case; anything up to an @ is dropped. | None |
| Create members on first sign-in | Someone at your domains who is not a member yet becomes one the first time they sign in, instead of being turned away. | Off |
| Role for new members | The role those members get. You cannot choose a role with more access than your own. Choose the least that works; Compliance reader changes nothing. See Roles and permissions. | None chosen |
| Require SSO | Passwords stop working for these domains. See below. | Off |
| Sign in with SSO | Turns single sign-on on. Test the connection before turning it on. | Off |
Before you turn on Require SSO
Require SSO stops passwords for every member of this workspace whose address is on one of your domains, whether or not the password was right. The sign-in page says "This workspace signs in with single sign-on. Use Continue with SSO." People at the same domain who are not members are not affected.
There is no exception for Owners. Platform admins are the only accounts exempt from the rule.
Because single sign-on signs in only accounts it created, a member who already has a password account cannot move to single sign-on. They are refused, and then Require SSO also blocks their password. Before you turn it on, open Members and read the Sign-in column. Every member who must still get in needs to say SSO.
You cannot turn Require SSO on while single sign-on is off. Neither can be turned on until Test connection has passed for the settings as they are now. Changing the issuer, client, secret or certificate means testing again.
When it goes wrong
On the settings page:
- Test the connection before turning single sign-on on. Choose Test connection, then save.
- Turn single sign-on on before requiring it. Switch on Sign in with SSO as well.
- Add at least one email domain before turning single sign-on on. Add a domain.
- … is already used by another workspace. A domain can belong to one workspace. The sentence starts with the domain.
- You can't give new members a role with more access than your own. Choose a lower role.
- Choose the role new members get. Pick one under Role for new members.
- Paste the IdP metadata, or its URL., The IdP metadata isn't valid SAML metadata., The metadata URL must use https. and The metadata URL couldn't be read. Check the metadata.
- The IdP's signing certificate has expired. Download current metadata from your identity provider and paste it.
- Enter the issuer URL and the client ID. Both are needed for OpenID Connect.
- The issuer's discovery document isn't valid OpenID Connect. and The provider says its issuer is …, not …. The issuer must match what the provider publishes, exactly.
- This deployment has no credential encryption key (OXEL_CREDENTIAL_KEY is unset), so a client secret cannot be stored. A secret is never stored unencrypted. Whoever runs your deployment must set the key.
On the sign-in page:
| The page says | Cause and fix |
|---|---|
| That sign-in was already used or wasn't started here. Try again. | The sign-in was repeated, or started outside Oxelone. Start again from Continue with SSO. |
| The sign-in took too long. Try again. | Start again. |
| Your identity provider's answer couldn't be verified. Try again, or ask your administrator. | The response failed a check: signature, audience, recipient, issuer or time. Check the stored metadata or client, and your clocks. |
| Your identity provider hasn't verified your email address. | The provider did not confirm the person's email address. |
| Your email domain isn't allowed to sign in to this workspace. | The domain is not under Email domains. |
| You're not a member of this workspace yet. Ask an owner to invite you. | Create members on first sign-in is off. Invite the person or switch it on. |
| An account with this email already exists. Sign in with your password. | The account was not created by single sign-on. See above. |
| This workspace has no place left on its plan. Ask an owner to make room, or to change the plan. | The plan's member limit is reached. See Plan and licence. |
| Single sign-on isn't available right now. Try again, or sign in with your password. | The identity provider answered with an error, or single sign-on is off. |
| Single sign-on isn't set up for … | Nothing is turned on for that address's domain. |
With the API
Not available with an API key. Only an Owner can change single sign-on, in the console.