RFC 8693
OAuth 2.0 Token Exchange standard underlying Auth0's agent token model
2
Token exchanges in Okta XAA's ID-JAG flow (ID token to ID-JAG, then ID-JAG to scoped access token)
Feb 2026
NIST published its AI agent identity and authorization concept paper

SponsoredHorizon3.ai

Proactive Security for the AI Era

NodeZero continuously and autonomously pentests infrastructure, identity, cloud, and now web applications, chaining weaknesses across every domain the way real attackers do. Every finding ships with replayable proof showing exploitable business impact, not theoretical risk.

See NodeZero WebApp in action

An AI agent that books a flight, files a ticket, or rewrites a spreadsheet on someone's behalf is not logging in the way a human does, and it is not a backend service running on a static API key either. It needs to act with a human's delegated authority, for a bounded task, for a short window, in a way that a security team can later reconstruct and a human can later revoke. Traditional OAuth authorization code flows assume a human is present to click consent. Traditional service-account credentials assume the caller's identity and permissions never change mid-task. Neither model captures what an autonomous agent actually needs.

Over the past year, three identity vendors have shipped distinct answers to this gap. Auth0 built its agent authorization patterns on OAuth 2.0 Token Exchange (RFC 8693) and a centralized Token Vault. Microsoft built Entra Agent ID as a new first-class identity object in Entra ID, with its own token claims and federated credential flows. Okta built Cross App Access (XAA), an OAuth extension using a token type called ID-JAG that has since become vendor-neutral enough to be adopted as an MCP authorization extension. This piece stays at the mechanics: what each system actually issues, how scoping and delegation work, what it takes to deploy, and where each one still falls short. For the organizational governance angle, stages of maturity, self-assessment, and common adoption pitfalls, see our companion piece on the agentic AI identity maturity model. If you have not yet inventoried the non-human identities behind your existing agents and service accounts, our non-human identity security guide is the right starting point before evaluating any of these three.

At a glance

Each vendor addresses the same core problem, an agent acting with delegated human authority, but the token mechanics and where trust is anchored differ enough to matter for architecture decisions.

Auth0 (Okta-owned, separate product line)

Token Vault holds the long-lived refresh token centrally; agents request short-lived, single-use access tokens via OAuth 2.0 Token Exchange (RFC 8693) for each operation. Adds CIBA for asynchronous human approval and Rich Authorization Requests (RAR) so audit logs capture exactly what was approved.

Microsoft Entra Agent ID

Agent identity is a distinct service principal type in Entra ID, created and impersonated by an agent identity blueprint. Tokens carry specialized claims identifying entity type and delegation relationship; multi-stage token exchange uses Federated Identity Credentials (FIC) rather than a stored secret.

Okta Cross App Access (XAA)

An OAuth extension using ID-JAG (Identity Assertion JWT Authorization Grant): a user's ID token is exchanged for an ID-JAG at the org authorization server, then the ID-JAG is exchanged for a scoped access token at the target app's authorization server. Now an open, vendor-neutral extension incorporated into MCP authorization work, not an Okta-only pattern.

Architecture: how each mechanism actually works

Auth0's model separates identity from execution. When a user first authorizes an agentic application, the identity provider stores a long-lived refresh token in a centralized Token Vault; the agent itself never holds it. For every discrete action the agent takes, it requests a just-in-time access token scoped to that specific operation through OAuth 2.0 Token Exchange (RFC 8693), uses it once, and discards it. Because the token is scoped narrowly and expires in minutes, compromising an in-flight agent session exposes only that window of access, not a standing credential. Auth0 layers CIBA on top for cases where a human needs to approve an action out of band, and Rich Authorization Requests (RAR) so the resulting audit trail shows precisely what the user consented to rather than a generic scope string.

Entra Agent ID takes a different anchor point: the agent gets its own object in the directory. Microsoft's documentation describes an agent identity as a special service principal that an agent identity blueprint creates and is authorized to impersonate, each with its own object ID inside the tenant, distinct from the human user or the application registration that built it. Authentication flows use OAuth 2.0 with Federated Identity Credentials (FIC) rather than a client secret, and tokens issued to agents carry enhanced claims beyond what a standard application token contains, identifying entity type, delegation relationship, and authorization context specific to agent operations. Because the agent has a real directory identity, it inherits Entra's existing conditional access, Conditional Access, and governance surface rather than requiring a parallel system.

Okta's Cross App Access is the most explicitly delegation-first of the three. The flow runs in two token exchanges: a user's ID token is exchanged for an ID-JAG (Identity Assertion JWT Authorization Grant) at the organization's authorization server, and that ID-JAG is then exchanged for a scoped access token at the resource application's own authorization server. The mechanism was built to solve app-to-app and agent-to-app connections where the enterprise IdP needs to stay in the loop even when the agent is calling a third-party SaaS tool it does not directly administer. XAA has since been formally incorporated as an authorization extension for MCP, and Okta has published it as an open, vendor-neutral specification rather than an Okta-proprietary flow, which is why other identity providers and app vendors have started implementing it independently of Okta's own stack.

Free daily briefing

Briefings like this, every morning before 9am.

Threat intel, active CVEs, and campaign alerts, distilled for practitioners. 50,000+ subscribers. No noise.

Deployment model

Auth0's pattern deploys as an extension of an existing Auth0 tenant: Token Vault, Token Exchange, and Fine-Grained Authorization (built on OpenFGA relationship-based access control) are configured alongside the applications already registered in that tenant. Teams already running Auth0 for customer or workforce identity add agent flows incrementally rather than standing up new infrastructure. Entra Agent ID requires an Entra ID tenant and is deployed through the agent identity blueprint concept, meaning agent identities are provisioned and governed inside the same console as every other Entra service principal, which is straightforward for Microsoft-ecosystem shops and a heavier lift for anyone not already centralized on Entra ID. Okta XAA deploys at the authorization-server layer: the enterprise's Okta org authorization server issues ID-JAGs, and each target application needs its own authorization server capable of accepting and validating them, which means the resource-application side needs XAA support before the flow works end to end, a dependency Okta has been actively growing through its Identity Network partner ecosystem and the xaa.dev testing playground.

Integrations

Auth0's approach is protocol-general: RFC 8693 Token Exchange and CIBA are IETF standards, so the pattern is portable to any resource server that speaks OAuth, not locked to a specific app catalog. Entra Agent ID integrates most deeply with Microsoft's own agent-building surfaces (Copilot Studio, Azure AI Foundry) and other Microsoft Graph-connected services, with documented support extending to select non-Microsoft platforms, though the tightest integration remains inside the Microsoft stack. Okta XAA is explicitly building a multi-vendor integration story: because it is positioned as an MCP authorization extension and an open specification, the growing list of Okta Integration Network (OIN) partners that support XAA connections determines how many real destinations an agent can reach without a custom integration, and that list is expanding through 2026 rather than being fixed.

Operational effort to adopt

The heaviest lift across all three is not configuring the identity provider, it is instrumenting the agent's own code to request the right token at the right moment instead of holding a standing credential. Auth0's Token Vault pattern requires re-architecting how an agent's tool-calling logic fetches credentials, moving from a stored secret to a per-operation token-exchange call, plus defining the OpenFGA relationship model that determines what an agent can request. Entra Agent ID requires provisioning an agent identity blueprint for each agent pattern and mapping token claim validation into whatever is consuming those tokens downstream, work that is lighter if the consuming service already validates Entra ID tokens and heavier if it does not. Okta XAA requires the resource application side to support ID-JAG validation, which for a homegrown internal app means implementing a new token-exchange endpoint, and for a commercial SaaS tool means waiting on or requesting that vendor's OIN XAA integration. None of the three is a flip-a-flag change; all three assume the team already has OAuth expertise in house, not a first identity project.

Pricing and availability

None of the three vendors publishes flat, self-serve pricing specific to agent authorization as a standalone line item; each is bundled into existing enterprise identity plans and typically requires a sales conversation to confirm exact terms for agent-specific volume. Auth0's agent authorization patterns (Token Vault, Token Exchange, Fine-Grained Authorization) are documented as capabilities of existing Auth0 plans rather than a separate product tier. Entra Agent ID is documented as part of Microsoft Entra ID, generally available to Entra tenants, with the specific licensing tier required for full agent identity governance features varying and best confirmed directly against current Microsoft licensing documentation before a purchase decision. Okta Cross App Access is available to Okta customers through the Identity Engine and expanding partner ecosystem; teams should confirm current XAA availability against their specific Okta org tier, since the feature has moved from limited preview toward broader availability over the course of 2026 rather than launching universally on day one. Treat every number above as a starting point for a vendor conversation, not a final quote.

Strengths and limitations, by vendor

Each mechanism solves the delegated-authority problem differently, and each carries tradeoffs that only show up once you try to operationalize it.

Auth0: strong on standards portability, weaker on directory-native governance

Building on RFC 8693, CIBA, and RAR means the pattern is auditable against open standards and portable across resource servers. The tradeoff is that agent identity itself is not a first-class directory object the way it is in Entra ID, so agent lifecycle management (provisioning, deprovisioning, ownership) has to be built on top rather than inherited from the directory.

Entra Agent ID: strong on native governance for Microsoft shops, narrower outside that ecosystem

Giving each agent a real service principal object means existing Entra governance, conditional access, and audit tooling apply to agents with minimal new infrastructure, for teams already centralized on Entra ID. Outside the Microsoft ecosystem, or for agents that need to call many disparate third-party SaaS tools, the integration surface is narrower than Auth0's protocol-general approach or Okta's expanding partner network.

Okta XAA: strong on multi-vendor delegation, dependent on resource-app adoption

The two-hop ID-JAG exchange keeps the enterprise IdP in the loop even for third-party SaaS tools it does not administer, and its adoption as an MCP authorization extension gives it a path to becoming a cross-vendor standard rather than an Okta-only feature. The practical limitation is that XAA only works end to end once the resource application on the other side implements it, which as of mid-2026 is still a growing list rather than a given for any arbitrary SaaS tool.

Best-fit guidance by architecture

There is no universal winner here; the right choice tracks the identity stack a team already runs and the shape of the agents it needs to authorize. A team already running Auth0 for customer or workforce identity, with agents that need to call a broad, heterogeneous set of external APIs, gets the most value from Auth0's Token Vault and Token Exchange pattern because it is standards-based and does not require the resource side to adopt anything Auth0-specific beyond OAuth itself. A Microsoft-centric shop building agents primarily inside Copilot Studio or Azure AI Foundry, where the consuming services already live inside the Microsoft Graph and Entra ecosystem, gets the most out of Entra Agent ID because agent governance falls directly out of existing Entra ID administration rather than requiring a second system. A team running Okta as its workforce IdP, whose agents primarily need to reach a growing set of third-party SaaS tools where the vendor relationship (not a homegrown API) is the integration point, benefits most from Okta XAA once enough of that vendor's OIN partners support it, since the ID-JAG flow is purpose-built for exactly that agent-to-app-not-administered-by-us scenario. For deeper architectural background on why static credentials and long-lived tokens are the wrong default for any of these non-human actors, see our guide to workload identity federation for eliminating static credentials, which covers the same short-lived-token principle in the CI/CD context these agent flows are extending into runtime.

When none of these are ready yet

All three mechanisms assume a resource server or downstream application that can participate in the relevant token exchange, whether that is RFC 8693 Token Exchange, Entra's FIC-based flow, or ID-JAG validation. A large share of internal tools and legacy line-of-business applications support none of these today, and cannot be retrofitted quickly. If your agents primarily need to act against systems that only understand static API keys or basic service accounts, adopting any of these three vendor mechanisms will not remove that gap, it will just move the boundary of where the static credential lives. In that situation, the honest interim step is tighter scoping and monitoring of the existing service-account model (least privilege, short rotation windows, per-agent accounts instead of shared ones, and centralized logging of what each credential does) rather than declaring a premature migration to agent-native OAuth that the downstream systems cannot actually honor. Teams in this position should also watch the standards track directly: NIST's Center for AI Standards and Innovation published its concept paper, "Accelerating the Adoption of Software and AI Agent Identity and Authorization," in February 2026, with public comment closing in April 2026, recommending OAuth 2.0 and OpenID Connect for authorization, SCIM for provisioning, and SPIFFE/SPIRE for workload attestation as the technical building blocks. In parallel, an IETF working draft, the SCIM Agents and Agentic Applications Extension, defines a new Agent resource type with capability declarations, protocol bindings, and trust profile metadata specifically for provisioning agent identities through SCIM. Neither is a finished, ratified standard yet, but both signal where vendor-specific mechanisms like the three above are likely to converge, which matters when deciding how much custom integration work to invest in today versus wait for.

A short PoC and evaluation checklist

Before committing to any one of these mechanisms in production, a narrow proof of concept should confirm the following, using one real (not hypothetical) agent workflow the team already operates.

Confirm token lifetime and single-use behavior in practice

Issue a token for a real agent action and verify it actually expires and cannot be replayed after the operation completes, rather than trusting documentation defaults.

Trace the full delegation chain in the audit log

After the agent completes a multi-step task, confirm the log can answer which human authorized it, which agent identity acted, and what scope was used for each step, not just that an action occurred.

Test revocation mid-task

Revoke the underlying user consent or agent identity while a multi-step agent workflow is in progress and confirm subsequent token requests are actually denied, not just that the initial token still works until natural expiry.

Verify resource-side support before committing

For Okta XAA specifically, confirm the actual target applications the agent needs to reach have implemented ID-JAG validation today, not on a roadmap; for Entra Agent ID, confirm the downstream services can validate the enhanced token claims.

Check the fallback path for unsupported downstream systems

Identify which of the agent's required integrations cannot participate in any of these flows yet, and decide explicitly whether that gap blocks the rollout or gets covered by interim service-account controls.

The bottom line

Auth0, Microsoft Entra Agent ID, and Okta Cross App Access all solve the same underlying problem, giving an autonomous agent short-lived, scoped, revocable authority instead of a standing credential, but they anchor trust differently: Auth0 centralizes it in a Token Vault and standards-based token exchange, Entra Agent ID makes the agent a first-class directory object, and Okta XAA keeps the enterprise IdP in the loop across app-to-app calls it does not administer. None is a universal winner. The right pick tracks the identity stack already in place and how many of an agent's downstream integrations can actually support the exchange today. Where they cannot, tightening the existing service-account model is the honest interim step, not a rushed migration to a flow the resource server cannot yet honor. NIST's concept paper and the IETF SCIM agent extension both point toward eventual convergence, which is a reason to build now on open standards where each vendor supports them, rather than betting everything on one vendor's proprietary surface.

Frequently asked questions

What is AI agent authorization and why doesn't standard OAuth cover it?

AI agent authorization covers the mechanisms that let an autonomous agent act with a human's delegated authority for a bounded task and time window. Standard OAuth authorization code flows assume a human is present to click consent at login time, and static service-account credentials assume the caller's permissions never change mid-task, so neither model captures an agent that needs short-lived, narrowly scoped, revocable authority for each action it takes on someone's behalf.

How does Auth0's Token Vault handle AI agent authorization?

Auth0 stores a long-lived refresh token centrally in Token Vault after initial user consent, and the agent never holds that token directly. For each operation, the agent requests a short-lived, single-use access token through OAuth 2.0 Token Exchange defined in RFC 8693, uses it once, and discards it, which limits the blast radius of a compromise to minutes of scoped access rather than standing authority.

What makes Microsoft Entra Agent ID different from a regular application registration?

An Entra Agent ID identity is a distinct service principal type in the Entra ID directory, created and impersonated by an agent identity blueprint rather than being a conventional app registration. Tokens issued to these identities carry enhanced claims identifying entity type and delegation relationship, and authentication uses Federated Identity Credentials instead of a stored client secret, which lets the agent inherit existing Entra conditional access and governance controls.

What is an ID-JAG in Okta's Cross App Access (XAA)?

An ID-JAG, or Identity Assertion JWT Authorization Grant, is the intermediate token in Okta's Cross App Access flow. A user's ID token is first exchanged for an ID-JAG at the organization's authorization server, and that ID-JAG is then exchanged for a scoped access token at the target application's own authorization server, which keeps the enterprise identity provider in the loop even for third-party apps it does not directly administer.

Which AI agent authorization mechanism should a security team choose?

There is no universal winner; the right choice depends on the existing identity stack and integration pattern. Teams already on Auth0 with agents calling broad external APIs benefit from its standards-based Token Vault and Token Exchange pattern, Microsoft-centric shops building agents in Copilot Studio or Azure AI Foundry benefit most from Entra Agent ID's native directory governance, and Okta shops whose agents primarily reach third-party SaaS tools benefit from XAA's ID-JAG flow once enough of those vendors support it.

What should a team do if its downstream systems cannot support any of these agent authorization mechanisms yet?

If the agent's required integrations only support static API keys or basic service accounts, adopting Auth0, Entra Agent ID, or Okta XAA will not close that gap because none of them changes what the downstream system itself can validate. The honest interim step is tightening the existing service-account model with least privilege, short credential rotation, per-agent accounts instead of shared ones, and centralized logging, while tracking standards work like NIST's 2026 agent identity concept paper and the IETF SCIM agent extension for where the ecosystem is converging.

Sources & references

  1. Auth0 - AI Agents Are Not Users
  2. InfoQ - AI Agent Identity: Uber and Auth0
  3. Microsoft Learn - Microsoft Entra Agent ID documentation
  4. Microsoft Learn - Authentication protocols in agents
  5. Okta Developer - Set up AI agent token exchange
  6. Okta Developer - Build Secure Agent-to-App Connections with Cross App Access (XAA) Using OIDC
  7. NIST CSRC - Accelerating the Adoption of Software and AI Agent Identity and Authorization (concept paper)

Free resources

25
Free download

Critical CVE Reference Card 2025–2026

25 actively exploited vulnerabilities with CVSS scores, exploit status, and patch availability. Print it, pin it, share it with your SOC team.

No spam. Unsubscribe anytime.

Free download

Ransomware Incident Response Playbook

Step-by-step 24-hour IR checklist covering detection, containment, eradication, and recovery. Built for SOC teams, IR leads, and CISOs.

No spam. Unsubscribe anytime.

Free newsletter

Get threat intel before your inbox does.

50,000+ security professionals read Decryption Digest for early warnings on zero-days, ransomware, and nation-state campaigns. Free, daily, no spam.

Unsubscribe anytime. We never sell your data.

Eric Bang
Author

Founder & Cybersecurity Evangelist, Decryption Digest

Cybersecurity professional with expertise in threat intelligence, vulnerability research, and enterprise security. Covers zero-days, ransomware, and nation-state operations for 50,000+ security professionals every morning.

Giveaway: InfoSec World 2026 All Access Pass ($3,895 value)

Details →
Daily Briefing

Subscribe to enter the giveaway

Every subscriber is automatically entered. You also get daily threat intel every morning: zero-days, ransomware, and nation-state campaigns. Free. No spam.

Already subscribed? You're already entered.

Giveaway

Win a $3,895 InfoSec World 2026 pass.