Enterprise SSO lets your team sign in to DevStride through your organization's own identity provider — Microsoft Entra ID, Okta, Google Workspace, or anything that speaks OIDC or SAML 2.0.
This page is the full setup path, in the order you actually have to do it:
Permission. Managing identity providers requires the Manage Identity Providers permission, which Owner and Admin both have by default. You can also grant it to a custom role.
Where to find it. In the left sidebar, select Configure Settings, open the Integrations section, and choose Identity Providers.
What you'll need:
acme.com).Registering is a two-way exchange: DevStride needs credentials that only exist once you've created the app registration, and your identity provider needs one or two values that only DevStride can give you. So both paths below start in DevStride, collect what you need, and return there to finish.
Go to Configure Settings → Integrations → Identity Providers. The panel headed Give these to your provider lists each value with a copy button, what it's for, and the other names your provider might use for it. Copy the ones your protocol needs before you head off to your identity provider — you'll come back here in Step 2 to finish.
The values are specific to the DevStride environment you signed in to, which is why they're shown in the product rather than written down here. Copy them rather than retyping: if one is wrong, sign-in fails at your identity provider, where DevStride can't see the error to help you diagnose it.
DevStride gives you one value, from the Give these to your provider panel on the Identity Providers page; you bring back three.
| DevStride shows | What it's for | Your provider may call it |
|---|---|---|
| Redirect URI | Where your provider sends people back to after they sign in. | Redirect URI, Reply URL, or Callback URL |
Next, go and create the application. Microsoft Entra and Okta: exact steps — which screen to open, what to paste, and where each value below is found. Using a different provider? Create a web/OIDC application, set the Redirect URI above on it, and collect these three:
| Value | Notes |
|---|---|
| Issuer URL | Must be your organization's own single-tenant issuer. |
| Client ID | From the app registration. |
| Client secret | Maximum 200 characters. |
For Microsoft Entra, the issuer must name your tenant by GUID:
https://login.microsoftonline.com/<your-tenant-guid>/v2.0
/common, /organizations, and /consumers issuers, because they accept sign-ins from identities outside your organization. It also refuses the shared personal-accounts tenant GUID, and refuses accounts.google.com — that's a shared consumer provider where anyone with a Google account could assert your domain. For Google Workspace, use the built-in Google sign-in, or register a proper OIDC app.DevStride gives you two values, from the Give these to your provider panel on the Identity Providers page; you bring back your provider's metadata.
| DevStride shows | What it's for | Your provider may call it |
|---|---|---|
| ACS URL | Where your provider posts the signed sign-in response. | Assertion Consumer Service URL, Reply URL, or Single sign-on URL |
| SP Entity ID | How your provider names DevStride, so it knows the response is meant for us. | Audience URI, Entity ID, or Identifier |
Next, go and create the application. Microsoft Entra and Okta: exact steps — which screen to open, where to paste the two values above, and where to find the metadata.
Using a different provider? Create a SAML 2.0 application, paste both values above into it, then export its metadata — either a metadata URL or the metadata XML document — to bring back to DevStride.
This is the step-by-step for creating the application — which screen to open, what to paste where, and where to find every value DevStride asks for. DevStride can't show you these: they belong to your tenant.
Find your provider below, work through it, then return to Step 2.
OIDC — in the Entra admin center, open Entra ID → App registrations in the left sidebar, then select New registration. Microsoft's own walkthrough: Register an application.
| DevStride asks for | Exactly where it is in Entra |
|---|---|
| Redirect URI (you paste ours in) | During New registration, under Redirect URI (optional), set the platform dropdown to Web and paste DevStride's Redirect URI. Already created the app? Authentication → Add a platform → Web, then paste it there. |
| Client ID | The app's Overview page, field Application (client) ID. It's a GUID. Not the Object ID directly beneath it. |
| Issuer URL | Also on Overview: copy Directory (tenant) ID, then build https://login.microsoftonline.com/<that-guid>/v2.0. Entra never displays this URL assembled — you have to compose it. |
| Client secret | Certificates & secrets → Client secrets → + New client secret. Give it a description and expiry, then Add. See Add credentials. |
Entra shows two columns after you create a client secret. You want Value. The Secret ID beside it looks just as much like a credential and is not one — pasting it produces a provider that saves cleanly and fails at sign-in.
The Value is displayed once. Navigate away and it is gone forever; you'll have to create another secret.
SAML — in the Entra admin center, open Entra ID → Enterprise apps in the left sidebar, then:
DevStride is a good default. Entra may suggest similar-looking gallery apps as you type; ignore them, none of them are DevStride.| DevStride asks for | Exactly where it is in Entra |
|---|---|
| Identifier (Entity ID) (you paste ours in) | Section 1, Basic SAML Configuration → Edit. There's no text box at first — select Add identifier to create one, then paste DevStride's SP Entity ID. |
| Reply URL (you paste ours in) | Same Edit panel → select Add reply URL, then paste DevStride's ACS URL — see the caution above about Entra reusing this label. |
| Metadata URL | Section 3, SAML Certificates → App Federation Metadata Url. Copy the whole URL — this is what DevStride's Metadata URL field wants. |
Both fields show a green tick when the value is accepted, and Save stays greyed out until then. Select Save before closing the panel — you should see "Single sign-on configuration was saved successfully."
A new Enterprise application starts with no assignments — the page reads "No application assignments found" — and anyone who tries to sign in is refused by Entra before DevStride ever sees the attempt.
Go to Users and groups → + Add user/group, select None Selected under Users, tick the people who should have access, then Select and Assign.
On lower Entra plans you'll see "Groups are not available for assignment due to your Active Directory plan level" — assign individual users instead. See Assign users and groups.
OIDC — Applications → Create App Integration → OIDC / Web Application.
| DevStride asks for | Where it is in Okta |
|---|---|
| Sign-in redirect URI (you paste ours in) | In the app wizard. Use DevStride's Redirect URI. |
| Client ID and Client secret | The app's General tab, under Client Credentials. |
| Issuer URL | Security → API → Authorization Servers — the Issuer URI of the server you're using. |
SAML — Applications → Create App Integration → SAML 2.0.
| DevStride asks for | Where it is in Okta |
|---|---|
| Single sign-on URL (you paste ours in) | Step 2 of the wizard. Use DevStride's ACS URL. |
| Audience URI (SP Entity ID) (you paste ours in) | Step 2 of the wizard. Use DevStride's SP Entity ID. |
| Metadata URL | After saving: Sign On tab → Identity Provider metadata link. |
| Field | What to enter |
|---|---|
| Display Name | A name you'll recognize, for example Acme Corp Okta. Required. |
| Protocol | SAML 2.0 or OIDC. SAML 2.0 is selected by default — switch it if you're using OIDC. Permanent once created. |
| Metadata Source (SAML) | Choose Metadata URL or Metadata XML, then paste the one you exported in Step 1. |
| Issuer URL, Client ID, Client Secret (OIDC) | The three values from Step 1. Each field has a Where do I find these? link back to this page. |
| Attribute Mapping | Prefilled — leave it alone unless your IdP uses non-standard claim names. See the note below. |
| Claimed Email Domains | Already filled in with your organization's domain, if your org profile has one. Add others by typing a domain and pressing Enter. |
The mapping list is prefilled with email, email_verified and name. On an OIDC provider DevStride removes the email_verified row when it saves, so it won't be there when you reopen the provider.
That's intentional, not a bug. Corporate identity providers rarely assert email_verified, and for OIDC providers the sign-in platform can't distinguish "the provider said no" from "the provider said nothing" — so DevStride ignores the claim entirely and relies on the DNS domain proof in Step 3 instead. Leaving it mapped would have no effect except to overwrite the flag on every sign-in.
The provider is created and registered with the sign-in platform immediately — there's no waiting period. When the Status column reads active, the configuration is live.
If the status comes back failed, waiting won't help — the configuration was rejected. Fix the details with Edit, then select Resync.
DevStride requires proof that your organization controls a domain before it will route that domain's sign-ins to you.
acme.com the name is _devstride-challenge.acme.com, and the value looks like devstride-domain-verification= followed by a 64-character token.GoDaddy, Cloudflare, Namecheap, Squarespace and most others append your domain to whatever you type in the Name field. So enter just:
_devstride-challenge
not _devstride-challenge.acme.com — that creates _devstride-challenge.acme.com.acme.com, which looks perfectly correct in your DNS editor and will never verify. This is the single most common reason Check DNS keeps failing.
Some providers (AWS Route 53, and any raw zone-file editor) do want the full name. If you're unsure, add the record, then compare it against the Name shown in the DevStride panel — they must match exactly.
The dedicated _devstride-challenge name keeps the record clear of your SPF, DMARC, and other TXT records at the domain root, so you can add and remove it without touching mail configuration. Other TXT records at the same name are ignored — so if an older DevStride token is still published, you can safely leave it while adding the new one.
When the record is found, the domain is marked verified and starts routing sign-ins immediately.
DNS changes can take a few minutes to propagate. The panel shows when it last checked; just select Check DNS again. There's no limit on attempts and the challenge never expires.
If it still fails after ten minutes, check the record's name before anything else — the doubled-domain mistake above accounts for most failures. You can confirm what's actually published with dig +short TXT _devstride-challenge.acme.com (macOS/Linux) or nslookup -type=TXT _devstride-challenge.acme.com (Windows). If that returns nothing, the record isn't where DevStride is looking.
A few things worth knowing about domains:
acme.com does not cover mail.acme.com. Each needs its own claim and its own TXT record.Do this yourself, first, on your own account. It takes a minute and it is the difference between "I think it's configured" and "I know it works".
What should happen: you're sent to your identity provider, sign in there, and land back in DevStride. If your provider already has a live session you may not be prompted for anything — that's normal, not a bypass.
If it fails, the message tells you where to look:
| What you see | What it means |
|---|---|
| We could not start single sign-on for that email address | DevStride has no verified provider for your email's domain. Re-check Step 3 — a claimed domain that is still unverified routes nothing. |
| An error at your identity provider, before returning to DevStride | The values your IdP holds don't match. Re-check them against the Give these to your provider panel, and confirm your account is assigned to the application. |
| Your organization doesn't allow signing in with your identity provider | Most often Require multi-factor authentication is on. See SSO and multi-factor authentication. |
Only once your own sign-in works should you point the rest of your team at it — see How your team signs in.
Automatic provisioning — sometimes called JIT — lets someone from your company who was never invited sign in through SSO and get a DevStride account created on the spot.
If you leave the role blank, DevStride uses your organization's default invite role. If you have no default invite role either, you must pick a role here — provisioning refuses to guess rather than create a member with no permissions.
The Owner role is never offered as a provisioning role.
Provisioning is bound to your verified domains: an account is only ever created for an email address on a domain this provider has proven it controls. It can never create accounts on another organization's domain.
The DevStride login page always shows a Sign in with SSO button, below the password field and the Google and Microsoft buttons. It's always there — it doesn't appear or disappear as you type, and it looks the same for everyone.
For a member signing in:
Setting up SSO makes it available. Members who have a DevStride password can still use it, and on a member's first SSO sign-in DevStride links their corporate identity to their existing account — same account, same work, one more way in.
If you want SSO to be the only way in, that is a separate, deliberate switch: see Requiring single sign-on.
Messages a member might see on the login page:
| What happened | What they see |
|---|---|
| Selected Sign in with SSO with no email typed, or a malformed address | Enter your work email address first — single sign-on uses it to find your organization. |
| Their domain has no verified provider, or something went wrong on our side | We could not start single sign-on for that email address. Sign in with your password, or check with your administrator that single sign-on is set up for your organization. |
Messages after being sent back from your identity provider:
| What happened | What they see |
|---|---|
| No DevStride account matches, and provisioning is off | This account isn't linked to a DevStride account — ask your administrator for an invitation. |
| They have an unaccepted invitation | You have a pending invitation to this organization. Sign in with your existing method to accept it, then try single sign-on again. |
| Their account is deactivated | This account isn't active yet. Confirm your email address, or contact your administrator if it was deactivated. |
| SSO is blocked for the organization | Your organization doesn't allow signing in with your identity provider. Use your DevStride password or contact your administrator. |
By default SSO is an additional sign-in method. You can also make it the only one: turn on Login policy → Require single sign-on on the same Identity Providers page.
Once it's on, password and social sign-in are refused for everyone in your organization. Members see a plain message telling them to use SSO — not a generic error.
What to expect when you turn it on:
Before turning it on, confirm SSO actually works end to end for a real member — see Confirm SSO works before you tell your team. Members created through SSO have no password to fall back on.
If your organization does lock itself out, DevStride support can restore access.
Guardrails DevStride enforces for you:
If your organization has Require multi-factor authentication turned on, SSO sign-in is refused for that organization. It isn't bypassed and it isn't satisfied — it's blocked.
The reason is that federated sign-ins don't pass through DevStride's MFA challenge. An organization that mandates MFA and also permits federated sign-in would have that guarantee quietly voided, so DevStride refuses the combination outright.
If you want SSO, enforce multi-factor authentication at your identity provider instead — which is generally where enterprises want it anyway, since it applies across every application your team signs in to, not just DevStride.
The Identity Providers list shows each provider's Status, Claimed Domains, and Last Synced time.
Status values:
| Status | Meaning |
|---|---|
| active | Working. Routes sign-ins for verified domains. |
| pending | Mid-update. |
| failed | The configuration was rejected. Fix it with Edit, then Resync. |
Resync re-registers the provider with the sign-in platform using its current configuration. Use it when a provider shows failed, or after you've corrected settings on the IdP side. It's safe to run at any time.
There's no disable switch — Delete is the only way to stop a provider.
What happens:
Re-creating a deleted provider is not the same as restoring it.
Your application in the identity provider does not need to be rebuilt: everything it holds — the redirect URI, or the ACS URL and Entity ID — belongs to the DevStride environment, not to the individual provider, so those values are unchanged.
If your organization requires single sign-on, DevStride refuses to delete your last working provider — that deletion would leave nobody with a way in. Turn off Require single sign-on first, or add a second working provider. See Requiring single sign-on.
| Symptom | Cause and fix |
|---|---|
| That email domain is already claimed by another identity provider. | Another organization has verified that domain. If it's genuinely yours, contact DevStride support. |
| A Microsoft Entra issuer must name YOUR tenant by GUID… | You used a multi-tenant issuer. Replace /common, /organizations, or /consumers with your tenant GUID. |
| Provider status is failed | The configuration was rejected. Edit to correct it, then Resync. Waiting won't help. |
| Check DNS finds nothing | The record hasn't propagated, or the name is wrong. It must be at _devstride-challenge.<your-domain>, not at the domain root. |
| Automatic provisioning can't be turned on | The provider has no verified domain yet. Finish Step 3 first. |
| Members see "Your organization doesn't allow signing in with your identity provider" | Most often Require multi-factor authentication is on. See SSO and multi-factor authentication. |
| Sign-in fails at your identity provider, before ever reaching DevStride | Re-check the values your provider holds against the Give these to your provider panel on the Identity Providers page — the Redirect URI for OIDC, the ACS URL and SP Entity ID for SAML. These fail on your provider's side, so DevStride records nothing to help diagnose them. Copy rather than retype, and beware Entra labelling two different values Reply URL. |
| OIDC provider saves fine but sign-in fails | The most likely cause is the client secret: Entra's Secret ID is easy to copy instead of the Value, and the Value is shown only once. Create a new secret and paste its Value. |
| A member can't sign in after you re-created a provider | Re-creating a provider does not normally break existing members — the old link is ignored and a new one is added on their next sign-in. So check the ordinary causes first: is the domain verified again (Step 3), and is the member assigned to the application at your identity provider? If both are right and they still can't get in, contact DevStride support. |