and/or conditions with four comparison operators.
Authorization approaches vary by Orchestrator mode. The declarative rules documented on this page (
allowAll, rules array, operators) apply to HTTP Proxy, OIDC Provider, and SAML Provider modes. These three modes also support programmatic authorization via Service Extensions (isAuthorizedSE) as an alternative or supplement to declarative rules. AI Identity Gateway uses OPA (Rego) policies for per-tool authorization instead of declarative rules. LDAP Provider handles authorization entirely through Service Extensions — there is no declarative authorization layer. See Per-Mode Authorization Differences for a full comparison.How Authorization Works
Authorization in the Maverics Orchestrator follows a pipeline that evaluates after authentication completes. Understanding this pipeline helps you design effective authorization rules and troubleshoot access issues.- Authentication completes — The user’s identity is established through the configured identity provider(s). At this point, the Orchestrator has the user’s claims and attributes available for evaluation.
- Orchestrator evaluates authorization rules — The Orchestrator checks the authorization configuration for the matched application or policy location. If
allowAll: trueis set, no further evaluation occurs and the user is authorized. - Rules reference connector attributes — Each rule operand uses template syntax
{{ connector.attribute }}to reference claims from named connectors (e.g.,{{ azure.groups }},{{ ldap.role }}). The Orchestrator resolves these templates against the authenticated user’s attributes. - Rules are aggregated — Individual rule results are combined according to
rulesAggregationMethod. With"and", all rules must pass. With"or", any single rule passing is sufficient. - Service Extension runs (if configured) — If
isAuthorizedSEis configured, the Service Extension executes after declarative rule evaluation and can override or supplement the result. - Access decision is applied — If authorized, the request proceeds to the application. If denied, the behavior depends on the mode (see Enforcement Behavior below).
Simple Authorization
Allow all authenticated users access to a resource:allowAll is set to true, any user who has successfully authenticated through the configured identity providers is granted access. No further rule evaluation occurs.
Rule-Based Authorization
Rules are defined as an array of conditions. Each rule contains either anand block (all conditions must match) or an or block (any condition may match).
rulesAggregationMethod: "and").
Operators
| Operator | Description | Operands |
|---|---|---|
equals | Exact string match | Exactly 2 operands |
notEquals | Inverse exact match | Exactly 2 operands |
contains | Substring or membership check | Exactly 2 operands |
notContains | Inverse substring/membership check | Exactly 2 operands |
Operand Formats
Each operator takes exactly two operands. Operands can be:- Template variable:
{{ connector.attribute }}— references a claim from a named connector (e.g.,{{ azure.groups }},{{ ldap.role }}) - HTTP request:
{{ http.request.method }}— references the HTTP request method - Literal string:
"admin"— a static comparison value
Rule Aggregation
TherulesAggregationMethod field controls how top-level rules in the array are combined:
"and"— All rules must pass for the user to be authorized"or"— Any single rule passing is sufficient for authorization
Example
A complete policy configuration with nested authorization rules:maverics.yaml
Enforcement Behavior
What happens when authorization denies a request depends on the Orchestrator mode. Understanding denial behavior helps you design appropriate error handling and user experiences.-
HTTP Proxy mode — Returns a 403 Forbidden response to the client. The request never reaches the upstream application. If
unauthorizedPageis configured on the policy, the user is redirected to that URL instead of receiving a 403. Alternatively,handleUnauthorizedSEcan provide custom denial handling via a Service Extension. - OIDC Provider mode — Authorization rules are evaluated at the policy level. Denial prevents token issuance — the user receives an error response at the authorization endpoint. The client application’s redirect URI is not called with valid tokens.
- SAML Provider mode — Similar to OIDC — denial prevents SAML assertion generation. The user receives an error at the SSO endpoint. The service provider’s assertion consumer service URL does not receive a valid assertion.
- AI Identity Gateway — OPA policies evaluate per-tool invocations. Denial returns an error to the AI agent for that specific tool call. Other tools the agent is authorized to use remain accessible.
-
LDAP Provider — Authorization is typically handled within Service Extensions rather than declarative rules. The
authenticateSEcontrols bind success/failure, and thesearchSEcontrols which entries are returned. There is no separate declarative authorization layer.
When
allowAll: true is set, no rule evaluation occurs and all authenticated users are authorized. This is the simplest configuration and is useful for applications where authentication alone is sufficient access control.Per-Mode Authorization Differences
Authorization works differently across modes. This table summarizes the key differences to help you configure authorization correctly for your deployment pattern.| Aspect | HTTP Proxy | OIDC Provider | SAML Provider | LDAP Provider | AI Identity Gateway |
|---|---|---|---|---|---|
| Rule location | apps[].policies[].authorization | apps[].authorization | apps[].authorization | Service Extension (no declarative rules) | apps[].authorization.inbound.opa |
| Granularity | Location-based (per URL path) | Per-app (per OIDC client) | Per-app (per SAML SP) | Per-operation (SE-controlled) | Per-tool invocation |
| Dynamic checks | isAuthorizedSE available | isAuthorizedSE available | isAuthorizedSE available | All logic is SE-driven | OPA policies with rich input context |
| External policy engine | Declarative rules or SE | Declarative rules or SE | Declarative rules or SE | SE only | OPA (Rego-based policies) |
| Denial behavior | 403 Forbidden or redirect | Error at authorization endpoint | Error at SSO endpoint | Bind failure or empty search results | Error on specific tool call |
Service Extension Hooks
TheisAuthorizedSE Service Extension hook provides programmatic authorization control beyond what declarative rules can express. It is available in HTTP Proxy, OIDC Provider, and SAML Provider modes.
How it works:
- Runs after declarative rule evaluation (if rules are also configured)
- Can override or supplement declarative rule results
- Has access to the full Orchestrator API through the
apiparameter — including sessions, caches, connectors, secret providers, and logging - Receives the HTTP request context, enabling authorization decisions based on request path, headers, method, or body content
Authorization Patterns
The following examples demonstrate common real-world authorization configurations.Role-Based Access Control (RBAC)
Check user group membership from Azure AD to grant access based on role. This is the most common authorization pattern.Multi-Source Authorization
Combine attributes from multiple identity connectors to make authorization decisions. This is useful when identity data is spread across multiple systems.Path-Based Access Tiers (HTTP Proxy)
Apply different authorization rules to different URL paths within the same application. This enables tiered access where public areas require only authentication while sensitive areas require specific roles.Related Pages
Apps & Routes
Application configuration including authentication policies and authorization rules
Identity Fabric
Identity connector configuration referenced in authorization rule operands
Service Extensions
Custom authorization logic via the isAuthorizedSE hook and the SE SDK
Sessions
Session management that works alongside authorization decisions
How Auth Works
Understand the full authentication and authorization flow
Choosing a Mode
Compare all 5 Orchestrator modes and their authorization models