Skip to main content
Agent Identity

IETF · 31 October 2026

Identity Assertion JWT Authorization Grant

draft-ietf-oauth-identity-assertion-authz-grant-06

See draft (Parecki et al.; informally called XAA)

WG draftDraft — expect changeAuthorizationAgent-specificField guide

Identity Assertion JWT Authorization Grant (draft-ietf-oauth-identity-assertion-authz-grant-06) is WG draft, 31 October 2026. This is the emerging 'enterprise agent may call SaaS APIs as the employee' path that scales past per-tool OAuth popups. Still a draft; pin versions and test interoperability.

ShareLinkedInX

At a glance

Problem
An enterprise app or AI agent already has an SSO session with the company IdP and needs to call another app's API on the user's behalf without a second OAuth consent circus at every SaaS.
Identity / authn / authz
Authorization brokered by the identity provider the resource already trusts for SSO. Extends the IdP from authentication into cross-domain API access.

Actors

  • Requesting app / agent
  • Enterprise IdP (AS)
  • Resource app AS
  • User (policy subject, often not interactively prompted)

01

The gap for agents

An enterprise app or AI agent already has an SSO session with the company IdP and needs to call another app's API on the user's behalf without a second OAuth consent circus at every SaaS. draft-ietf-oauth-identity-assertion-authz-grant-06 (31 October 2026, expires 4 May 2027) provides that mechanism and is informally called Cross-App Access (XAA).

This does not replace CIBA: use CIBA when a specific action needs a human on a phone; XAA when IT policy already authorized the connection. Still a WG draft; vendors (Okta, Auth0) already document XAA for agents and MCP enterprise-managed authorization.

02

Actors and trust boundaries

The enterprise IdP is the policy brain: it decides whether this requesting app may obtain a grant for that resource app. The resource app's AS already trusts the IdP for SSO; it now also trusts ID-JAGs as RFC 7523 assertions. The user is often not interactively prompted. That is a feature for IT and a hazard if policy is too broad.

03

Mechanics

Requesting app exchanges an ID Token (or refresh token) at the IdP via RFC 8693 for an Identity Assertion JWT Authorization Grant (ID-JAG) whose audience is the resource app's AS — not the requesting client (unlike an ID Token). It redeems the ID-JAG at that AS via RFC 7523 for an access token. Draft-05 adds mTLS certificate binding beside DPoP, requires jwt-dpop for a DPoP-bound ID-JAG, and allows a key-bound ID-JAG to replace client authentication at the resource AS. Authors: A. Parecki, K. McGuinness, B. Campbell.

ID-JAGfrom spec
Quoted concept: JWT grant signed by the IdP, about the user, aud = resource AS. Not aud = the requesting client.

04

Step-by-step flows

Flow 1

IdP-brokered app-to-app

  1. 1

    User has an SSO session. Requesting app holds an ID Token from the enterprise IdP.

  2. 2

    App token-exchanges at the IdP: subject=ID Token, requested grant for resource AS.

  3. 3

    IdP policy allows or denies. On allow, ID-JAG issued (aud=resource AS).

  4. 4

    App redeems ID-JAG at the resource AS (jwt-bearer). Access token for the SaaS API is issued.

  5. 5

    App/agent calls the SaaS RS. No second consent screen unless policy demands it.

05

Identity vs authentication vs authorization

Authorization brokered by the identity provider the resource already trusts for SSO. Extends the IdP from authentication into cross-domain API access. User identity is in the grant; the access token is authorization at the resource AS.

06

How it composes

  • Identity chaining

    XAA is a profile of that pattern with the IdP in the middle.

  • Token Exchange

    Mints the ID-JAG.

  • OpenID Connect Core

    ID Token (or refresh) is the subject_token. Do not send the ID Token to the SaaS API.

  • MCP authorization

    Enterprise-managed MCP authorization often maps onto XAA so employees do not OAuth-popup every tool.

  • CIBA

    Different control: per-action human approval vs IT-preapproved connections.

07

What bites agent implementers

  • Policy too wide

    If the IdP allows 'any internal agent → any SaaS', you have automated confused deputy at enterprise scale. Scope the connections.

  • ID Token vs ID-JAG audience

    If you redeem a token whose aud is the requesting app, you are presenting an ID Token. The grant's aud must be the resource AS.

08

Stability — what you can ship

draft-ietf-oauth-identity-assertion-authz-grant-06, 31 October 2026, expires 4 May 2027, OAuth WG. https://datatracker.ietf.org/doc/draft-ietf-oauth-identity-assertion-authz-grant/. Draft-06 only changes the IdP subject-token validation error from invalid_grant to invalid_request. Pin versions; test vendor interop. Not an RFC.

Catalog claims (short form)

ID-JAG
JWT grant signed by the IdP, about the user, aud = resource AS — not aud = the requesting client (unlike an ID Token).

Implementer notes

Pin draft-06 (31 October 2026, expires 4 May 2027). Draft-05 (30 October 2026) added mTLS certificate binding beside DPoP for the ID-JAG, requires the jwt-dpop grant type for DPoP-bound ID-JAGs, and allows a key-bound ID-JAG to replace client authentication at the resource AS. Draft-06 changes the IdP error for a subject token that fails validation from invalid_grant to invalid_request. This does not replace CIBA: use CIBA when a specific action needs a human on a phone, XAA when IT policy already authorized the connection.

Related

Primary sources

  • Datatrackerhttps://datatracker.ietf.org/doc/draft-ietf-oauth-identity-assertion-authz-grant/
  • HTML of draft-06https://datatracker.ietf.org/doc/html/draft-ietf-oauth-identity-assertion-authz-grant-06