SSO Setup
SAML 2.0 and OIDC against Okta, Microsoft Entra ID, Google Workspace, OneLogin, JumpCloud, or any generic provider.
Before you start
Verify your work email domain before you wire up an IdP. SSO is bound to a verified domain — without it, Velocity has no safe way to know that jane@acme.com is actually one of your users.
- Open Org Settings → Domains and click Add domain.
- Copy the generated
velocity-verify=...token. - Add it as a DNS TXT record at the apex of the domain you want to claim.
- Click Check now. Propagation is usually under a minute; we re-check hourly for 24 hours otherwise.
SAML 2.0 setup
Velocity acts as the SAML Service Provider. You configure Velocity as an app in your IdP, then paste three pieces of metadata back into Velocity.
- In your IdP, create a new SAML application. Use
https://api.aethernaut.ai/sso/saml/acsas the ACS URL andhttps://api.aethernaut.ai/sso/saml/metadataas the Entity ID. - Download the IdP metadata XML.
- In Velocity, open Org Settings → SSO → SAML and either paste the full XML or fill the three fields directly.
The three fields, if you're wiring it by hand:
- entity_id — the IdP's issuer URL.
- sso_url — the HTTP-POST SSO endpoint users get redirected to.
- signing_cert — the IdP's public x509 cert in PEM form, used to verify SAML assertions.
Click Test connection. We send a real AuthnRequest and parse the response — if anything is wrong (clock skew, wrong cert, mis-mapped NameID) we tell you exactly which field is at fault.
OIDC setup
OIDC is faster to wire than SAML because we discover endpoints automatically. You only need three values from your IdP.
- In your IdP, register Velocity as an OIDC client. Redirect URI:
https://api.aethernaut.ai/sso/oidc/callback. - Grab the issuer URL, the client_id, and the client_secret.
- Paste them into Org Settings → SSO → OIDC.
On save, we fetch {issuer}/.well-known/openid-configuration and cache the authorization, token, JWKS, and userinfo endpoints. If your IdP rotates signing keys, we pick that up via the JWKS endpoint automatically — no manual cert swap.
Attach a verified domain
Configuring an IdP doesn't enable it. You attach it to one or more verified domains. Once attached, any user whose email ends in that domain is auto-redirected to your IdP on the login screen — they never see the password field at all.
- Open Org Settings → SSO → Domain bindings.
- Select a verified domain.
- Pick the IdP profile to bind it to. One domain, one IdP.
Enforcing SSO
Once you've tested SSO end-to-end, flip sso_required in Org Settings → Security. Password login is disabled org-wide. The only exception is a single break-glass Manager account, which Velocity preserves so you can recover if your IdP itself goes down.
Per-IdP gotchas
Okta. Set the Name ID format to EmailAddress and map user.email to NameID. Group claims are optional but useful for role mapping later.
Microsoft Entra ID. Use the “Enterprise application” template, not the legacy app registration. Entra signs assertions with SHA-256 by default; if you switched it to SHA-1 you'll see an assertion-verify failure. Don't.
Google Workspace. OIDC only — Google's SAML support for non-Google apps is awkward. Use the “Web application” OAuth client type and request the openid email profile scopes.
Auth0. Either flavor works. For SAML, make sure “Sign Response” is on (not just “Sign Assertions”) — Velocity verifies both. For OIDC, use the regular web application type, not SPA.
Question we didn't cover?
Email sales@aethernaut.ai — we keep docs honest and respond inside one business day.