Skip to main content
Register SAML Service Providers with the Orchestrator’s built-in SAML Provider. The Orchestrator handles SAML assertion generation, attribute mapping, and protocol translation — allowing you to federate enterprise applications that depend on SAML while connecting to modern or legacy upstream identity providers.
Console terminology: In the Maverics Console, the combination of applications, policies, headers, and connector bindings is managed through User Flows. In YAML, these elements are configured directly within each app’s configuration block under apps[].policies[].

Overview

SAML apps represent Service Providers registered with the Orchestrator’s SAML Provider mode. When a Service Provider sends a SAML authentication request, the Orchestrator authenticates the user against a configured identity provider, generates a SAML assertion with the mapped attributes, and returns it to the SP’s Assertion Consumer Service URL. This requires samlProvider to be configured in the deployment.

How It Works

The SAML Provider authentication flow follows these steps:
  1. SP-initiated request — A user accesses a SAML service provider. The SP generates a SAML AuthnRequest and redirects the user to the Orchestrator’s SSO endpoint.
  2. Upstream authentication — The Orchestrator routes the user to the configured upstream identity provider for authentication. The upstream IdP can use any protocol (OIDC, SAML, LDAP) — the Orchestrator handles protocol translation.
  3. Attribute enrichment — After authentication, the Orchestrator loads additional attributes from configured attribute providers and merges them with the authenticated identity.
  4. Assertion generation — The Orchestrator generates a signed SAML assertion containing the NameID and mapped claims from the authenticated identity and enriched attributes.
  5. SP receives assertion — The SAML response (containing the signed assertion) is POSTed to the SP’s assertion consumer service URL. The SP validates the signature and establishes a session.
  6. IdP-initiated flow (optional) — Users can also start from the Orchestrator’s IdP-initiated login URL, which generates an assertion and sends it directly to the SP without an AuthnRequest.

Use Cases

  • SAML federation for enterprise apps — register Service Providers like Salesforce, ServiceNow, and Workday so the Orchestrator acts as their SAML Identity Provider
  • Protocol translation (OIDC-to-SAML) — authenticate users with an OIDC provider upstream while issuing SAML assertions downstream to applications that only support SAML
  • IdP migration for SAML-dependent apps — migrate applications from a legacy SAML IdP to a modern identity provider without reconfiguring each Service Provider
  • Attribute mapping and enrichment — map and transform attributes from upstream identity providers into the SAML assertion format each Service Provider expects

Key Concepts

Protocol Translation

The Orchestrator can translate between protocols — an upstream OIDC identity provider can feed a downstream SAML service provider, or vice versa. The service provider only sees SAML; the identity provider only sees OIDC. This makes IdP migration possible without changing SP configurations.

Assertion Signing

By default, both the SAML assertion and the SAML response are signed using the provider’s signing material. Individual apps can override signing behavior (e.g., disable assertion signing for SPs that don’t verify it) or use per-app signing keys.

NameID and Claims

The NameID identifies the authenticated subject in the SAML assertion. Claims mapping uses the same connector.attribute format as OIDC, translating connector attributes into SAML assertion attributes.

Request Verification

When service providers sign their AuthnRequest messages, the Orchestrator verifies the signature using the SP’s certificate. This can be skipped for SPs that don’t sign requests.

Setup

1

Navigate to Applications

Go to Applications in the sidebar and click Create. Select SAML-based from the application type list.
2

Set the application name

Enter a Name to identify this SAML application.
3

Configure entity IDs

Enter the Default Entity ID for the Service Provider. Click Entity ID to add additional entity IDs if the SP uses multiple identifiers. Each entity ID entry has an identifier and a default flag.
4

Configure consumer service URLs

Enter the Default URL for the Assertion Consumer Service (ACS). Click URL to add additional ACS URLs. Each entry has a URL and a default flag.
5

Set the logout URL (optional)

Enter the Logout URL where SAML logout responses will be sent.
6

Set the unauthorized page (optional)

Enter an Unauthorized Page URL where the Orchestrator redirects users who are not authorized to access the requested resource.
7

Set the response duration (optional)

Enter the Duration in seconds for which SAML responses are valid. Defaults to five minutes (300 seconds).
8

Configure NameID format (optional)

Enter the Name ID Format (e.g., urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress). The NameID attribute mapping is configured in the User Flow.
9

Configure signing

Select the Signing Options to control how SAML responses are signed. Choose Use deployment settings to inherit from the SAML Provider deployment configuration, or override with per-app signing settings.
10

Configure request verification (optional)

Upload a Certificate File (PEM format) to verify the signatures of incoming SAML requests from the Service Provider.
11

Configure IdP-initiated login (optional)

Enter a Login URL — the endpoint users visit to initiate the IdP-initiated login flow (e.g., https://maverics.example.com/login-app). Optionally enter a Relay State URL — the landing page for the user after authentication.
12

Save

Click Save to create the SAML application.

Signed and Unsigned Assertions

By default, the SAML Provider signs both the SAML assertion and the SAML response using the signing material configured in samlProvider.signature. Some service providers require unsigned assertions or unsigned responses depending on their verification capabilities. Controlling signature behavior at the provider level:
Provider-level signing is configured in the Maverics Console under Deployment Settings in the SAML Provider section. The Console UI provides a Signing Option dropdown with options for “Response and Assertion” (default), “Response Only”, and “Assertion Only”.To override the default signing flags directly using disableSignedAssertion or disableSignedResponse, use the Configuration tab.
Controlling signature behavior per app: Individual apps can override the provider defaults. For example, if the provider signs both but a specific SP needs unsigned assertions:
In the Console UI, per-app signing is configured during application setup. Select the Signing Options and choose to override the deployment-level settings. For fine-grained control over disableSignedAssertion and disableSignedResponse flags, use the Configuration tab.
Request verification from the SP side: When a service provider signs its AuthnRequest messages, the Orchestrator verifies the signature using the SP’s certificate. If the SP does not sign requests, set skipVerification: true:
In the Console UI, request verification is configured during application setup. Upload the SP’s Certificate File (PEM format) to verify signed AuthnRequest messages. If the SP does not sign requests, leave the certificate field empty and verification will be skipped.

IdP-Initiated Login

IdP-initiated login allows users to start a SAML flow from the identity provider rather than from the service provider. When configured, the Orchestrator exposes a login URL that generates a SAML response and sends it directly to the SP’s assertion consumer service.
KeyTypeRequiredDefaultDescription
idpInitiatedLogin.loginURLstringYesURL that triggers the IdP-initiated flow. Users or portals navigate to this URL to start the login.
idpInitiatedLogin.relayStateURLstringNoURL included as the SAML RelayState parameter. The SP redirects the user here after consuming the assertion.
idpInitiatedLogin.buildRelayStateSEobjectNoService Extension for dynamically building the relay state value.
Example:
In the Console UI, IdP-initiated login is configured during application setup. Enter a Login URL — the endpoint users visit to start the IdP-initiated flow (e.g., https://auth.example.com/saml/sso/portal-app). Optionally enter a Relay State URL — the landing page for the user after authentication.
When a user navigates to https://auth.example.com/saml/sso/portal-app, the Orchestrator authenticates them (if not already authenticated), builds a SAML assertion, and POSTs it to the app’s assertion consumer service URL with the relay state set to https://portal.example.com/.

Assertion Encryption

SAML assertion encryption protects assertion content during transit by encrypting the assertion XML before embedding it in the SAML response. The SP decrypts the assertion using its private key.
KeyTypeRequiredDefaultDescription
encryption.keyEncryptMethodstringYesXML encryption method for encrypting the symmetric key (e.g., http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p).
encryption.dataEncryptMethodstringYesXML encryption method for encrypting the assertion data (e.g., http://www.w3.org/2001/04/xmlenc#aes256-cbc).
encryption.digestMethodstringNoDigest method for key encryption (e.g., http://www.w3.org/2001/04/xmlenc#sha256).
encryption.certificatestringYesPEM-encoded SP certificate (public key) used to encrypt the assertion. The SP holds the corresponding private key for decryption.
Example:
Assertion encryption settings are configured per-app via YAML only. The Console UI does not currently expose encryption fields. See the Configuration tab for the full reference.

Troubleshooting

Symptoms: The SP rejects the SAML response with “invalid signature”, “signature verification failed”, or “unable to validate assertion”.Causes:
  • The signing certificate configured in the Orchestrator (samlProvider.signature.certificate) does not match the certificate the SP has on file.
  • The signing certificate has expired.
  • A signing algorithm mismatch between the Orchestrator and the SP’s expected algorithm.
Resolution:
  1. Export the samlProvider.signature.certificate and provide it to the SP via metadata exchange or manual upload.
  2. Verify the certificate is not expired by checking its Not After date.
  3. If using per-app signature overrides, ensure the app-level certificate is the one provided to the SP.
Symptoms: The SP accepts the assertion but cannot identify the user, or rejects the assertion with “invalid NameID format” or “unrecognized subject”.Causes:
  • The nameID.format does not match what the SP expects (e.g., the SP expects emailAddress but the Orchestrator sends unspecified).
  • The nameID.attrMapping references an attribute that is empty or not returned by the upstream IdP.
Resolution:
  1. Check the SP’s metadata or documentation for the required NameID format.
  2. Set nameID.format to the matching URN (e.g., urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress).
  3. Verify that nameID.attrMapping points to an attribute that is populated for all users (e.g., upstream-idp.email).
Symptoms: The SP receives the assertion but expected attributes (e.g., email, groups, department) are empty or absent.Causes:
  • The claimsMapping references a wrong connector name or an attribute that does not exist on the upstream identity.
  • Attribute providers (attrProviders) are not configured, so enrichment attributes are not loaded.
  • The upstream IdP does not return the expected claims in its response.
Resolution:
  1. Verify that connector names in claimsMapping match the connectors[].name values exactly.
  2. If enrichment is needed, confirm attrProviders entries are configured with the correct connector names and usernameMapping.
  3. Test the upstream IdP directly to confirm it returns the expected attributes.
Symptoms: The login flow fails immediately after the SP redirect, with an error about request verification or signature validation.Causes:
  • The SP signs its AuthnRequest, but the Orchestrator does not have the SP’s signing certificate for verification.
  • The SP’s certificate in requestVerification.certificate is expired or does not match the key the SP uses.
Resolution:
  1. If the SP signs its AuthnRequests, provide the SP’s signing certificate in requestVerification.certificate.
  2. If the SP does not sign requests, set requestVerification.skipVerification: true.
  3. If the SP recently rotated its signing key, update the certificate in the app configuration.
Symptoms: Navigating to the IdP-initiated login URL returns an error about an unknown or unregistered service provider.Causes:
  • The idpInitiatedLogin.loginURL path does not match any configured app.
  • The app’s entityIDs are missing or do not match what the SP expects.
Resolution:
  1. Verify the login URL matches the configured app name in the URL path (e.g., /saml/sso/my-app for an app named my-app).
  2. Confirm that entityIDs contains at least one entry with default: true.
  3. Check that the consumerServiceURLs are correctly configured for the target SP.
Symptoms: The SP cannot decrypt the assertion, reporting errors like “unable to decrypt”, “decryption failed”, or “invalid key”.Causes:
  • The encryption.certificate is not the SP’s encryption certificate (it might be the signing cert instead).
  • An algorithm mismatch — keyEncryptMethod or dataEncryptMethod does not match the SP’s supported algorithms.
Resolution:
  1. Verify that encryption.certificate is the SP’s public encryption certificate (not its signing certificate — these are often different).
  2. Confirm that keyEncryptMethod and dataEncryptMethod match the algorithms the SP supports (check SP metadata or documentation).
  3. If the SP specifies a digestMethod, ensure it is also set in the app configuration.