Skip to main content
Applications and routes define the protected resources the Maverics Orchestrator manages. Each application specifies what to protect, how to authenticate users, and what identity information to pass to backend services. Routes determine which incoming traffic matches each application, and policies enforce authentication and authorization at specific URL paths.
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[].

How It Works

Applications are defined under the apps top-level key as an array of application definitions. Each app has a name, a type, and type-specific configuration. The five app types serve different protocols:
  • proxy — HTTP reverse proxy that forwards requests to a backend after applying auth policies
  • oidc — OpenID Connect client registered with the Orchestrator’s OIDC Provider
  • saml — SAML Service Provider registered with the Orchestrator’s SAML Provider
  • mcpProxy — MCP identity proxy for upstream MCP servers
  • mcpBridge — REST-to-MCP translation using OpenAPI specifications
For proxy apps, route patterns match incoming traffic by hostname, path, or both. Policies bind to specific URL locations within an app and define which identity connectors handle authentication. Headers inject identity attributes into upstream requests, enabling legacy applications to receive user information without supporting modern authentication protocols.

Key Concepts

App Types

Each app type serves a specific protocol and use case:
  • proxy is the most common type — an identity-aware reverse proxy that protects backend applications without code modification. Use this for legacy apps, internal portals, and any HTTP application that needs authentication.
  • oidc registers an OIDC client with the Orchestrator’s built-in OIDC Provider. Use this when downstream applications support OIDC natively and you want the Orchestrator to act as the authorization server.
  • saml registers a SAML Service Provider with the Orchestrator’s SAML Provider. Use this for applications that require SAML assertions.
  • MCP Proxy proxies MCP (Model Context Protocol) requests with identity injection. Use this for AI agents that need authenticated access to MCP servers.
  • MCP Bridge translates REST APIs into MCP tools using an OpenAPI specification. Use this to expose existing APIs as MCP tools for AI agents.

Route Patterns and URL Matching

Route patterns determine which incoming requests an app handles. Patterns support three formats:
  • "example.com" — matches all requests to this hostname
  • "/path" — matches requests to this path on any hostname
  • "example.com/path" — matches requests to this hostname and path

Authentication Policies and IDP Binding

Policies bind identity connectors to specific URL locations within an app. Each policy specifies which connectors handle authentication for that location, whether unauthenticated access is allowed, and how long authorization decisions are cached.

Header Injection

Headers inject identity attributes into upstream requests using template syntax (e.g., {{ azure.email }}). This enables legacy applications that expect headers like SM_USER or X-Remote-User to receive authenticated user information without code changes.

Attribute Providers

After authentication, attribute providers load additional user attributes from secondary connectors (like LDAP directories or database lookups). These enriched attributes are then available for header injection and authorization decisions.

Configuration Reference

Common App Fields

Every application requires a name and type.
KeyTypeRequiredDescription
apps[].namestringYesUnique application identifier
apps[].typestringYesApplication type: proxy, oidc, saml, mcpProxy, or mcpBridge

App Type: proxy

The proxy type is the most common application type. It acts as an identity-aware reverse proxy, forwarding requests to a backend after applying authentication and authorization policies.
KeyTypeDefaultRequiredDescription
upstreamstringYesBackend URL to forward requests to (e.g., https://backend:8080)
routePatternsarrayYesURL patterns to match — supports hostnames, paths, or hostname/path combinations
preserveHostbooleanfalseNoPreserve the original Host header when proxying to the upstream
tlsstringNoTLS profile name for the upstream connection
headersarrayNoHeaders to inject on proxied requests (see Header Injection below)
policiesarrayNoLocation-based authentication and authorization policies (see Authentication Policies below)
attrProvidersarrayNoAttribute providers for post-authentication attribute loading from additional connectors
unauthorizedPagestringNoDefault redirect URL for unauthorized requests
modifyRequestSEobjectNoService Extension to modify the request before proxying
modifyResponseSEobjectNoService Extension to modify the response before returning to the client
handleUnauthorizedSE is available as an alternative to unauthorizedPage for custom 403 handling. These two fields are mutually exclusive.

App Type: oidc

The OIDC app type defines an OpenID Connect client registered with the Orchestrator’s OIDC Provider. Key fields are listed below; full documentation is available on the OIDC Provider mode reference page.
KeyTypeRequiredDescription
clientIDstringYesUnique OIDC client identifier
publicbooleanNoPublic client — does not require a client secret
credentials.secretsarrayNoClient secrets for authentication (array of secret references)
grantTypesarrayNoAllowed OAuth grant types: authorization_code, client_credentials, refresh_token, password, urn:ietf:params:oauth:grant-type:token-exchange
redirectURLsarrayNoAllowed redirect URLs for authorization code flow
claimsMappingobjectNoMap connector attributes to OIDC claims (e.g., email: "azure.preferred_username")
accessToken.typestringNoToken format: "jwt" or "opaque"
accessToken.lifetimeSecondsintegerNoAccess token lifetime in seconds
refreshToken.allowOfflineAccessbooleanNoEnable refresh tokens for this client
cors.allowedOriginsarrayNoCORS allowed origins for this client
Deprecated: clientSecret — use credentials.secrets instead for client authentication.

App Type: saml

The SAML app type defines a SAML Service Provider registered with the Orchestrator’s SAML Provider. Requires samlProvider to be configured. Key fields are listed below; full documentation is available on the SAML Provider mode reference page.
KeyTypeRequiredDescription
entityIDsarrayYesSP entity IDs — each entry has identifier (string) and default (boolean) fields
consumerServiceURLsarrayYesAssertion Consumer Service URLs — each entry has url (string) and default (boolean) fields
logoutServiceURLstringNoSP single logout URL
nameID.formatstringNoNameID format (e.g., urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress)
nameID.attrMappingstringNoNameID value mapping using template syntax (e.g., {{ azure.email }})
claimsMappingobjectNoMap connector attributes to SAML assertion attributes
signatureobjectNoPer-app signing configuration — overrides SAML Provider defaults
encryptionobjectNoSAML assertion encryption configuration
Deprecated fields: audience — use entityIDs; consumerServiceURL — use consumerServiceURLs; nameIDFormat — use nameID.format.

App Type: mcpProxy

The MCP Proxy app type proxies MCP (Model Context Protocol) requests to an upstream MCP server with identity injection. Requires the MCP Provider to be configured. Key fields are listed below; full documentation is available on the AI Identity Gateway mode reference page.
KeyTypeRequiredDescription
toolNamespace.namestringNoTool namespace prefix — prepended to tool names from the upstream server
upstream.transportstringYesTransport type: "stdio" for subprocess commands or "stream" for HTTP streaming
upstream.stdio.commandstringConditionalCommand to execute for stdio transport (required when transport is stdio)
upstream.stream.urlstringConditionalUpstream MCP server URL for stream transport (required when transport is stream)
authorization.inbound.opaobjectNoOPA (Open Policy Agent) policy for inbound request authorization
authorization.outbound.typestringNoOutbound authorization type: "tokenExchange" for delegation tokens or "unprotected" for no auth

App Type: mcpBridge

The MCP Bridge app type translates REST APIs into MCP tools using an OpenAPI specification. Requires the MCP Provider to be configured. Key fields are listed below; full documentation is available on the AI Identity Gateway mode reference page.
KeyTypeRequiredDescription
modestringYesBridge mode — only "openapi" is supported
toolNamespace.namestringNoTool namespace prefix — prepended to generated tool names
openapi.spec.uristringConditionalFile URI to the OpenAPI spec (e.g., file:///path/to/openapi.yaml); mutually exclusive with openapi.spec.data
openapi.spec.datastringConditionalInline OpenAPI specification content; mutually exclusive with openapi.spec.uri
openapi.baseURLstringNoOverride the server URL from the OpenAPI spec
authorizationobjectNoAuthorization configuration — same structure as MCP Proxy (inbound.opa and outbound.tokenExchange)

Authentication Policies

Policies control authentication and authorization for matched requests. They are shared across proxy, oidc, and saml app types.
KeyTypeDefaultDescription
policies[].locationstringResource path this policy applies to (required, must be unique per app)
policies[].authentication.idpsarrayConnector names for authentication — must match connectors[].name entries
policies[].authentication.allowUnauthenticatedbooleanfalseAllow unauthenticated access to this location
policies[].decision.lifetimestringDecision cache TTL — how long authorization decisions are cached (duration string)

Authorization Rules

Authorization rules determine whether an authenticated user is allowed to access a resource. Rules support nested and/or conditions with four comparison operators. For the complete authorization rules reference — operators, operand formats, and rule aggregation — see Authorization.

Header Injection

Headers inject identity attributes into upstream requests, allowing legacy applications to receive user information without supporting modern authentication protocols. Headers are defined as an array of objects at the app level or policy level.
KeyTypeDescription
headers[].namestringHTTP header name (e.g., X-Remote-User, SM_USER)
headers[].valuestringValue using {{ connector.claim }} template syntax (e.g., {{ azure.email }})
Alternatively, headers[].createHeaderSE can be used instead of name/value for dynamic header generation via a Service Extension. The name/value pair and createHeaderSE are mutually exclusive.

Example

Console UI documentation is coming soon. This section will walk you through configuring this component using the Maverics Console’s visual interface, including step-by-step screenshots and field descriptions.