Single Sign-On (SSO) lets users sign in to Archestra with the identity they already have at work — Microsoft, Okta, Google, GitHub, GitLab, or any OIDC/SAML provider — instead of managing a separate username and password. All SSO providers are configured from Settings > Identity Providers. Once a provider is enabled, a sign-in button for it appears on the Archestra login page and users are provisioned automatically on first login.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/archestra-ai/archestra/llms.txt
Use this file to discover all available pages before exploring further.
How SSO Sign-In Works
When a user clicks an SSO button, Archestra redirects them to the identity provider, which authenticates them and returns a token or assertion. Archestra then evaluates any configured role mapping and team sync rules before provisioning or logging in the user.Supported Protocols
| Protocol | Use it for |
|---|---|
| OIDC (OpenID Connect) | Microsoft Entra ID, Okta, Google, GitHub, GitLab, Auth0, Keycloak, any modern OAuth 2.0 + OIDC provider |
| SAML 2.0 | Older enterprise IdPs that don’t speak OIDC, or organizations standardized on SAML |
Callback URLs
Each protocol uses a different callback URL format. The{ProviderId} segment is case-sensitive and must match the provider ID configured in Archestra exactly (for example Okta, EntraID, Google).
- OIDC
- SAML (ACS URL)
Production:Local development:
Supported Providers
| Provider | Protocol | SSO Sign-In | Role Mapping | Team Sync | Token Exchange |
|---|---|---|---|---|---|
| Microsoft Entra ID | OIDC | Yes | Yes | Yes (groups claim) | Entra OBO |
| Okta | OIDC | Yes | Yes | Yes | Okta-managed (private key JWT) |
| OIDC | Yes | Yes | Yes | RFC 8693 | |
| GitHub | OIDC | Yes | Yes | Yes | RFC 8693 |
| GitLab | OIDC | Yes | Yes | Yes | RFC 8693 |
| Generic OIDC | OIDC | Yes | Yes | Yes | RFC 8693 (or Okta/Entra if issuer matches) |
| Generic SAML | SAML 2.0 | Yes | Yes | Yes | Not supported |
Allowed Email Domains
The Allowed Email Domains field is an optional Archestra-side sign-in boundary. When configured, users can only authenticate with that provider when their email matches one of the configured domains. Use comma-separated values for multi-domain SSO:engineering.company.com matches company.com.
User Provisioning
When a user authenticates via SSO for the first time:- A new user account is created with the email and name from the identity provider
- The user’s role is determined by role mapping rules (if configured), otherwise the provider’s default role (or Member)
- The user is added to the organization
- A session is created and the user is logged in
Disabling Basic Authentication
Once SSO is confirmed working, you can enforce SSO-only login by disabling the username/password form.Disabling User Invitations
For organizations relying on SSO auto-provisioning, you can disable the manual invitation system entirely. This hides the invitation UI and blocks invitation API endpoints.Role Mapping
Role mapping lets you automatically assign Archestra roles based on user attributes from your identity provider — no manual role assignment required after initial provisioning.How It Works
Archestra evaluates Handlebars templates against the claims in the user’s ID token (OIDC) or SAML assertion. Rules are evaluated in order — the first matching rule wins.Open the SSO provider
In Settings > Identity Providers, create or edit an SSO provider and expand the Role Mapping section.
Add mapping rules
Each rule has a Handlebars Template (evaluated against ID token claims) and an Archestra Role to assign when the template matches.
Set a default role
Choose the role assigned when no rules match. Defaults to
member if not specified.Handlebars Helpers
| Helper | Description |
|---|---|
includes | Check if an array includes a value (case-insensitive) |
equals | Check if two values are equal (case-insensitive for strings) |
contains | Check if a string contains a substring (case-insensitive) |
and | Logical AND — true if all values are truthy |
or | Logical OR — true if any value is truthy |
exists | True if the value is not null/undefined |
notEquals | Check if two values are not equal |
Template Examples
For OIDC providers, group-based rules only work if the ID token contains the group claim. Many IdPs don’t include groups with the default
openid, email, and profile scopes — add the provider’s groups scope and configure the IdP to emit that claim.Skip Role Sync
Enable Skip Role Sync to set a user’s role only on their first login. Subsequent logins won’t update the role, even if IdP attributes change — useful when administrators need to manually adjust roles after initial provisioning.Team Sync
Team sync automatically adds and removes users from Archestra teams based on their IdP group memberships. Members added manually to a team are never removed by sync.How It Works
- Admin links an Archestra team to one or more external IdP group identifiers
- On each SSO login, Archestra extracts the user’s group memberships from the token
- Users in a linked group are added to the corresponding team; users no longer in any linked group are removed (if they were added via sync)
Default Group Extraction
If no custom template is configured, Archestra checks these claim names in order:Custom Handlebars Templates
| Template | Input Format |
|---|---|
{{#each groups}}{{this}},{{/each}} | Flat array: ["admin", "users"] |
{{#each roles}}{{this.name}},{{/each}} | Array of objects: [{name: "admin"}] |
{{{json (pluck roles "name")}}} | Array of objects, JSON output |
{{#with (json roles)}}{{#each this}}{{this.name}},{{/each}}{{/with}} | JSON string claim |
Linking Teams to Groups
Enter the external group identifier
Enter the group name as extracted by your Handlebars template — for example
dev-team, an Entra group object ID, or an LDAP DN such as cn=admins,ou=groups,dc=example,dc=com.Provider Setup Walkthroughs
- Okta
- Microsoft Entra ID
- Google
- GitHub
- Generic OIDC / SAML
This walkthrough configures Okta OIDC sign-in for Archestra. After completing Part 1, users can sign in with Okta. Parts 2-4 optionally layer Okta-managed token exchange for per-user downstream MCP tool calls.Alternative: Manual App IntegrationIf your tenant doesn’t have access to the OIN tile:
Click Create Provider, then test with a private browser window.See Role Mapping and Team Sync above for the full configuration reference.
Follow Okta’s AI agent token exchange guide for the full Admin Console steps.
Part 1 — Register the Okta App
Recommended: Install from the Okta Integration Network (OIN)Archestra is published in the Okta Integration Network. The OIN flow pre-configures redirect URIs, scopes, and grant types.Open the Okta Admin Console
Go to Applications > Applications, click Browse App Catalog, and search for Archestra.
Add the integration
Click Add. In General Settings, enter your Archestra hostname without protocol — for example
your-archestra-domain.com (not https://).Archestra does not support Okta DPoP for SSO clients. In the app’s General > Client Credentials settings, disable Require Demonstrating Proof of Possession (DPoP) header in token requests.
- Go to Applications > Create App Integration > OIDC - OpenID Connect > Web Application
- Sign-in redirect URI:
https://your-archestra-domain.com/api/auth/sso/callback/Okta(theOktasegment is case-sensitive) - Sign-out redirect URI:
https://your-archestra-domain.com/auth/sign-in - Set Login initiated by to Either Okta or App
- Set Login flow to Redirect to app to initiate login (OIDC Compliant)
- Set Initiate login URI to
https://your-archestra-domain.com/auth/sso/Okta - Keep Send ID Token directly to app (Okta Simplified) disabled
Part 2 — Configure SSO in Archestra
Go to Settings > Identity Providers and click Enable on the Okta card.| Field | Value |
|---|---|
| Issuer | Your Okta org issuer, e.g. https://your-org.okta.com |
| Client ID | From Okta’s Sign On tab |
| Client Secret | From Okta’s Sign On tab |
| Discovery Endpoint | Leave empty — auto-derived from issuer |
Part 3 — Roles & Team Sync
For Okta, the most common pattern is mapping thegroups claim. When using the OIN app, Okta only includes groups whose names start with Archestra_ in the groups claim (e.g., Archestra_Admin, Archestra_Engineering). Okta can include up to 100 groups.In Archestra, use the default group extraction or set the Groups Handlebars Template to:Part 4 — Token Exchange for Downstream MCP Tools (Optional)
Token exchange uses the same Okta application as SSO. You’ll need to:- Generate a public/private keypair and register the public key under Public Keys on the Okta app
- Note the Key ID (kid)
- Enable the
urn:ietf:params:oauth:grant-type:token-exchangegrant type on the app - Configure the authorization server policies to allow the exchange
| Field | Value |
|---|---|
| Exchange Token Endpoint | https://your-org.okta.com/oauth2/v1/token |
| Exchange Client Authentication | Private key JWT |
| Signing Key ID | The kid of the registered public key |
| User Token To Exchange | ID token |
Troubleshooting Okta
- App tile opens the wrong place — The hostname in Okta must not include
https://or a path; enter only the bare hostname. - Manual tile doesn’t start SSO — Set Login initiated by to Either Okta or App, Login flow to Redirect to app to initiate login, and Initiate login URI to
https://your-archestra-domain.com/auth/sso/Okta. invalid_dpop_prooferror — Disable DPoP in the Okta app’s security settings.- Login fails after redirect — The Okta Sign-in redirect URI must exactly match the Archestra callback URL, including the case-sensitive
Oktasegment.
Troubleshooting
state_mismatch error
state_mismatch error
Cookies are being blocked, or the callback URL doesn’t match.
- Third-party cookies must be enabled in the browser
- The callback URL configured at the IdP must exactly match the Archestra callback URL, including the case-sensitive
{ProviderId}segment
missing_user_info error
missing_user_info error
The IdP didn’t return the required user attributes. For GitHub, the user must have a public email set in their GitHub profile.
account not linked error
account not linked error
The SSO provider is not trusted for automatic account linking, or the provider returned an email that doesn’t match the existing account. Verify the provider is configured in Identity Providers and the user is signing in with the same email as their existing account.
account_not_found error (SAML)
account_not_found error (SAML)
The SAML assertion didn’t contain the required user attributes. Configure your IdP to send:
NameIDinemailAddressformatemailattributefirstNameandlastNameattributes (recommended)
signature_validation_failed error (SAML)
signature_validation_failed error (SAML)
The SAML response signature couldn’t be verified.
- The IdP certificate in Archestra must match the current signing certificate from your IdP
- If using IdP metadata, re-download it (certificates rotate)