Skip to main content

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.

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.

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

ProtocolUse it for
OIDC (OpenID Connect)Microsoft Entra ID, Okta, Google, GitHub, GitLab, Auth0, Keycloak, any modern OAuth 2.0 + OIDC provider
SAML 2.0Older enterprise IdPs that don’t speak OIDC, or organizations standardized on SAML
OIDC is the default choice for new setups. SAML is supported for compliance-driven environments.

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).
Production:
https://your-archestra-domain.com/api/auth/sso/callback/{ProviderId}
Local development:
http://localhost:3000/api/auth/sso/callback/{ProviderId}

Supported Providers

ProviderProtocolSSO Sign-InRole MappingTeam SyncToken Exchange
Microsoft Entra IDOIDCYesYesYes (groups claim)Entra OBO
OktaOIDCYesYesYesOkta-managed (private key JWT)
GoogleOIDCYesYesYesRFC 8693
GitHubOIDCYesYesYesRFC 8693
GitLabOIDCYesYesYesRFC 8693
Generic OIDCOIDCYesYesYesRFC 8693 (or Okta/Entra if issuer matches)
Generic SAMLSAML 2.0YesYesYesNot 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:
company.com, subsidiary.com
Subdomains are included automatically — engineering.company.com matches company.com.

User Provisioning

When a user authenticates via SSO for the first time:
  1. A new user account is created with the email and name from the identity provider
  2. The user’s role is determined by role mapping rules (if configured), otherwise the provider’s default role (or Member)
  3. The user is added to the organization
  4. A session is created and the user is logged in
Role mapping rules are evaluated on each login, so role changes in the IdP take effect on next sign-in. If a user already has an Archestra account with the same email, SSO automatically links to it.

Disabling Basic Authentication

Once SSO is confirmed working, you can enforce SSO-only login by disabling the username/password form.
ARCHESTRA_AUTH_DISABLE_BASIC_AUTH=true
Verify at least one SSO provider is working before disabling basic auth, or you and your admins will be locked out. Restart the backend after setting this variable.

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.
ARCHESTRA_AUTH_DISABLE_INVITATIONS=true

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.
1

Open the SSO provider

In Settings > Identity Providers, create or edit an SSO provider and expand the Role Mapping section.
2

Add mapping rules

Each rule has a Handlebars Template (evaluated against ID token claims) and an Archestra Role to assign when the template matches.
3

Set a default role

Choose the role assigned when no rules match. Defaults to member if not specified.
4

Configure strict mode (optional)

When Strict Mode is enabled, users who don’t match any rule are denied login entirely rather than assigned the default role.

Handlebars Helpers

HelperDescription
includesCheck if an array includes a value (case-insensitive)
equalsCheck if two values are equal (case-insensitive for strings)
containsCheck if a string contains a substring (case-insensitive)
andLogical AND — true if all values are truthy
orLogical OR — true if any value is truthy
existsTrue if the value is not null/undefined
notEqualsCheck if two values are not equal

Template Examples

{{! Match if "admins" is in the groups array }}
{{#includes groups "admins"}}true{{/includes}}

{{! Match if role claim equals "administrator" }}
{{#equals role "administrator"}}true{{/equals}}

{{! Match if "platform-admin" is in a roles array }}
{{#each roles}}{{#equals this "platform-admin"}}true{{/equals}}{{/each}}

{{! Parse a JSON string claim (e.g., Okta) then check role name }}
{{#with (json roles)}}{{#each this}}{{#equals this.name "archestra-admin"}}true{{/equals}}{{/each}}{{/with}}
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

  1. Admin links an Archestra team to one or more external IdP group identifiers
  2. On each SSO login, Archestra extracts the user’s group memberships from the token
  3. 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:
groups, group, memberOf, member_of, roles, role, teams, team
The first claim that contains non-empty group data is used.

Custom Handlebars Templates

TemplateInput 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

1

Navigate to Settings > Teams

Open an existing team or create a new one.
2

Click the link icon

Click Configure SSO Team Sync next to the team name.
3

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.
4

Save

Click Add to create the mapping. Repeat for additional groups.
Group matching is case-insensitive. A single team can be linked to multiple external groups, and multiple teams can share the same group mapping.

Provider Setup Walkthroughs

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.

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.
1

Open the Okta Admin Console

Go to Applications > Applications, click Browse App Catalog, and search for Archestra.
2

Add the integration

Click Add. In General Settings, enter your Archestra hostname without protocol — for example your-archestra-domain.com (not https://).
3

Assign users or groups

Assign the users or groups that should access Archestra.
4

Copy credentials

From the app’s Sign On tab, copy the Client ID and Client Secret.
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.
Alternative: Manual App IntegrationIf your tenant doesn’t have access to the OIN tile:
  1. Go to Applications > Create App Integration > OIDC - OpenID Connect > Web Application
  2. Sign-in redirect URI: https://your-archestra-domain.com/api/auth/sso/callback/Okta (the Okta segment is case-sensitive)
  3. Sign-out redirect URI: https://your-archestra-domain.com/auth/sign-in
  4. Set Login initiated by to Either Okta or App
  5. Set Login flow to Redirect to app to initiate login (OIDC Compliant)
  6. Set Initiate login URI to https://your-archestra-domain.com/auth/sso/Okta
  7. 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.
FieldValue
IssuerYour Okta org issuer, e.g. https://your-org.okta.com
Client IDFrom Okta’s Sign On tab
Client SecretFrom Okta’s Sign On tab
Discovery EndpointLeave empty — auto-derived from issuer
Click Create Provider, then test with a private browser window.

Part 3 — Roles & Team Sync

For Okta, the most common pattern is mapping the groups 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:
{{#each groups}}{{this}},{{/each}}
See Role Mapping and Team Sync above for the full configuration reference.

Part 4 — Token Exchange for Downstream MCP Tools (Optional)

Token exchange uses the same Okta application as SSO. You’ll need to:
  1. Generate a public/private keypair and register the public key under Public Keys on the Okta app
  2. Note the Key ID (kid)
  3. Enable the urn:ietf:params:oauth:grant-type:token-exchange grant type on the app
  4. Configure the authorization server policies to allow the exchange
Then reopen the Okta provider in Settings > Identity Providers and expand Enterprise-Managed Credentials:
FieldValue
Exchange Token Endpointhttps://your-org.okta.com/oauth2/v1/token
Exchange Client AuthenticationPrivate key JWT
Signing Key IDThe kid of the registered public key
User Token To ExchangeID token
Follow Okta’s AI agent token exchange guide for the full Admin Console steps.

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_proof error — 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 Okta segment.

Troubleshooting

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
The IdP didn’t return the required user attributes. For GitHub, the user must have a public email set in their GitHub profile.
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.
The SAML assertion didn’t contain the required user attributes. Configure your IdP to send:
  • NameID in emailAddress format
  • email attribute
  • firstName and lastName attributes (recommended)
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)

Build docs developers (and LLMs) love