Secure AI agent access to your APIs and MCP tools with identity, authentication, and authorization on every call. The Maverics Orchestrator lets you control which agents can access which tools, trace every action back to the human user who authorized it, and audit everything — so AI agents operate with the same identity governance as your human users.The Orchestrator provides two approaches for securing AI agent access through the Model Context Protocol (MCP), an open standard that lets AI agents discover and invoke tools in a structured, protocol-driven way. Each approach adds identity, authentication, and authorization to MCP connections in a different way, depending on your architecture and what you already have in place.Whether you have existing REST APIs you want to open up to AI agents or existing MCP servers that need identity awareness — there is an approach that fits your situation.
You have existing REST APIs you want AI agents to access
Translates REST APIs into MCP tools automatically — agents discover and invoke tools via MCP while the Orchestrator handles the REST translation behind the scenes
Protect MCP Servers
You have existing MCP servers that need identity
Proxies MCP connections with identity injection — the Orchestrator sits between agents and your MCP servers, adding authentication and authorization to every tool invocation
Not sure which approach to start with? If you have REST APIs today and want to
expose them to AI agents, start with MCP Bridge. If you already have MCP
servers running, start with MCP Proxy.
AI agents are not humans — but they still need identity. When an AI agent accesses a tool, reads data, or performs an action on behalf of a user, something needs to answer these questions: Who is this agent? Who authorized it to act? What is it allowed to do? And what did it actually do?Agent identity addresses this by adding three capabilities that traditional service accounts lack:
Delegation chains — Every agent action traces back to the human user who authorized it. When Agent X accesses a tool, the system knows that Alice delegated authority to Agent X and that Alice’s permissions (not just the agent’s) determine what the agent can do. This is implemented through OAuth 2.0 token exchange, which supports two modes. Delegation (default) produces a token with an act claim that identifies both the user and the agent acting on their behalf, giving downstream services full visibility for auditability. Impersonation produces a token that fully assumes the user’s identity, with no trace of agent involvement — use this when downstream services do not support the actor claim pattern. See the MCP Bridge and MCP Proxy references for configuration details.
Dynamic scopes — Agent permissions can change based on context. An agent might have broad scopes for one task and narrow scopes for another, depending on what the delegating user authorized. Scopes are named permissions (like read:orders, write:invoices, or admin:users) that your identity provider issues in the agent’s token.
Action-level audit — Every tool invocation is logged with the full identity context: which agent, which user, which tool, what parameters, and what result. This gives you a complete audit trail that satisfies compliance requirements and enables forensic analysis when something goes wrong.
The Maverics Orchestrator works with your existing identity provider to manage agent identity. You register agents in your identity provider (just like you register applications), configure their scopes and permissions, and the Orchestrator enforces those permissions at runtime — whether you are using MCP Bridge or MCP Proxy mode.
The AI Identity Gateway involves two orchestrator deployments working together:
Auth Provider Orchestrator — A separate orchestrator deployment running as an OIDC Provider (authorization server). It handles agent authentication, token issuance, and token exchange (minting short-lived, scoped delegation tokens for each tool invocation).
AI Identity Gateway Orchestrator — Runs the MCP Provider with MCP Bridge and/or MCP Proxy apps. It handles MCP transport, tool routing, inbound authorization (OPA policies), and upstream forwarding.
These can be the same orchestrator instance for simpler deployments, but are typically separate deployments in production.Every tool invocation gets its own token. When an agent calls a tool, the AI Identity Gateway Orchestrator does not reuse the agent’s existing token or forward it to the upstream service. Instead, it requests a token exchange from the Auth Provider Orchestrator — trading the agent’s token for a brand-new token specific to that single tool call. Each token carries only the scopes that tool needs (like employee:List for listing employees) and expires in seconds (typically a ttl of 5s). A different tool call a moment later gets a completely different token with different scopes.
When an agent first connects to the AI Identity Gateway, it goes through a standards-based OAuth discovery flow:
The agent connects to the AI Identity Gateway Orchestrator’s MCP endpoint.
The gateway returns a 401 along with a pointer to its protected resource metadata endpoint.
The gateway exposes /.well-known/oauth-protected-resource (per RFC 9470), which returns protected resource metadata including the list of authorization server(s) the agent can authenticate against.
The agent reads the metadata, authenticates against the Auth Provider Orchestrator (one of the listed authorization servers), and obtains a token.
The agent returns to the gateway with a valid token. The gateway validates the token and proceeds with tool discovery and invocation.
This flow means agents do not need to be pre-configured with authorization server URLs — they discover them dynamically from the gateway’s protected resource metadata.Traditional approaches give agents broad, long-lived tokens that accumulate permissions. The Orchestrator takes the opposite approach: every tool invocation gets a fresh, minimal-privilege token that expires in seconds. No single token ever carries more permissions than a single tool needs, and no token lives longer than it takes to complete the call.
The OIDC Provider you configure here is the Orchestrator’s own token minting infrastructure. It does not just validate tokens from an external provider — it issues short-lived, narrowly scoped tokens for each tool invocation. You configure it with token exchange grant types so it can mint delegation tokens that carry both the agent’s identity and the delegating user’s identity.
Console UI
Configuration
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.
Agent registration guidance in Maverics Console
This configuration is for the Auth Provider Orchestrator deployment — the separate orchestrator instance that runs the OIDC Provider. It is not the same deployment as the AI Identity Gateway Orchestrator that runs the MCP Provider.Configure the oidcProvider and register the AI Identity Gateway as an OIDC application with token exchange grants and custom scopes for MCP tools.
The OIDC Provider issues tokens that the AI Identity Gateway validates when agents connect. The jwks section defines the signing keys used to sign tokens — the gateway fetches the public key from the jwks endpoint to verify token signatures.
Treat agent credentials with the same care as user passwords. Store the
client secret in a secret provider
— never in source code, configuration files, or environment variables that
might be logged or exposed.
2
Register the gateway client with token exchange
Register the AI Identity Gateway as an OIDC application that can perform token exchange. This client uses the urn:ietf:params:oauth:grant-type:token-exchange grant type to exchange a user’s token for a delegation token scoped to specific downstream APIs.
Console UI
Configuration
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.
Agent scope configuration in Maverics Console
Define the gateway client in the apps section with grantTypes that include both client_credentials and token-exchange. Configure customScopes for the MCP tools the gateway will broker access to.
The grantTypes array enables both client_credentials (for machine-to-machine auth) and urn:ietf:params:oauth:grant-type:token-exchange (RFC 8693 token exchange for delegation). The allowedAudiences list restricts which downstream services the gateway can request tokens for. The customScopes define the per-tool permissions that can be included in exchanged tokens.Administrators can also configure token minting policies on the OIDC Provider app (authorization.tokenMinting.accessToken.policies) to apply OPA-based governance over which tokens get issued during exchange. This provides a second control point beyond inbound OPA policies — inbound policies control which tool calls are allowed, while token minting policies control which tokens are issued. See the OIDC Provider reference for configuration details.
Each tool in the tools array gets its own ttl and scopes, and each tool invocation triggers a separate token exchange operation. This is not a single token with all scopes — every tool call gets its own freshly minted token.For example, when an agent calls listEmployees, the Orchestrator mints a token with only employee:List scope, valid for 5 seconds. When the same agent calls createEmployee a moment later, the Orchestrator performs a completely separate token exchange, minting a different token with only employee:Create scope, also valid for 5 seconds. The first token has already expired by the time the second call completes.This means no token ever accumulates permissions across tools, and no token outlives its purpose. The ttl and scopes fields in the YAML above are not just configuration — they define the security boundary for each individual tool invocation.
Document your scope naming convention and share it with your team. Consistent
scope names (like always using the action:resource pattern) make policies
easier to write, review, and audit.
If an agent cannot authenticate with its client credentials, check the
following:
Verify the client ID and client secret are correct. Client secrets are
often only shown once when created — if you have lost the secret, generate
a new one in your identity provider.
Check that the agent’s application registration is active and has not
been disabled or deleted in the identity provider.
Confirm the grant type is set to “client_credentials” in the agent’s
application registration.
Verify that the token endpoint URL in the Orchestrator’s identity
connector matches your identity provider’s actual token endpoint.
If the agent’s credentials have an expiration date, check whether they
have expired.
Delegation chain not resolving
If the Orchestrator cannot resolve the delegation chain (the agent
authenticates but the user context is missing):
Verify that the delegated token includes the act (actor) claim or
whatever custom claim your identity provider uses for delegation.
Check that the token exchange was performed correctly — the original
user token must be exchanged for a delegated agent token, not simply
passed through.
Verify that the gateway client’s grantTypes includes
urn:ietf:params:oauth:grant-type:token-exchange.
If your identity provider does not support the standard OAuth 2.0 token
exchange, check the Orchestrator’s identity connector documentation for
provider-specific delegation configuration.
Enable debug logging in the Orchestrator to see the full token contents
and identify which claims are present or missing.
Token exchange fails with invalid audience
If the token exchange succeeds but the downstream service rejects the
exchanged token:
Verify the allowedAudiences in the gateway client includes the audience
value used in the MCP app’s outbound.tokenExchange.audience.
Check that the downstream service’s expected audience matches the
audience value in the token exchange configuration.
Review the exchanged token’s claims (using a JWT debugger) to confirm
the aud claim contains the expected value.
Detailed configuration reference for all AI Identity Gateway modes and settings
Security Guides
TLS, secrets management, authorization policies, and compliance guides
Authentication Guides
SSO, OIDC, SAML federation, and identity provider migration guides
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Maverics Documentation","colors":{"primary":"#1DA1DC","light":"#2FCAFF","dark":"#0086C0"},"logo":{"light":"https://mintcdn.com/strataidentity/GnMIwAgmQ7Rnxm8R/logo/light.svg?fit=max\u0026auto=format\u0026n=GnMIwAgmQ7Rnxm8R\u0026q=85\u0026s=f75039b8474c2403c381ef74fdbee428","dark":"https://mintcdn.com/strataidentity/GnMIwAgmQ7Rnxm8R/logo/dark.svg?fit=max\u0026auto=format\u0026n=GnMIwAgmQ7Rnxm8R\u0026q=85\u0026s=c18e3db0543ce5426f86c06a48cfceba","href":"https://www.strata.io"},"favicon":"https://mintcdn.com/strataidentity/bx_Hbkhp9SuRuU18/favicon.svg?fit=max\u0026auto=format\u0026n=bx_Hbkhp9SuRuU18\u0026q=85\u0026s=7a515a8aae3869956b801d7d0a8a555c","appearance":{"default":"dark","strict":false},"navbar":{"links":[{"href":"https://strataidentity.my.site.com/support/s/","label":"Support"}],"primary":{"type":"button","label":"Console Login","href":"https://maverics.strata.io"}},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/strata-identity","github":"https://github.com/strata-io","x":"https://x.com/strataidentity","youtube":"https://www.youtube.com/@strataidentity"},"links":[{"header":"Resources","items":[{"label":"Legacy Docs","href":"https://legacy-docs.strata.io"}]},{"header":"Help","items":[{"label":"Status","href":"https://status.strata.io/"},{"label":"Support Center","href":"https://strataidentity.my.site.com/support/s"}]},{"header":"Terms and Policy","items":[{"label":"Privacy Policy","href":"https://www.strata.io/privacy-policy"},{"label":"Trust Center","href":"https://security-trust.strata.io/"},{"label":"Cookie Declaration","href":"https://www.strata.io/legal/cookiebot-declaration"}]}]},"integrations":{"cookies":{"key":"cookieconsent_analytics_allowed","value":"true"}},"errors":{"404":{"redirect":false,"title":"Page not found","description":"Looks like this page has moved or doesn't exist yet. Try searching the docs or head back to the [homepage](/introduction/overview). If you're looking for older content, it might still be on the [legacy documentation site](https://legacy-docs.strata.io)."}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"strataidentity","hasAudioNarration":false,"actualSubdomain":"strataidentity","customDomains":["docs.strata.io"],"gitSource":{"type":"github","owner":"strata-io","repo":"docs.strata.io","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aeb48d5057e717ec7e9d46c","collectionId":"8209f079-89d2-42fc-811b-5a32f5fe6115","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aeb48d5057e717ec7e9d46c"},"feedback":{"thumbs":false},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aeb48d5057e717ec7e9d46c","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"default","tag":"Reference","count":102},{"language":"default","tag":"Orchestration","count":90},{"language":"default","tag":"Guides","count":31},{"language":"default","tag":"Identity Fabric","count":31},{"language":"default","tag":"Configuration","count":18},{"language":"default","tag":"Console Administration","count":12},{"language":"default","tag":"Authentication","count":9},{"language":"default","tag":"Changelog","count":8},{"language":"default","tag":"Config Sources","count":8},{"language":"default","tag":"Secret Providers","count":8}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"footer{margin-top:2rem!important}"}],"page":{"pagePath":"guides/ai-identity/overview","slug":"/guides/ai-identity/overview","pageMetadata":{"title":"Overview","icon":"compass","description":null,"href":"/guides/ai-identity/overview"},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,AccordionGroup,Card,CardGroup,CodeBlock,Frame,Heading,Info,Mermaid,OptimizedImage,Step,Steps,Tab,Table,Tabs,Tip,Warning}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!AccordionGroup)_missingMdxReference(`AccordionGroup`,true);if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!Mermaid)_missingMdxReference(`Mermaid`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Secure AI agent access to your APIs and MCP tools with identity, authentication, and authorization on every call. The Maverics Orchestrator lets you control which agents can access which tools, trace every action back to the human user who authorized it, and audit everything — so AI agents operate with the same identity governance as your human users.`}),`\n`,_jsxs(_components.p,{children:[`The Orchestrator provides two approaches for securing AI agent access through the `,_jsx(_components.strong,{children:`Model Context Protocol (MCP)`}),`, an open standard that lets AI agents discover and invoke tools in a structured, protocol-driven way. Each approach adds identity, authentication, and authorization to MCP connections in a different way, depending on your architecture and what you already have in place.`]}),`\n`,_jsx(_components.p,{children:`Whether you have existing REST APIs you want to open up to AI agents or existing MCP servers that need identity awareness — there is an approach that fits your situation.`}),`\n`,_jsx(Heading,{level:`2`,id:`choose-your-approach`,children:`Choose Your Approach`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Approach`}),_jsx(_components.th,{children:`When to Use`}),_jsx(_components.th,{children:`How It Works`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Expose APIs to Agents`})}),_jsx(_components.td,{children:`You have existing REST APIs you want AI agents to access`}),_jsx(_components.td,{children:`Translates REST APIs into MCP tools automatically — agents discover and invoke tools via MCP while the Orchestrator handles the REST translation behind the scenes`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Protect MCP Servers`})}),_jsx(_components.td,{children:`You have existing MCP servers that need identity`}),_jsx(_components.td,{children:`Proxies MCP connections with identity injection — the Orchestrator sits between agents and your MCP servers, adding authentication and authorization to every tool invocation`})]})]})]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Not sure which approach to start with? If you have REST APIs today and want to\nexpose them to AI agents, start with `,_jsx(_components.strong,{children:`MCP Bridge`}),`. If you already have MCP\nservers running, start with `,_jsx(_components.strong,{children:`MCP Proxy`}),`.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`agent-identity-concepts`,children:`Agent Identity Concepts`}),`\n`,_jsx(_components.p,{children:`AI agents are not humans — but they still need identity. When an AI agent accesses a tool, reads data, or performs an action on behalf of a user, something needs to answer these questions: Who is this agent? Who authorized it to act? What is it allowed to do? And what did it actually do?`}),`\n`,_jsx(_components.p,{children:`Agent identity addresses this by adding three capabilities that traditional service accounts lack:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Delegation chains`}),` — Every agent action traces back to the human user who authorized it. When Agent X accesses a tool, the system knows that Alice delegated authority to Agent X and that Alice’s permissions (not just the agent’s) determine what the agent can do. This is implemented through OAuth 2.0 token exchange, which supports two modes. `,_jsx(_components.strong,{children:`Delegation`}),` (default) produces a token with an `,_jsx(_components.code,{children:`act`}),` claim that identifies both the user and the agent acting on their behalf, giving downstream services full visibility for auditability. `,_jsx(_components.strong,{children:`Impersonation`}),` produces a token that fully assumes the user’s identity, with no trace of agent involvement — use this when downstream services do not support the actor claim pattern. See the `,_jsx(_components.a,{href:`/reference/orchestrator/applications/mcp-bridge#token-exchange`,children:`MCP Bridge`}),` and `,_jsx(_components.a,{href:`/reference/orchestrator/applications/mcp-proxy#token-exchange`,children:`MCP Proxy`}),` references for configuration details.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Dynamic scopes`}),` — Agent permissions can change based on context. An agent might have broad scopes for one task and narrow scopes for another, depending on what the delegating user authorized. Scopes are named permissions (like `,_jsx(_components.code,{children:`read:orders`}),`, `,_jsx(_components.code,{children:`write:invoices`}),`, or `,_jsx(_components.code,{children:`admin:users`}),`) that your identity provider issues in the agent’s token.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Action-level audit`}),` — Every tool invocation is logged with the full identity context: which agent, which user, which tool, what parameters, and what result. This gives you a complete audit trail that satisfies compliance requirements and enables forensic analysis when something goes wrong.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`The Maverics Orchestrator works with your existing identity provider to manage agent identity. You register agents in your identity provider (just like you register applications), configure their scopes and permissions, and the Orchestrator enforces those permissions at runtime — whether you are using `,_jsx(_components.a,{href:`/guides/ai-identity/mcp-bridge`,children:`MCP Bridge`}),` or `,_jsx(_components.a,{href:`/guides/ai-identity/mcp-proxy`,children:`MCP Proxy`}),` mode.`]}),`\n`,_jsx(Heading,{level:`2`,id:`how-token-security-works`,children:`How Token Security Works`}),`\n`,_jsx(_components.p,{children:`The AI Identity Gateway involves two orchestrator deployments working together:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Auth Provider Orchestrator`}),` — A separate orchestrator deployment running as an OIDC Provider (authorization server). It handles agent authentication, token issuance, and token exchange (minting short-lived, scoped delegation tokens for each tool invocation).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`AI Identity Gateway Orchestrator`}),` — Runs the MCP Provider with MCP Bridge and/or MCP Proxy apps. It handles MCP transport, tool routing, inbound authorization (OPA policies), and upstream forwarding.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`These can be the same orchestrator instance for simpler deployments, but are typically separate deployments in production.`}),`\n`,_jsxs(_components.p,{children:[`Every tool invocation gets its own token. When an agent calls a tool, the AI Identity Gateway Orchestrator does not reuse the agent’s existing token or forward it to the upstream service. Instead, it requests a token exchange from the Auth Provider Orchestrator — trading the agent’s token for a brand-new token specific to that single tool call. Each token carries only the scopes that tool needs (like `,_jsx(_components.code,{children:`employee:List`}),` for listing employees) and expires in seconds (typically a `,_jsx(_components.code,{children:`ttl`}),` of `,_jsx(_components.code,{children:`5s`}),`). A different tool call a moment later gets a completely different token with different scopes.`]}),`\n`,_jsx(Mermaid,{chart:`sequenceDiagram\n participant Agent as AI Agent\n participant Gateway as AI Identity Gateway\u003cbr/>(Orchestrator)\n participant AuthServer as Auth Provider\u003cbr/>(Orchestrator / OIDC Provider)\n participant API as Tool / API\n\n Agent->>Gateway: Connect to MCP endpoint\n Gateway-->>Agent: 401 + /.well-known/oauth-protected-resource\n Agent->>Gateway: GET /.well-known/oauth-protected-resource\n Gateway-->>Agent: Protected resource metadata (lists authorization servers)\n Agent->>AuthServer: OAuth authorization flow\n AuthServer-->>Agent: Access token\n Agent->>Gateway: Invoke tool (with access token)\n Gateway->>Gateway: Validate token + evaluate OPA policies\n Gateway->>AuthServer: Token exchange: mint scoped token\u003cbr/>ttl: 5s, scopes: [employee:List]\n AuthServer-->>Gateway: Short-lived delegation token\n Gateway->>API: Forward request with delegation token\n API-->>Gateway: Response\n Gateway-->>Agent: Tool result`}),`\n`,_jsx(Heading,{level:`2`,id:`mcp-spec-oauth-discovery-rfc-9470`,children:`MCP Spec OAuth Discovery (RFC 9470)`}),`\n`,_jsx(_components.p,{children:`When an agent first connects to the AI Identity Gateway, it goes through a standards-based OAuth discovery flow:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`The agent connects to the AI Identity Gateway Orchestrator’s MCP endpoint.`}),`\n`,_jsxs(_components.li,{children:[`The gateway returns a `,_jsx(_components.code,{children:`401`}),` along with a pointer to its protected resource metadata endpoint.`]}),`\n`,_jsxs(_components.li,{children:[`The gateway exposes `,_jsx(_components.code,{children:`/.well-known/oauth-protected-resource`}),` (per RFC 9470), which returns protected resource metadata including the list of authorization server(s) the agent can authenticate against.`]}),`\n`,_jsx(_components.li,{children:`The agent reads the metadata, authenticates against the Auth Provider Orchestrator (one of the listed authorization servers), and obtains a token.`}),`\n`,_jsx(_components.li,{children:`The agent returns to the gateway with a valid token. The gateway validates the token and proceeds with tool discovery and invocation.`}),`\n`]}),`\n`,_jsx(_components.p,{children:`This flow means agents do not need to be pre-configured with authorization server URLs — they discover them dynamically from the gateway’s protected resource metadata.`}),`\n`,_jsx(_components.p,{children:`Traditional approaches give agents broad, long-lived tokens that accumulate permissions. The Orchestrator takes the opposite approach: every tool invocation gets a fresh, minimal-privilege token that expires in seconds. No single token ever carries more permissions than a single tool needs, and no token lives longer than it takes to complete the call.`}),`\n`,_jsx(Heading,{level:`2`,id:`set-up-the-auth-provider`,children:`Set Up the Auth Provider`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Set up the OIDC Provider for agent tokens`,children:[_jsx(_components.p,{children:`The OIDC Provider you configure here is the Orchestrator’s own token minting infrastructure. It does not just validate tokens from an external provider — it issues short-lived, narrowly scoped tokens for each tool invocation. You configure it with token exchange grant types so it can mint delegation tokens that carry both the agent’s identity and the delegating user’s identity.`}),_jsxs(Tabs,{children:[_jsxs(Tab,{title:`Console UI`,id:`console-ui`,children:[_jsx(Info,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Console UI documentation is coming soon.`}),` This section will walk you\nthrough configuring this component using the Maverics Console’s visual\ninterface, including step-by-step screenshots and field descriptions.`]})}),_jsx(Frame,{caption:`Agent registration guidance in Maverics Console`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/strataidentity/yo114yy_clZj7p9v/images/placeholder.svg?fit=max\u0026auto=format\u0026n=yo114yy_clZj7p9v\u0026q=85\u0026s=ea8d2ec72a69d5a8c7955d78abba6a30`,alt:`Agent registration guidance screen in Maverics Console showing identity provider setup steps`,\"data-og-width\":`800`,width:`800`,\"data-og-height\":`400`,height:`400`,\"data-path\":`images/placeholder.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/strataidentity/yo114yy_clZj7p9v/images/placeholder.svg?w=280\u0026fit=max\u0026auto=format\u0026n=yo114yy_clZj7p9v\u0026q=85\u0026s=8915bedc81639825bb64f4b29741511e 280w, https://mintcdn.com/strataidentity/yo114yy_clZj7p9v/images/placeholder.svg?w=560\u0026fit=max\u0026auto=format\u0026n=yo114yy_clZj7p9v\u0026q=85\u0026s=2391aa0bf01425e8995a1b8684607380 560w, https://mintcdn.com/strataidentity/yo114yy_clZj7p9v/images/placeholder.svg?w=840\u0026fit=max\u0026auto=format\u0026n=yo114yy_clZj7p9v\u0026q=85\u0026s=134f31ce48f4902f27e417082e7da90c 840w, https://mintcdn.com/strataidentity/yo114yy_clZj7p9v/images/placeholder.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=yo114yy_clZj7p9v\u0026q=85\u0026s=c17116c17f12c64573cc737986cbe837 1100w, https://mintcdn.com/strataidentity/yo114yy_clZj7p9v/images/placeholder.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=yo114yy_clZj7p9v\u0026q=85\u0026s=f1e0a37a82ab3dbb2b0ba6b0f9cc04ca 1650w, https://mintcdn.com/strataidentity/yo114yy_clZj7p9v/images/placeholder.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=yo114yy_clZj7p9v\u0026q=85\u0026s=190ef650fddf11454c2bc9b2482c05b6 2500w`})})]}),_jsxs(Tab,{title:`Configuration`,id:`configuration`,children:[_jsxs(_components.p,{children:[`This configuration is for the `,_jsx(_components.strong,{children:`Auth Provider Orchestrator`}),` deployment — the separate orchestrator instance that runs the OIDC Provider. It is not the same deployment as the AI Identity Gateway Orchestrator that runs the MCP Provider.`]}),_jsxs(_components.p,{children:[`Configure the `,_jsx(_components.code,{children:`oidcProvider`}),` and register the AI Identity Gateway as an OIDC application with token exchange grants and custom scopes for MCP tools.`]}),_jsx(CodeBlock,{filename:`maverics.yaml`,numberOfLines:`30`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`30`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`connectors`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`upstream-idp`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` type`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`oidc`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` oidcWellKnownURL`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`https://your-idp.example.com/.well-known/openid-configuration`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` oauthClientID`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`orchestrator-client`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` oauthClientSecret`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\u003cidp.clientSecret>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` oauthLoginRedirect`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` urls`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`https://your-auth-server.example.com/oidc-callback`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` oauthLogoutRedirect`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` urls`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`https://your-auth-server.example.com/logout`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` disablePKCE`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` scopes`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`openid profile email`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`oidcProvider`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` correlateSession`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` discovery`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` issuer`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`https://your-auth-server.example.com`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` endpoints`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` wellKnown`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`https://your-auth-server.example.com/.well-known/oauth-authorization-server`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` jwks`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`https://your-auth-server.example.com/oauth2/jwks`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` auth`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`https://your-auth-server.example.com/oauth2/auth`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` token`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`https://your-auth-server.example.com/oauth2/token`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` userinfo`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`https://your-auth-server.example.com/oauth2/userinfo`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` introspect`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`https://your-auth-server.example.com/oauth2/introspect`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` jwks`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`algorithm`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`RSA256`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` publicKey`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\u003coidc.signingPublicKey>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` privateKey`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\u003coidc.signingPrivateKey>`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`The OIDC Provider issues tokens that the AI Identity Gateway validates when agents connect. The `,_jsx(_components.code,{children:`jwks`}),` section defines the signing keys used to sign tokens — the gateway fetches the public key from the `,_jsx(_components.code,{children:`jwks`}),` endpoint to verify token signatures.`]})]})]}),_jsx(Warning,{children:_jsxs(_components.p,{children:[`Treat agent credentials with the same care as user passwords. Store the\nclient secret in a `,_jsx(_components.a,{href:`/reference/orchestrator/configuration/secret-providers`,children:`secret provider`}),`\n— never in source code, configuration files, or environment variables that\nmight be logged or exposed.`]})})]}),_jsxs(Step,{title:`Register the gateway client with token exchange`,children:[_jsxs(_components.p,{children:[`Register the AI Identity Gateway as an OIDC application that can perform token exchange. This client uses the `,_jsx(_components.code,{children:`urn:ietf:params:oauth:grant-type:token-exchange`}),` grant type to exchange a user’s token for a delegation token scoped to specific downstream APIs.`]}),_jsxs(Tabs,{children:[_jsxs(Tab,{title:`Console UI`,id:`console-ui-2`,children:[_jsx(Info,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Console UI documentation is coming soon.`}),` This section will walk you\nthrough configuring this component using the Maverics Console’s visual\ninterface, including step-by-step screenshots and field descriptions.`]})}),_jsx(Frame,{caption:`Agent scope configuration in Maverics Console`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/strataidentity/yo114yy_clZj7p9v/images/placeholder.svg?fit=max\u0026auto=format\u0026n=yo114yy_clZj7p9v\u0026q=85\u0026s=ea8d2ec72a69d5a8c7955d78abba6a30`,alt:`Agent scope and permission configuration screen in Maverics Console`,\"data-og-width\":`800`,width:`800`,\"data-og-height\":`400`,height:`400`,\"data-path\":`images/placeholder.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/strataidentity/yo114yy_clZj7p9v/images/placeholder.svg?w=280\u0026fit=max\u0026auto=format\u0026n=yo114yy_clZj7p9v\u0026q=85\u0026s=8915bedc81639825bb64f4b29741511e 280w, https://mintcdn.com/strataidentity/yo114yy_clZj7p9v/images/placeholder.svg?w=560\u0026fit=max\u0026auto=format\u0026n=yo114yy_clZj7p9v\u0026q=85\u0026s=2391aa0bf01425e8995a1b8684607380 560w, https://mintcdn.com/strataidentity/yo114yy_clZj7p9v/images/placeholder.svg?w=840\u0026fit=max\u0026auto=format\u0026n=yo114yy_clZj7p9v\u0026q=85\u0026s=134f31ce48f4902f27e417082e7da90c 840w, https://mintcdn.com/strataidentity/yo114yy_clZj7p9v/images/placeholder.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=yo114yy_clZj7p9v\u0026q=85\u0026s=c17116c17f12c64573cc737986cbe837 1100w, https://mintcdn.com/strataidentity/yo114yy_clZj7p9v/images/placeholder.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=yo114yy_clZj7p9v\u0026q=85\u0026s=f1e0a37a82ab3dbb2b0ba6b0f9cc04ca 1650w, https://mintcdn.com/strataidentity/yo114yy_clZj7p9v/images/placeholder.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=yo114yy_clZj7p9v\u0026q=85\u0026s=190ef650fddf11454c2bc9b2482c05b6 2500w`})})]}),_jsxs(Tab,{title:`Configuration`,id:`configuration-2`,\"data-child-heading-ids\":`[\"per-tool-token-exchange\"]`,children:[_jsxs(_components.p,{children:[`Define the gateway client in the `,_jsx(_components.code,{children:`apps`}),` section with `,_jsx(_components.code,{children:`grantTypes`}),` that include both `,_jsx(_components.code,{children:`client_credentials`}),` and `,_jsx(_components.code,{children:`token-exchange`}),`. Configure `,_jsx(_components.code,{children:`customScopes`}),` for the MCP tools the gateway will broker access to.`]}),_jsx(CodeBlock,{filename:`maverics.yaml`,numberOfLines:`28`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`28`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`apps`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`ai-identity-gateway`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` type`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`oidc`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` clientID`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`ai-identity-gateway`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` credentials`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` secrets`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\u003cgateway.clientSecret>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` grantTypes`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`client_credentials`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`urn:ietf:params:oauth:grant-type:token-exchange`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` accessToken`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` type`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`jwt`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` allowedAudiences`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`https://your-api.example.com/`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`https://mcp-server.example.com/`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` customScopes`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` scopes`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`user:List`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`user:Get`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`user:Create`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`user:Update`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`item:List`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`item:Get`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`item:Create`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` claimsMapping`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` email`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`upstream-idp.email`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`upstream-idp.name`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` sub`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`upstream-idp.sub`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`grantTypes`}),` array enables both `,_jsx(_components.code,{children:`client_credentials`}),` (for machine-to-machine auth) and `,_jsx(_components.code,{children:`urn:ietf:params:oauth:grant-type:token-exchange`}),` (RFC 8693 token exchange for delegation). The `,_jsx(_components.code,{children:`allowedAudiences`}),` list restricts which downstream services the gateway can request tokens for. The `,_jsx(_components.code,{children:`customScopes`}),` define the per-tool permissions that can be included in exchanged tokens.`]}),_jsxs(_components.p,{children:[`Administrators can also configure token minting policies on the OIDC Provider app (`,_jsx(_components.code,{children:`authorization.tokenMinting.accessToken.policies`}),`) to apply OPA-based governance over which tokens get issued during exchange. This provides a second control point beyond inbound OPA policies — inbound policies control which tool calls are allowed, while token minting policies control which tokens are issued. See the `,_jsx(_components.a,{href:`/reference/modes/oidc-provider`,children:`OIDC Provider reference`}),` for configuration details.`]}),_jsx(Heading,{level:`3`,id:`per-tool-token-exchange`,children:`Per-Tool Token Exchange`}),_jsxs(_components.p,{children:[`Each tool in the `,_jsx(_components.code,{children:`tools`}),` array gets its own `,_jsx(_components.code,{children:`ttl`}),` and `,_jsx(_components.code,{children:`scopes`}),`, and each tool invocation triggers a separate token exchange operation. This is not a single token with all scopes — every tool call gets its own freshly minted token.`]}),_jsxs(_components.p,{children:[`For example, when an agent calls `,_jsx(_components.code,{children:`listEmployees`}),`, the Orchestrator mints a token with only `,_jsx(_components.code,{children:`employee:List`}),` scope, valid for 5 seconds. When the same agent calls `,_jsx(_components.code,{children:`createEmployee`}),` a moment later, the Orchestrator performs a completely separate token exchange, minting a different token with only `,_jsx(_components.code,{children:`employee:Create`}),` scope, also valid for 5 seconds. The first token has already expired by the time the second call completes.`]}),_jsxs(_components.p,{children:[`This means no token ever accumulates permissions across tools, and no token outlives its purpose. The `,_jsx(_components.code,{children:`ttl`}),` and `,_jsx(_components.code,{children:`scopes`}),` fields in the YAML above are not just configuration — they define the security boundary for each individual tool invocation.`]})]})]}),_jsx(Tip,{children:_jsxs(_components.p,{children:[`Document your scope naming convention and share it with your team. Consistent\nscope names (like always using the `,_jsx(_components.code,{children:`action:resource`}),` pattern) make policies\neasier to write, review, and audit.`]})})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`guides`,children:`Guides`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Expose APIs to Agents`,icon:`bridge`,href:`/guides/ai-identity/mcp-bridge`,children:_jsx(_components.p,{children:`Make your existing REST APIs available to AI agents as discoverable MCP tools with full identity and authorization`})}),_jsx(Card,{title:`Protect MCP Servers`,icon:`shield-halved`,href:`/guides/ai-identity/mcp-proxy`,children:_jsx(_components.p,{children:`Add identity governance to your existing MCP servers — authenticate every agent and authorize every tool call`})})]}),`\n`,_jsx(Heading,{level:`2`,id:`troubleshooting`,children:`Troubleshooting`}),`\n`,_jsxs(AccordionGroup,{children:[_jsxs(Accordion,{title:`Agent credentials rejected by identity provider`,id:`agent-credentials-rejected-by-identity-provider`,children:[_jsx(_components.p,{children:`If an agent cannot authenticate with its client credentials, check the\nfollowing:`}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Verify the client ID and client secret are correct. Client secrets are\noften only shown once when created — if you have lost the secret, generate\na new one in your identity provider.`}),`\n`,_jsx(_components.li,{children:`Check that the agent’s application registration is active and has not\nbeen disabled or deleted in the identity provider.`}),`\n`,_jsx(_components.li,{children:`Confirm the grant type is set to “client_credentials” in the agent’s\napplication registration.`}),`\n`,_jsx(_components.li,{children:`Verify that the token endpoint URL in the Orchestrator’s identity\nconnector matches your identity provider’s actual token endpoint.`}),`\n`,_jsx(_components.li,{children:`If the agent’s credentials have an expiration date, check whether they\nhave expired.`}),`\n`]})]}),_jsxs(Accordion,{title:`Delegation chain not resolving`,id:`delegation-chain-not-resolving`,children:[_jsx(_components.p,{children:`If the Orchestrator cannot resolve the delegation chain (the agent\nauthenticates but the user context is missing):`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Verify that the delegated token includes the `,_jsx(_components.code,{children:`act`}),` (actor) claim or\nwhatever custom claim your identity provider uses for delegation.`]}),`\n`,_jsx(_components.li,{children:`Check that the token exchange was performed correctly — the original\nuser token must be exchanged for a delegated agent token, not simply\npassed through.`}),`\n`,_jsxs(_components.li,{children:[`Verify that the gateway client’s `,_jsx(_components.code,{children:`grantTypes`}),` includes\n`,_jsx(_components.code,{children:`urn:ietf:params:oauth:grant-type:token-exchange`}),`.`]}),`\n`,_jsx(_components.li,{children:`If your identity provider does not support the standard OAuth 2.0 token\nexchange, check the Orchestrator’s identity connector documentation for\nprovider-specific delegation configuration.`}),`\n`,_jsx(_components.li,{children:`Enable debug logging in the Orchestrator to see the full token contents\nand identify which claims are present or missing.`}),`\n`]})]}),_jsxs(Accordion,{title:`Token exchange fails with invalid audience`,id:`token-exchange-fails-with-invalid-audience`,children:[_jsx(_components.p,{children:`If the token exchange succeeds but the downstream service rejects the\nexchanged token:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Verify the `,_jsx(_components.code,{children:`allowedAudiences`}),` in the gateway client includes the audience\nvalue used in the MCP app’s `,_jsx(_components.code,{children:`outbound.tokenExchange.audience`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Check that the downstream service’s expected audience matches the\n`,_jsx(_components.code,{children:`audience`}),` value in the token exchange configuration.`]}),`\n`,_jsxs(_components.li,{children:[`Review the exchanged token’s claims (using a JWT debugger) to confirm\nthe `,_jsx(_components.code,{children:`aud`}),` claim contains the expected value.`]}),`\n`]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`related-pages`,children:`Related Pages`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`AI Identity Gateway Reference`,icon:`rectangle-list`,href:`/reference/modes/ai-identity-gateway`,children:_jsx(_components.p,{children:`Detailed configuration reference for all AI Identity Gateway modes and settings`})}),_jsx(Card,{title:`Security Guides`,icon:`lock`,href:`/guides/security/overview`,children:_jsx(_components.p,{children:`TLS, secrets management, authorization policies, and compliance guides`})}),_jsx(Card,{title:`Authentication Guides`,icon:`key`,href:`/guides/authentication/overview`,children:_jsx(_components.p,{children:`SSO, OIDC, SAML federation, and identity provider migration guides`})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Overview","icon":"compass","description":null,"href":"/guides/ai-identity/overview"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Choose Your Approach","slug":"choose-your-approach","depth":2,"children":[]},{"title":"Agent Identity Concepts","slug":"agent-identity-concepts","depth":2,"children":[]},{"title":"How Token Security Works","slug":"how-token-security-works","depth":2,"children":[]},{"title":"MCP Spec OAuth Discovery (RFC 9470)","slug":"mcp-spec-oauth-discovery-rfc-9470","depth":2,"children":[]},{"title":"Set Up the Auth Provider","slug":"set-up-the-auth-provider","depth":2,"children":[{"title":"Per-Tool Token Exchange","slug":"per-tool-token-exchange","depth":3,"children":[],"tabId":"configuration-2"}]},{"title":"Guides","slug":"guides","depth":2,"children":[]},{"title":"Troubleshooting","slug":"troubleshooting","depth":2,"children":[]},{"title":"Related Pages","slug":"related-pages","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/strataidentity/f5eb628399810ff7/status.js","/_mintlify/custom/strataidentity/b8e24dc33885ac0a/cookiebot.js"],"dynamicCss":".\\[employee\\:List\\] {\n employee: List\n}","subdomain":"strataidentity","siteName":"Maverics Documentation","title":"Overview - Maverics Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-30T20:34:57.100Z","originalFileLocation":"guides/ai-identity/overview.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"application-name\" content=\"Maverics Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/strataidentity/qfgJMQlSCT_TH3a0/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/strataidentity/qfgJMQlSCT_TH3a0/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/strataidentity/qfgJMQlSCT_TH3a0/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/strataidentity/qfgJMQlSCT_TH3a0/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/strataidentity/qfgJMQlSCT_TH3a0/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/strataidentity/qfgJMQlSCT_TH3a0/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/strataidentity/qfgJMQlSCT_TH3a0/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/strataidentity/qfgJMQlSCT_TH3a0/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/strataidentity/qfgJMQlSCT_TH3a0/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Overview - Maverics Documentation\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Maverics Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.strata.io/guides/ai-identity/overview\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://strataidentity.mintlify.app/_mintlify/api/og/v2?division=AI+Identity\u0026amp;title=Overview\u0026amp;theme=fe1a0fe3316b752af9e31a17\u0026amp;signature=ecf8a9703e834e9be2ffbde64acc872645d20a79eeff86095d97e2a3dd334e54\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Overview - Maverics Documentation\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://strataidentity.mintlify.app/_mintlify/api/og/v2?division=AI+Identity\u0026amp;title=Overview\u0026amp;theme=fe1a0fe3316b752af9e31a17\u0026amp;signature=ecf8a9703e834e9be2ffbde64acc872645d20a79eeff86095d97e2a3dd334e54\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/strataidentity/qfgJMQlSCT_TH3a0/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Maverics Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#1DA1DC\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.strata.io/guides/ai-identity/overview\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/guides/ai-identity/overview.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.strata.io/#organization\",\"name\":\"Maverics Documentation\",\"url\":\"https://docs.strata.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/strataidentity/GnMIwAgmQ7Rnxm8R/logo/light.svg?fit=max\u0026auto=format\u0026n=GnMIwAgmQ7Rnxm8R\u0026q=85\u0026s=f75039b8474c2403c381ef74fdbee428\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.strata.io#website\",\"name\":\"Maverics Documentation\",\"url\":\"https://docs.strata.io\",\"publisher\":{\"@id\":\"https://docs.strata.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.strata.io/guides/ai-identity/overview#webpage\",\"url\":\"https://docs.strata.io/guides/ai-identity/overview\",\"name\":\"Overview\",\"dateModified\":\"2026-09-30T20:34:57.100Z\",\"isPartOf\":{\"@id\":\"https://docs.strata.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.strata.io/guides/ai-identity/overview#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.strata.io/guides/ai-identity/overview#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Maverics Documentation\",\"item\":\"https://docs.strata.io\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Overview\",\"item\":\"https://docs.strata.io/guides/ai-identity/overview\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.strata.io/guides/ai-identity/overview#article\",\"headline\":\"Overview\",\"name\":\"Overview\",\"url\":\"https://docs.strata.io/guides/ai-identity/overview\",\"mainEntityOfPage\":{\"@id\":\"https://docs.strata.io/guides/ai-identity/overview#webpage\"},\"dateModified\":\"2026-09-30T20:34:57.100Z\",\"publisher\":{\"@id\":\"https://docs.strata.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.strata.io#website\"}}]}\u003c/script>","siteName":"Maverics Documentation","nav":{"global":null,"tabs":[{"tab":"Introduction","pages":[{"title":"Introduction","href":"/introduction/overview"}]},{"tab":"Guides","groups":[{"group":"Getting Started","icon":"rocket","pages":[{"title":"Overview","icon":"compass","href":"/guides/getting-started/overview"},{"title":"Quick Start","icon":"bolt","href":"/guides/getting-started/quick-start"},{"title":"Protect Your First Application","icon":"shield-halved","href":"/guides/getting-started/first-application"}]},{"group":"Authentication","icon":"key","pages":[{"title":"Overview","icon":"compass","href":"/guides/authentication/overview"},{"title":"How Authentication Works","sidebarTitle":"How Auth Works","icon":"diagram-project","href":"/guides/authentication/how-auth-works"},{"title":"Choosing an Orchestrator Mode","sidebarTitle":"Choosing a Mode","icon":"compass-drafting","href":"/guides/authentication/choosing-a-mode"},{"title":"SSO with OIDC","icon":"key","href":"/guides/authentication/sso-with-oidc"},{"title":"Federate SAML Apps","sidebarTitle":"Federate SAML Apps","icon":"shield-halved","href":"/guides/authentication/saml-federation"},{"title":"Add SSO to Web Apps","sidebarTitle":"Add SSO to Web Apps","icon":"server","href":"/guides/authentication/http-proxy-auth"},{"title":"Modernize LDAP Authentication","sidebarTitle":"Modernize LDAP Auth","icon":"folder-tree","href":"/guides/authentication/ldap-provider"},{"title":"Single Logout (SLO)","sidebarTitle":"Single Logout","icon":"right-from-bracket","href":"/guides/authentication/single-logout"},{"title":"Migrate Between Identity Providers","sidebarTitle":"IdP Migration","icon":"right-left","description":null,"href":"/guides/authentication/idp-migration"}]},{"group":"AI Identity","icon":"microchip-ai","pages":[{"title":"Overview","icon":"compass","href":"/guides/ai-identity/overview"},{"title":"Expose APIs to Agents","icon":"bridge","description":null,"href":"/guides/ai-identity/mcp-bridge"},{"title":"Protect MCP Servers","icon":"shield-halved","href":"/guides/ai-identity/mcp-proxy"},{"title":"OWASP MCP Top 10","icon":"shield-check","href":"/guides/ai-identity/owasp-mcp-top-10"},{"group":"Connect an AI Client","icon":"plug","expanded":true,"pages":[{"title":"Connect Claude to the AI Identity Gateway","sidebarTitle":"Claude","icon":"message-bot","href":"/guides/ai-identity/connect/claude"},{"title":"Connect ChatGPT to the AI Identity Gateway","sidebarTitle":"ChatGPT","icon":"message-bot","href":"/guides/ai-identity/connect/chatgpt"}]},{"title":"Scale the AI Identity Gateway for Production","icon":"arrows-up-down","href":"/guides/ai-identity/scale-for-production"}]},{"group":"Identity Continuity","icon":"arrows-rotate","pages":[{"title":"Overview","icon":"compass","href":"/guides/identity-continuity/overview"},{"title":"Reducing Single Points of Failure","icon":"shield-check","href":"/guides/identity-continuity/reducing-spofs"}]},{"group":"Operations","icon":"wrench","pages":[{"title":"Overview","icon":"compass","href":"/guides/operations/overview"},{"title":"Deploy to Production","icon":"rocket","href":"/guides/operations/deploy"},{"title":"Monitor and Observe","icon":"chart-line","href":"/guides/operations/monitor"},{"title":"Scale for Production","icon":"arrows-up-down","href":"/guides/operations/scale"},{"title":"Troubleshoot Common Issues","icon":"wrench","href":"/guides/operations/troubleshoot"}]},{"group":"Security","icon":"shield-halved","pages":[{"title":"Overview","icon":"compass","href":"/guides/security/overview"},{"title":"Configure TLS","icon":"lock","href":"/guides/security/tls"},{"title":"Manage Secrets","icon":"vault","href":"/guides/security/secrets-management"},{"title":"Configure Authorization Policies","sidebarTitle":"Authorization Policies","icon":"shield-check","href":"/guides/security/policies"},{"title":"Compliance and Audit","icon":"clipboard-check","href":"/guides/security/compliance"}]}]},{"tab":"Reference","pages":[{"title":"Reference","href":"/reference/console/overview"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog"}]}]},"basePath":"","title":"Overview - Maverics Documentation","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-BdiBGm0H.js","DynamicMarkdown-CbqEDjbV.js","zoom-image-lightbox-CvtNkYOX.js","lightbox-handle-r17bVUz3.js"]}