<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.35 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-oauth-identity-assertion-authz-grant-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title abbrev="ID JWT Authz Grant">Identity Assertion JWT Authorization Grant</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-identity-assertion-authz-grant-03"/>
    <author fullname="Aaron Parecki">
      <organization>Okta</organization>
      <address>
        <email>aaron@parecki.com</email>
      </address>
    </author>
    <author fullname="Karl McGuinness">
      <organization>Independent</organization>
      <address>
        <email>public@karlmcguinness.com</email>
      </address>
    </author>
    <author fullname="Brian Campbell">
      <organization>Ping Identity</organization>
      <address>
        <email>bcampbell@pingidentity.com</email>
      </address>
    </author>
    <date year="2026" month="April" day="22"/>
    <area>Security</area>
    <workgroup>Web Authorization Protocol</workgroup>
    <keyword>cross-domain</keyword>
    <keyword>authorization</keyword>
    <keyword>authz</keyword>
    <keyword>assertion</keyword>
    <keyword>enterprise</keyword>
    <abstract>
      <?line 88?>

<t>This specification provides a mechanism for an application to use an identity assertion to obtain an access token for a third-party API by coordinating through an identity provider that the downstream Resource Authorization Server already trusts for single sign-on (SSO), using Token Exchange <xref target="RFC8693"/> and JWT Profile for OAuth 2.0 Authorization Grants <xref target="RFC7523"/>.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://drafts.oauth.net/oauth-identity-assertion-authz-grant/draft-ietf-oauth-identity-assertion-authz-grant.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-oauth-identity-assertion-authz-grant/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Web Authorization Protocol Working Group mailing list (<eref target="mailto:oauth@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/oauth/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/oauth/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/oauth-wg/oauth-identity-assertion-authz-grant"/>.</t>
    </note>
  </front>
  <middle>
    <?line 92?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>In many deployments, applications are configured for single sign-on to a common identity provider (IdP) using OpenID Connect or SAML. This enables users to access multiple applications using a single account at the IdP, and enables the operator of that IdP to manage which users can access which applications and enforce policy for access to those applications. Enterprise workforce identity providers are one common example, but the same trust pattern can also arise in customer identity, platform identity, and other federated application ecosystems.</t>
      <t>When one application wants to access a user's data at another application, it will start an interactive OAuth flow <xref target="RFC6749"/> to obtain an access token for the application on behalf of the user. This OAuth flow enables a direct app-to-app connection between the two apps, and is not visible to the IdP used to log in to each app.</t>
      <t>This specification enables this access to be mediated by the IdP that the downstream Resource Authorization Server already trusts for SSO and subject resolution, similar to how the IdP manages single sign-on to individual applications. This mechanism is informally referred to as "cross app access", often abbreviated "XAA".</t>
      <t>The draft specification "Identity Chaining Across Trust Domains" <xref target="I-D.ietf-oauth-identity-chaining"/> defines how to request a JWT Authorization Grant from an Authorization Server and exchange it for an Access Token at another Authorization Server in a different trust domain. The specification combines OAuth 2.0 Token Exchange <xref target="RFC8693"/> and JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants <xref target="RFC7523"/>. The draft supports multiple different use cases by leaving many details of the token exchange request and JWT authorization grant unspecified.</t>
      <t>This specification defines the additional details necessary to support interoperable implementations when two applications are configured such that the downstream Resource Authorization Server trusts the same IdP for SSO and subject resolution. In particular, this specification uses an Identity Assertion as the input to the token exchange request (as opposed to other types of tokens). This way, the same IdP that is trusted by the Resource Authorization Server for SSO can be extended to broker access to APIs. The Resource Authorization Server still determines whether to honor the ID-JAG, what scopes or authorization details to allow, and what access token to issue under its own policy.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<section anchor="roles">
        <name>Roles</name>
        <dl>
          <dt>Client</dt>
          <dd>
            <t>The application that wants to obtain an OAuth 2.0 access token on behalf of a signed-in user to an external/3rd party application's API (Resource Server below). In <xref target="I-D.ietf-oauth-identity-chaining"/>, this is the Client in trust domain A.  The application has a direct relationship with the IdP Authorization Server for single sign-on as a Relying Party and another independent OAuth 2.0 client relationship with the Resource Authorization Server in trust domain B.</t>
          </dd>
          <dt>IdP Authorization Server (IdP)</dt>
          <dd>
            <t>An OpenID Connect Provider (OP) <xref target="OpenID.Core"/> or SAML 2.0 Identity Provider that issues Identity Assertions for single sign-on and cross-domain authorization grants <xref target="id-jag"/> for a set of trusted applications in an application ecosystem. In this specification, the IdP is the issuer that the Resource Authorization Server already trusts for SSO and subject resolution for the target user accounts. In <xref target="I-D.ietf-oauth-identity-chaining"/>, this is the Authorization Server in trust domain A, which is also trusted by the Resource Authorization Server in trust domain B.</t>
          </dd>
          <dt>Resource Authorization Server (AS)</dt>
          <dd>
            <t>Issues OAuth 2.0 access tokens for protected resources provided by the Resource Server. In <xref target="I-D.ietf-oauth-identity-chaining"/>, this is the Authorization Server in trust domain B, and trusts cross-domain authorization grants <xref target="id-jag"/> from the IdP Authorization Server.</t>
          </dd>
          <dt>Resource Server (RS)</dt>
          <dd>
            <t>Hosts protected resources and validates access tokens issued by the Resource Authorization Server.  In <xref target="I-D.ietf-oauth-identity-chaining"/>, this is the Protected Resource in trust domain B.  The Resource Server has no direct trust relationship with the IdP Authorization Server. Instead, it validates access tokens issued by its trusted Resource Authorization Server to determine who should have access to resources.</t>
          </dd>
        </dl>
      </section>
      <section anchor="terms">
        <name>Terms</name>
        <t>The following terms are used in this document:</t>
        <t>Common OAuth and token processing terms such as client, authorization server, resource server, resource owner, access token, refresh token, token, grant, assertion, <tt>subject_token</tt>, <tt>subject_token_type</tt>, <tt>actor_token</tt>, and <tt>actor_token_type</tt> are used as defined in OAuth 2.0 <xref target="RFC6749"/>, JSON Web Token (JWT) <xref target="RFC7519"/>, JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants <xref target="RFC7523"/>, OAuth 2.0 Token Exchange <xref target="RFC8693"/>, and OAuth 2.0 Authorization Server Metadata <xref target="RFC8414"/>, unless otherwise specified by this document.</t>
        <t>OpenID Connect terms such as end-user, Relying Party, OpenID Provider, ID Token, subject identifier, and pairwise subject identifier are used as defined in OpenID Connect Core 1.0 <xref target="OpenID.Core"/>, unless otherwise specified by this document.</t>
        <dl>
          <dt>Identity Assertion</dt>
          <dd>
            <t>A security token issued by the IdP Authorization Server that conveys claims about the End-User and can be used as the <tt>subject_token</tt> input to Token Exchange. In this specification, the Identity Assertion is typically an OpenID Connect ID Token or a SAML 2.0 assertion.</t>
          </dd>
          <dt>Trust Domain</dt>
          <dd>
            <t>A deployment-specific security and administrative boundary within which a set of entities, identifiers, credentials, and policy decisions are mutually trusted according to established trust relationships. In this specification, the IdP Authorization Server operates in trust domain A, while the Resource Authorization Server and Resource Server operate in trust domain B.</t>
          </dd>
          <dt>Cross-Domain</dt>
          <dd>
            <t>Involving two or more trust domains where an assertion, grant, or authorization decision produced in one trust domain is relied upon in another. In this specification, the IdP Authorization Server operates in trust domain A, while the Resource Authorization Server and Resource Server operate in trust domain B.</t>
          </dd>
          <dt>Subject Resolution</dt>
          <dd>
            <t>The process by which the Resource Authorization Server determines which local subject represents the End-User identified by the ID-JAG. Subject resolution can use stable identifiers and other trusted claims in the ID-JAG, such as <tt>iss</tt>, <tt>sub</tt>, <tt>tenant</tt>, <tt>aud_sub</tt>, <tt>email</tt>, or deployment-specific claims, and can include JIT provisioning when permitted by policy.</t>
          </dd>
          <dt>JIT provisioning</dt>
          <dd>
            <t>The process by which the Resource Authorization Server or a relying service creates a new local account or subject record, or updates an existing one, using trusted identity claims presented during the transaction rather than requiring separate pre-provisioning. In this specification, JIT provisioning may occur as part of subject resolution when permitted by policy.</t>
          </dd>
          <dt>Tenant</dt>
          <dd>
            <t>A deployment-specific administrative, organizational, or customer boundary within an issuer or relying service that scopes subjects, clients, policy, and other identifiers. In single-tenant deployments, the issuer may uniquely identify the tenant context; in multi-tenant deployments, the tenant context may need to be conveyed explicitly, for example by the <tt>tenant</tt> or <tt>aud_tenant</tt> claim.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="id-jag">
      <name>Identity Assertion JWT Authorization Grant</name>
      <t>The Identity Assertion JWT Authorization Grant (ID-JAG) is a profile of the JWT Authorization Grant <xref target="RFC7523"/> that grants a client delegated access to a resource in another trust domain on behalf of a user without a direct user-approval step at the authorization server. In addition to traditional OAuth scope-based authorization, this specification can be extended with Rich Authorization Requests (RAR) <xref target="RFC9396"/>, allowing clients to request limited authorization using structured authorization details.</t>
      <t>An ID-JAG is issued and signed by an IdP Authorization Server similar to an ID Token <xref target="OpenID.Core"/>, and contains claims about an End-User. Instead of being issued for a Client (Relying Party in <xref target="OpenID.Core"/>) as the intended audience for the assertion, it is instead issued with an audience of an Authorization Server in another trust domain (Resource Authorization Server). It replaces the need for the client to obtain an authorization code from the Resource Authorization Server to delegate access to the client, and instead uses the IdP Authorization Server that is trusted by the Resource Authorization Server for SSO and subject resolution to delegate access to the client. The Resource Authorization Server still applies local policy when deciding whether to honor the ID-JAG and what access token to issue.</t>
      <t>As described in <xref target="OpenID.Core"/>, ID Tokens are only intended to be processed by the Relying Party (indicated by the ID Token audience) or the Issuer (e.g. for revocation), and not by other actors in a different trust domain such as an Authorization Server.</t>
      <section anchor="id-jag-claims">
        <name>ID-JAG Claims</name>
        <t>The following claims are used within the Identity Assertion JWT Authorization Grant:</t>
        <dl>
          <dt><tt>iss</tt>:</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14> - The issuer identifier of the IdP Authorization Server as defined in <xref target="RFC8414"/>.</t>
          </dd>
          <dt><tt>sub</tt>:</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14> - Subject Identifier. An identifier within the IdP Authorization Server for the End-User, which is intended to be consumed by the Client as defined in <xref target="OpenID.Core"/>. The identifier <bcp14>MUST</bcp14> be the same as the subject identifier used in an Identity Assertion for the Resource Authorization Server as a Relying Party for Single Sign-On (SSO).  A public subject identifier <bcp14>MUST</bcp14> be unique when scoped with issuer (<tt>iss</tt>+<tt>sub</tt>) for a single-tenant issuer and <bcp14>MUST</bcp14> be unique when scoped with issuer and tenant (<tt>iss</tt>+<tt>tenant</tt>+<tt>sub</tt>) for multi-tenant issuer. See <xref target="client-id-mapping"/> for additional considerations.</t>
          </dd>
          <dt><tt>aud</tt>:</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14> - The issuer identifier of the Resource Authorization Server as defined in <xref target="RFC8414"/>.</t>
          </dd>
          <dt><tt>client_id</tt>:</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14> - The client identifier of the OAuth 2.0 <xref target="RFC6749"/> client at the Resource Authorization Server that will act on behalf of the resource owner (<tt>sub</tt>).  This identifier <bcp14>MAY</bcp14> be different that client identifier of the OAuth 2.0 client requesting an ID-JAG from the IdP <xref section="4.3" sectionFormat="of" target="RFC8693"/> as it represents and independent client relationship to another Authorization Server in a different trust domain.  See <xref target="client-id-mapping"/> for additional considerations.</t>
          </dd>
          <dt><tt>jti</tt>:</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14> - Unique ID of this JWT as defined in <xref section="4.1.7" sectionFormat="of" target="RFC7519"/>.</t>
          </dd>
          <dt><tt>exp</tt>:</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14> - as defined in <xref section="4.1.4" sectionFormat="of" target="RFC7519"/>.</t>
          </dd>
          <dt><tt>iat</tt>:</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14> - as defined in <xref section="4.1.6" sectionFormat="of" target="RFC7519"/>.</t>
          </dd>
          <dt><tt>resource</tt>:</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14> - The Resource Identifier (<xref section="2" sectionFormat="of" target="RFC8707"/>) of the Resource Server (either a single URI or an array of URIs).</t>
          </dd>
          <dt><tt>scope</tt>:</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14> - a JSON string containing a space-separated list of scopes associated with the token, in the format described in <xref section="3.3" sectionFormat="of" target="RFC6749"/>.</t>
          </dd>
          <dt><tt>authorization_details</tt>:</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14> - A JSON array of authorization detail objects as defined in <xref section="2" sectionFormat="of" target="RFC9396"/>. This claim enables Rich Authorization Requests (RAR) support, allowing structured authorization requests beyond simple scope strings.</t>
          </dd>
          <dt><tt>act</tt>:</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14> - Actor claim as defined in <xref section="4.1" sectionFormat="of" target="RFC8693"/>. When present, this claim identifies the actor that is acting on behalf of the subject (<tt>sub</tt>).</t>
          </dd>
          <dt><tt>tenant</tt>:</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14> - JSON string that represents the tenant identifier for a multi-tenant issuer as defined in <xref target="OpenID.Enterprise"/></t>
          </dd>
          <dt><tt>auth_time</tt>:</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14> - Time when End-User authenticated as defined in <xref target="OpenID.Core"/>.</t>
          </dd>
          <dt><tt>acr</tt>:</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14> -  Authentication Context Class Reference that was satisfied when authenticating the End-User as defined in <xref target="OpenID.Core"/>.</t>
          </dd>
          <dt><tt>amr</tt>:</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14> -  Identifiers for authentication methods used when authenticating the End-User as defined in <xref target="OpenID.Core"/>.</t>
          </dd>
          <dt><tt>aud_tenant</tt>:</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14> - A JSON string that represents a Resource Authorization Server tenant identifier. This claim is only included when the Resource Authorization Server is multi-tenant and the IdP knows the tenant identifier. When <tt>aud_tenant</tt> is present, the <tt>aud_sub</tt> claim represents the identifier the Resource Authorization Server has for the account within the context of that specific Resource Authorization Server tenant. The combination of <tt>aud</tt> + <tt>aud_tenant</tt> and <tt>aud_sub</tt> <bcp14>MUST</bcp14> be unique within the Resource Authorization Server.</t>
          </dd>
          <dt><tt>aud_sub</tt>:</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14> - The Resource Authorization Server's identifier for the End-User as defined in <xref target="OpenID.Enterprise"/>.</t>
          </dd>
          <dt><tt>email</tt>:</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14> - End-User's e-mail address as defined in Section 5.1 of <xref target="OpenID.Core"/>.</t>
          </dd>
        </dl>
        <t>The <tt>typ</tt> of the JWT indicated in the JWT header <bcp14>MUST</bcp14> be <tt>oauth-id-jag+jwt</tt>. Using typed JWTs is a recommendation of the JSON Web Token Best Current Practices as described in <xref section="3.11" sectionFormat="of" target="RFC8725"/>.</t>
        <t>A non-normative example JWT with expanded header and payload claims is below:</t>
        <artwork><![CDATA[
{
  "typ": "oauth-id-jag+jwt"
}
.
{
  "jti": "9e43f81b64a33f20116179",
  "iss": "https://acme.idp.example",
  "sub": "U019488227",
  "aud": "https://acme.chat.example/",
  "client_id": "f53f191f9311af35",
  "exp": 1311281970,
  "iat": 1311280970,
  "resource": "https://acme.chat.example/api",
  "scope": "chat.read chat.history",
  "auth_time": 1311280970,
  "amr": [
    "mfa",
    "phrh",
    "hwk",
    "user"
  ]
}
.
signature
]]></artwork>
        <t>The ID-JAG may contain additional authentication, identity, or authorization claims that are valid for an ID Token <xref target="OpenID.Core"/> as the grant functions as both an Identity Assertion and authorization delegation for the Resource Authorization Server.</t>
        <t>It is <bcp14>RECOMMENDED</bcp14> that the ID-JAG contain an <tt>email</tt> <xref target="OpenID.Core"/> and/or <tt>aud_sub</tt> <xref target="OpenID.Enterprise"/> claim. The Resource Authorization Server <bcp14>MAY</bcp14> use these claims for subject resolution, including JIT provisioning, for example when the user has not yet SSO'd into the Resource Authorization Server. Additional Resource Authorization Server specific identity claims <bcp14>MAY</bcp14> be needed for subject resolution.</t>
      </section>
    </section>
    <section anchor="cross-domain-access">
      <name>Cross-Domain Access</name>
      <section anchor="overview">
        <name>Overview</name>
        <t>The example flow is for an enterprise <tt>acme</tt>, which uses a multi-tenant wiki app and chat app from different vendors, both of which are integrated into the enterprise's multi-tenant Identity Provider using OpenID Connect. Enterprise is a common deployment shape for this profile, but it is not the only one. The same pattern applies anywhere the Resource Authorization Server already trusts the issuing IdP for SSO and subject resolution.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Role</th>
              <th align="left">App URL</th>
              <th align="left">Tenant URL</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Client</td>
              <td align="left">
                <tt>https://wiki.example</tt></td>
              <td align="left">
                <tt>https://acme.wiki.example</tt></td>
              <td align="left">Wiki app that embeds content from one or more resource servers</td>
            </tr>
            <tr>
              <td align="left">Resource Authorization Server</td>
              <td align="left">
                <tt>https://chat.example</tt></td>
              <td align="left">
                <tt>https://acme.chat.example</tt></td>
              <td align="left">Authorization Server for an chat and communication app</td>
            </tr>
            <tr>
              <td align="left">Identity Provider Authorization Server</td>
              <td align="left">
                <tt>https://idp.example</tt></td>
              <td align="left">
                <tt>https://acme.idp.example</tt></td>
              <td align="left">Enterprise Identity Provider</td>
            </tr>
            <tr>
              <td align="left">Resource Server</td>
              <td align="left">
                <tt>https://api.chat.example</tt></td>
              <td align="left">
                <tt>https://api.chat.example</tt></td>
              <td align="left">Public API for the chat and communications app</td>
            </tr>
          </tbody>
        </table>
        <t>Sequence Diagram</t>
        <artwork><![CDATA[
+---------+       +---------------+  +---------------+  +----------+
|         |       |      IdP      |  |   Resource    |  | Resource |
| Client  |       | Authorization |  | Authorization |  |  Server  |
|         |       |    Server     |  |    Server     |  |          |
+----+----+       +-------+-------+  +-------+-------+  +-----+----+
     |                    |                  |                 |
     |                    |                  |                 |
     | -----------------> |                  |                 |
     |   1 User SSO       |                  |                 |
     |                    |                  |                 |
     |     ID Token &     |                  |                 |
     | Refresh Token (Opt)|                  |                 |
     | <- - - - - - - - - |                  |                 |
     |                    |                  |                 |
     |                    |                  |                 |
     |                    |                  |                 |
     | 2 Token Exchange   |                  |                 |
     | (Identity Assertion|                  |                 |
     |  or Refresh Token) |                  |                 |
     | ---------------->  |                  |                 |
     |                    |                  |                 |
     |   ID-JAG           |                  |                 |
     | <- - - - - - - -   |                  |                 |
     |                    |                  |                 |
     |                    |                  |                 |
     |                    |                  |                 |
     | 3 Present ID-JAG   |                  |                 |
     | -------------------+----------------> |                 |
     |                    |                  |                 |
     |    Access Token    |                  |                 |
     | <- - - - - - - - - - - - - - - - - - -|                 |
     |                    |                  |                 |
     |                    |                  |                 |
     |                    |                  |                 |
     | 4 Resource Request with Access Token  |                 |
     | ------------------------------------------------------> |
     |                    |                  |                 |
     |                    |                  |                 |
     |                    |                  |                 |
]]></artwork>
        <ol spacing="normal" type="1"><li>
            <t>User authenticates with the IdP Authorization Server, the Client obtains an Identity Assertion (e.g. OpenID Connect ID Token or SAML 2.0 Assertion) for the user and optionally a Refresh Token (when using OpenID Connect) and signs the user in</t>
          </li>
          <li>
            <t>Client uses the Identity Assertion or a previously issued Refresh Token from the IdP to request an Identity Assertion JWT Authorization Grant for the Resource Authorization Server from the IdP Authorization Server</t>
          </li>
          <li>
            <t>Client exchanges the Identity Assertion JWT Authorization Grant for an Access Token at the Resource Authorization Server's token endpoint</t>
          </li>
          <li>
            <t>Client makes an API request to the Resource Server with the Access Token</t>
          </li>
        </ol>
        <t>This specification is constrained to deployments where the Client has a Relying Party relationship with the IdP Authorization Server for SSO, and the Resource Authorization Server independently trusts that same IdP Authorization Server for SSO and subject resolution for the user represented in the ID-JAG. The IdP Authorization Server provides the trusted identity context that allows the Resource Authorization Server to evaluate the ID-JAG. The Resource Authorization Server not only delegates user authentication to that IdP, but also relies on the IdP-issued grant as input to delegated authorization for the scopes, resources, and authorization details conveyed in the ID-JAG. The Resource Authorization Server does not need to obtain user consent directly from the resource owner again at the token exchange step. The Resource Authorization Server still applies local policy to decide whether to honor the grant, whether to narrow or reject the requested access, and what access token to issue. A deployment <bcp14>MAY</bcp14> trust more than one IdP Authorization Server for this purpose, but for each trusted issuer the Resource Authorization Server <bcp14>MUST</bcp14> be configured to recognize that issuer, resolve identities asserted by that issuer to the appropriate local account or principal, and associate the ID-JAG with the correct client relationship.</t>
      </section>
      <section anchor="user-authentication">
        <name>User Authentication</name>
        <t>The Client initiates an authentication request with the IdP Authorization Server using OpenID Connect or SAML.</t>
        <t>The following is an example using OpenID Connect</t>
        <artwork><![CDATA[
302 Redirect
Location: https://acme.idp.example/authorize?response_type=code&scope=openid%20offline_access&client_id=...
]]></artwork>
        <t>The user authenticates with the IdP, and is redirected back to the Client with an authorization code, which it can then exchange for an ID Token and optionally a Refresh Token when <tt>offline_access</tt> scope is requested per <xref target="OpenID.Core"/>.</t>
        <t>Note: The IdP Authorization Server may enforce security controls such as multi-factor authentication before granting the user access to the Client.</t>
        <artwork><![CDATA[
POST /token HTTP/1.1
Host: acme.idp.example
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code
&code=.....

HTTP/1.1 200 OK
Content-Type: application/json

{
  "id_token": "eyJraWQiOiJzMTZ0cVNtODhwREo4VGZCXzdrSEtQ...",
  "token_type": "Bearer",
  "access_token": "7SliwCQP1brGdjBtsaMnXo",
  "refresh_token": "tGzv3JOkF0XG5Qx2TlKWIA"
  "scope": "openid offline_access"
}
]]></artwork>
      </section>
      <section anchor="token-exchange">
        <name>Token Exchange</name>
        <t>The Client makes a Token Exchange <xref target="RFC8693"/> request to the IdP Authorization Server's Token Endpoint with the following parameters:</t>
        <dl>
          <dt><tt>requested_token_type</tt>:</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14> - The value <tt>urn:ietf:params:oauth:token-type:id-jag</tt> indicates that an Identity Assertion JWT Authorization Grant is being requested.</t>
          </dd>
          <dt><tt>audience</tt>:</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14> - The identifier of the Resource Authorization Server in another trust domain as the intended audience for the ID-JAG. IdP Authorization Servers <bcp14>MUST</bcp14> support the issuer identifier of the Resource Authorization Server as defined in <xref section="2" sectionFormat="of" target="RFC8414"/>. IdP Authorization Servers <bcp14>MAY</bcp14> also support implementation-specific <tt>audience</tt> values, such as URNs, that identify pre-established trust relationships with Resource Authorization Servers. When such a value is used, the IdP Authorization Server resolves it to the corresponding Resource Authorization Server identifier and issues the ID-JAG with that identifier in the <tt>aud</tt> claim.</t>
          </dd>
          <dt><tt>resource</tt>:</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14> - The Resource Identifier of the Resource Server as defined in <xref section="2" sectionFormat="of" target="RFC8707"/>.</t>
          </dd>
          <dt><tt>scope</tt>:</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14> - The space-separated list of scopes at the Resource Server that is being requested.</t>
          </dd>
          <dt><tt>authorization_details</tt>:</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14> - A JSON string containing a JSON array of authorization detail objects as defined in <xref section="2" sectionFormat="of" target="RFC9396"/>. This parameter enables Rich Authorization Requests (RAR) support, allowing structured authorization requests beyond simple scope strings.</t>
          </dd>
          <dt><tt>subject_token</tt>:</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14> - Either the Identity Assertion (e.g. the OpenID Connect ID Token or SAML 2.0 Assertion) for the target resource owner, or a Refresh Token previously issued by the IdP Authorization Server for that resource owner. Implementations of this specification <bcp14>MUST</bcp14> accept Identity Assertions. They <bcp14>MAY</bcp14> additionally accept Refresh Tokens to allow the client to obtain a new ID-JAG without performing a new single sign-on round trip when the Identity Assertion has expired.</t>
          </dd>
          <dt><tt>subject_token_type</tt>:</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14> - An identifier, as described in <xref section="3" sectionFormat="of" target="RFC8693"/>, that indicates the type of the security token in the <tt>subject_token</tt> parameter. For an OpenID Connect ID Token: <tt>urn:ietf:params:oauth:token-type:id_token</tt>, for a SAML 2.0 Assertion: <tt>urn:ietf:params:oauth:token-type:saml2</tt>, and for a Refresh Token (when supported): <tt>urn:ietf:params:oauth:token-type:refresh_token</tt>.</t>
          </dd>
        </dl>
        <t>When a Refresh Token is used as the subject token, the client still requests <tt>requested_token_type=urn:ietf:params:oauth:token-type:id-jag</tt>; this allows the client to refresh an Identity Assertion JWT Authorization Grant without fetching a new Identity Assertion from the user-facing SSO flow.</t>
        <dl>
          <dt><tt>actor_token</tt>:</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14> - A security token that identifies the actor, as described in <xref section="2.1" sectionFormat="of" target="RFC8693"/>.</t>
          </dd>
          <dt><tt>actor_token_type</tt>:</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14> when <tt>actor_token</tt> is present, as described in <xref section="2.1" sectionFormat="of" target="RFC8693"/> - An identifier, as described in <xref section="3" sectionFormat="of" target="RFC8693"/>, that indicates the type of the security token in the <tt>actor_token</tt> parameter.</t>
          </dd>
        </dl>
        <t>This specification does not define normative processing requirements for <tt>actor_token</tt> or whether an <tt>act</tt> claim is included in the issued ID-JAG. Future profiles or extensions <bcp14>MAY</bcp14> define how <tt>actor_token</tt> is validated, how it influences policy evaluation, and whether it results in an <tt>act</tt> claim in the issued ID-JAG.</t>
        <t>This specification profiles the <tt>audience</tt> and <tt>resource</tt> parameters of OAuth 2.0 Token Exchange <xref target="RFC8693"/> for interoperable use with ID-JAG. In this profile, <tt>audience</tt> identifies the Resource Authorization Server to which the ID-JAG is issued, and <tt>resource</tt> identifies the protected resource for which access is requested. This profile uses <tt>audience</tt> for the Resource Authorization Server rather than defining a new parameter. The ID-JAG is issued by the IdP Authorization Server for processing by the Resource Authorization Server, and the Resource Authorization Server validates the <tt>aud</tt> claim to determine whether the ID-JAG was issued for it. The <tt>resource</tt> parameter continues to identify the protected resource, as defined in <xref target="RFC8707"/>. This convention provides a single interoperable interpretation of <tt>audience</tt> and <tt>resource</tt>, including deployments in which one Resource Authorization Server governs multiple protected resources or tenant-specific resources.</t>
        <t>For example, if a SaaS provider operates a Resource Authorization Server at <tt>https://authorization-server.saas-tool.example/</tt> and protected resources at <tt>https://api.saas-tool.example/files</tt> and <tt>https://api.saas-tool.example/messages</tt>, a client requesting access to the Files API uses:</t>
        <artwork><![CDATA[
audience=https://authorization-server.saas-tool.example/
resource=https://api.saas-tool.example/files
]]></artwork>
        <t>If a Resource Authorization Server at <tt>https://login.saas-tool.example/</tt> governs tenant-specific resources such as <tt>https://api.saas-tool.example/acme/</tt> and <tt>https://api.saas-tool.example/fabrikam/</tt>, the <tt>audience</tt> value remains the Resource Authorization Server identifier and the <tt>resource</tt> value distinguishes the protected resource. For example:</t>
        <artwork><![CDATA[
audience=https://login.saas-tool.example/
resource=https://api.saas-tool.example/acme/
]]></artwork>
        <t>and:</t>
        <artwork><![CDATA[
audience=https://login.saas-tool.example/
resource=https://api.saas-tool.example/fabrikam/
]]></artwork>
        <t>If the IdP Authorization Server supports an implementation-specific <tt>audience</tt> value such as <tt>urn:example:idp:saas-tool</tt> for that same Resource Authorization Server, the client <bcp14>MAY</bcp14> send:</t>
        <artwork><![CDATA[
audience=urn:example:idp:saas-tool
resource=https://api.saas-tool.example/files
]]></artwork>
        <t>In that case, the IdP Authorization Server resolves the requested <tt>audience</tt> value to <tt>https://authorization-server.saas-tool.example/</tt> and issues the ID-JAG with <tt>aud</tt> set to <tt>https://authorization-server.saas-tool.example/</tt>.</t>
        <t>Client authentication to the Resource Authorization Server is done using the standard mechanisms provided by OAuth 2.0. <xref section="2.3.1" sectionFormat="of" target="RFC6749"/> defines password-based authentication of the client (<tt>client_id</tt> and <tt>client_secret</tt>), however, client authentication is extensible and other mechanisms are possible. For example, <xref target="RFC7523"/> defines client authentication using bearer JSON Web Tokens using <tt>client_assertion</tt> and <tt>client_assertion_type</tt>.</t>
        <section anchor="token-exchange-id-token-example">
          <name>Example: Token Exchange using ID Token</name>
          <t>This example uses an ID Token as the <tt>subject_token</tt> and a JWT Bearer Assertion <xref target="RFC7523"/> for client authentication (tokens truncated for brevity):</t>
          <artwork><![CDATA[
POST /oauth2/token HTTP/1.1
Host: acme.idp.example
Content-Type: application/x-www-form-urlencoded

grant_type=urn:ietf:params:oauth:grant-type:token-exchange
&requested_token_type=urn:ietf:params:oauth:token-type:id-jag
&audience=https://acme.chat.example/
&resource=https://api.chat.example/
&scope=chat.read+chat.history
&subject_token=eyJraWQiOiJzMTZ0cVNtODhwREo4VGZCXzdrSEtQ...
&subject_token_type=urn:ietf:params:oauth:token-type:id_token
&client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
&client_assertion=eyJhbGciOiJSUzI1NiIsImtpZCI6IjIyIn0...
]]></artwork>
        </section>
        <section anchor="token-exchange-refresh-token-example">
          <name>Example: Token Exchange using Refresh Token</name>
          <t>This non-normative example shows using a Refresh Token as the <tt>subject_token</tt> (when supported by the IdP Authorization Server) to obtain an ID-JAG without acquiring a new Identity Assertion:</t>
          <artwork><![CDATA[
POST /oauth2/token HTTP/1.1
Host: acme.idp.example
Content-Type: application/x-www-form-urlencoded

grant_type=urn:ietf:params:oauth:grant-type:token-exchange
&requested_token_type=urn:ietf:params:oauth:token-type:id-jag
&audience=https://acme.chat.example/
&resource=https://api.chat.example/
&scope=chat.read+chat.history
&subject_token=tGzv3JOkF0XG5Qx2TlKWIA
&subject_token_type=urn:ietf:params:oauth:token-type:refresh_token
&client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
&client_assertion=eyJhbGciOiJSUzI1NiIsImtpZCI6IjIyIn0...
]]></artwork>
        </section>
        <section anchor="processing-rules">
          <name>Processing Rules</name>
          <t>The IdP <bcp14>MUST</bcp14> validate the subject token:</t>
          <ul spacing="normal">
            <li>
              <t>If the subject token is an Identity Assertion, the IdP <bcp14>MUST</bcp14> validate the assertion and <bcp14>MUST</bcp14> validate that the audience of the assertion (e.g. the <tt>aud</tt> claim of the ID Token or SAML Audience) matches the <tt>client_id</tt> of the client authentication of the request.</t>
            </li>
            <li>
              <t>If the subject token is a Refresh Token, the IdP <bcp14>MUST</bcp14> validate it the same way it would for a standard <tt>refresh_token</tt> grant at the token endpoint: the token is issued by the IdP, bound to the authenticated client, unexpired, not revoked, and the requested scopes and audience remain within the authorization context of the Refresh Token.</t>
            </li>
            <li>
              <t>If the subject token is a Refresh Token, the IdP Authorization Server <bcp14>SHOULD</bcp14> retrieve or assemble the subject's claims needed for the ID-JAG in the same way it would when issuing a new Identity Assertion during a token request, so that the resulting ID-JAG reflects current subject attributes and policy.</t>
            </li>
          </ul>
          <t>If an <tt>actor_token</tt> is present, any processing of it is outside the scope of this specification. Future profiles or extensions <bcp14>MAY</bcp14> define validation requirements, policy evaluation rules, and issued token content related to <tt>actor_token</tt>.</t>
          <t>The IdP Authorization Server evaluates administrator-defined policy for the token exchange request and determines if the client should be granted access to act on behalf of the subject for the target audience, resources, scopes, and authorization details.</t>
          <t>When processing the request:</t>
          <ul spacing="normal">
            <li>
              <t>If <tt>resource</tt> is present, the IdP <bcp14>MUST</bcp14> process it according to <xref section="2" sectionFormat="of" target="RFC8707"/> and evaluate policy to determine the granted resources. The granted resources <bcp14>MAY</bcp14> be a subset of the requested resources based on policy.</t>
            </li>
            <li>
              <t>If <tt>scope</tt> is present, the IdP <bcp14>MUST</bcp14> process it according to <xref section="3.3" sectionFormat="of" target="RFC6749"/> and evaluate policy to determine the granted scopes. The granted scopes <bcp14>MAY</bcp14> be a subset of the requested scopes based on policy.</t>
            </li>
            <li>
              <t>If <tt>authorization_details</tt> is present, the IdP <bcp14>MUST</bcp14> parse it as a JSON array and process each authorization detail object according to <xref target="RFC9396"/>. The IdP evaluates policy for each authorization detail and determines which authorization details to include in the issued ID-JAG. The IdP <bcp14>MAY</bcp14> modify, filter, or omit authorization details based on policy.</t>
            </li>
            <li>
              <t>If both <tt>resource</tt> and <tt>authorization_details</tt> are present, the IdP <bcp14>MUST</bcp14> process both. The IdP <bcp14>SHOULD</bcp14> ensure consistency between the resource identifiers and authorization details, as they may represent overlapping authorization requests. The IdP <bcp14>MAY</bcp14> derive resource identifiers from authorization details or vice versa, or process them independently based on policy.</t>
            </li>
            <li>
              <t>If both <tt>scope</tt> and <tt>authorization_details</tt> are present, the IdP <bcp14>MUST</bcp14> process both. The IdP <bcp14>SHOULD</bcp14> ensure consistency between the scopes and authorization details, as they may represent overlapping authorization requests. The IdP <bcp14>MAY</bcp14> derive scopes from authorization details or vice versa, or process them independently based on policy.</t>
            </li>
            <li>
              <t>The IdP <bcp14>MUST</bcp14> include the granted <tt>resource</tt> (if any), <tt>scope</tt> (if any), and <tt>authorization_details</tt> (if any) in the issued ID-JAG. If the IdP modifies the requested resources, scopes, or authorization details, it <bcp14>MUST</bcp14> reflect the granted values in the ID-JAG.</t>
            </li>
          </ul>
          <t>The IdP may also introspect the authentication context described in the SSO assertion to determine if step-up authentication is required.</t>
        </section>
        <section anchor="response">
          <name>Response</name>
          <t>If access is granted, the IdP creates a signed Identity Assertion JWT Authorization Grant (<xref target="id-jag"/>) and returns it in the token exchange response defined in <xref section="2.2" sectionFormat="of" target="RFC8693"/>:</t>
          <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache

{
  "issued_token_type": "urn:ietf:params:oauth:token-type:id-jag",
  "access_token": "eyJhbGciOiJIUzI1NiIsI...",
  "token_type": "N_A",
  "scope": "chat.read chat.history",
  "expires_in": 300
}
]]></artwork>
          <dl>
            <dt><tt>issued_token_type</tt>:</dt>
            <dd>
              <t><bcp14>REQUIRED</bcp14> - <tt>urn:ietf:params:oauth:token-type:id-jag</tt></t>
            </dd>
            <dt><tt>access_token</tt>:</dt>
            <dd>
              <t><bcp14>REQUIRED</bcp14> - The Identity Assertion JWT Authorization Grant. (Note: Token Exchange requires the <tt>access_token</tt> response parameter for historical reasons, even though this is not an OAuth access token.)</t>
            </dd>
            <dt><tt>token_type</tt>:</dt>
            <dd>
              <t><bcp14>REQUIRED</bcp14> - <tt>N_A</tt> (because this is not an OAuth access token.)</t>
            </dd>
            <dt><tt>scope</tt>:</dt>
            <dd>
              <t><bcp14>OPTIONAL</bcp14> if the scope of the issued token is identical to the scope requested by the client; otherwise, it is <bcp14>REQUIRED</bcp14>. Various policies in the IdP may result in different scopes being issued from the scopes the application requested.</t>
            </dd>
            <dt><tt>authorization_details</tt>:</dt>
            <dd>
              <t><bcp14>OPTIONAL</bcp14> - A JSON array of authorization detail objects as defined in <xref section="2.2" sectionFormat="of" target="RFC9396"/>. This parameter <bcp14>MUST</bcp14> be included if the client requested authorization details and the IdP granted authorization details that differ from what was requested, or if the IdP modified the authorization details.</t>
            </dd>
            <dt><tt>expires_in</tt>:</dt>
            <dd>
              <t><bcp14>RECOMMENDED</bcp14> - The lifetime in seconds of the authorization grant.</t>
            </dd>
            <dt><tt>refresh_token</tt>:</dt>
            <dd>
              <t><bcp14>OPTIONAL</bcp14> according to <xref section="2.2" sectionFormat="of" target="RFC8693"/>. In the context of this specification, this parameter <bcp14>SHOULD NOT</bcp14> be used.</t>
            </dd>
          </dl>
          <section anchor="issued-identity-assertion-jwt-authorization-grant">
            <name>Issued Identity Assertion JWT Authorization Grant</name>
            <t>The following is a non-normative example of the issued token</t>
            <artwork><![CDATA[
{
  "typ": "oauth-id-jag+jwt"
}
.
{
  "jti": "9e43f81b64a33f20116179",
  "iss": "https://acme.idp.example/",
  "sub": "U019488227",
  "aud": "https://acme.chat.example/",
  "client_id": "f53f191f9311af35",
  "exp": 1311281970,
  "iat": 1311280970,
  "resource": "https://api.chat.example/",
  "scope": "chat.read chat.history",
  "auth_time": 1311280970,
  "amr": [
    "mfa",
    "phrh",
    "hwk",
    "user"
  ]
}
.
signature
]]></artwork>
          </section>
          <section anchor="example-with-rich-authorization-requests-rar">
            <name>Example with Rich Authorization Requests (RAR)</name>
            <t>The following is a non-normative example demonstrating the use of Rich Authorization Requests (RAR) <xref target="RFC9396"/> with ID-JAG:</t>
            <t>Token Exchange Request with authorization_details:</t>
            <artwork><![CDATA[
POST /oauth2/token HTTP/1.1
Host: acme.idp.example
Content-Type: application/x-www-form-urlencoded

grant_type=urn:ietf:params:oauth:grant-type:token-exchange
&requested_token_type=urn:ietf:params:oauth:token-type:id-jag
&audience=https://acme.chat.example/
&authorization_details=[{"type":"chat_read","actions":["read"],"locations":["https://api.chat.example/channels"]},{"type":"chat_history","actions":["read"],"datatypes":["message"]}]
&subject_token=eyJraWQiOiJzMTZ0cVNtODhwREo4VGZCXzdrSEtQ...
&subject_token_type=urn:ietf:params:oauth:token-type:id_token
&client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
&client_assertion=eyJhbGciOiJSUzI1NiIsImtpZCI6IjIyIn0...
]]></artwork>
            <t>Token Exchange Response:</t>
            <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache

{
  "issued_token_type": "urn:ietf:params:oauth:token-type:id-jag",
  "access_token": "eyJhbGciOiJIUzI1NiIsI...",
  "token_type": "N_A",
  "authorization_details": [
    {
      "type": "chat_read",
      "actions": ["read"],
      "locations": ["https://api.chat.example/channels"]
    },
    {
      "type": "chat_history",
      "actions": ["read"],
      "datatypes": ["message"]
    }
  ],
  "expires_in": 300
}
]]></artwork>
            <t>Issued Identity Assertion JWT Authorization Grant with authorization_details:</t>
            <artwork><![CDATA[
{
  "typ": "oauth-id-jag+jwt"
}
.
{
  "jti": "9e43f81b64a33f20116179",
  "iss": "https://acme.idp.example/",
  "sub": "U019488227",
  "aud": "https://acme.chat.example/",
  "client_id": "f53f191f9311af35",
  "exp": 1311281970,
  "iat": 1311280970,
  "authorization_details": [
    {
      "type": "chat_read",
      "actions": ["read"],
      "locations": ["https://api.chat.example/channels"]
    },
    {
      "type": "chat_history",
      "actions": ["read"],
      "datatypes": ["message"]
    }
  ],
  "auth_time": 1311280970
}
.
signature
]]></artwork>
            <t>Access Token Request:</t>
            <artwork><![CDATA[
POST /oauth2/token HTTP/1.1
Host: acme.chat.example
Authorization: Basic yZS1yYW5kb20tc2VjcmV0v3JOkF0XG5Qx2

grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer
&assertion=eyJhbGciOiJIUzI1NiIsI...
]]></artwork>
            <t>Access Token Response:</t>
            <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache

{
  "token_type": "Bearer",
  "access_token": "2YotnFZFEjr1zCsicMWpAA",
  "expires_in": 86400,
  "authorization_details": [
    {
      "type": "chat_read",
      "actions": ["read"],
      "locations": ["https://api.chat.example/channels"]
    },
    {
      "type": "chat_history",
      "actions": ["read"],
      "datatypes": ["message"]
    }
  ]
}
]]></artwork>
          </section>
          <section anchor="error-response">
            <name>Error Response</name>
            <t>On an error condition, the IdP returns an OAuth 2.0 Token Error response as defined in <xref section="5.2" sectionFormat="of" target="RFC6749"/>, e.g:</t>
            <artwork><![CDATA[
HTTP/1.1 400 Bad Request
Content-Type: application/json
Cache-Control: no-store

{
  "error": "invalid_grant",
  "error_description": "Audience validation failed"
}
]]></artwork>
          </section>
        </section>
      </section>
      <section anchor="token-request">
        <name>Access Token Request</name>
        <t>The Client makes an access token request to the Resource Authorization Server's token endpoint using the previously obtained Identity Assertion JWT Authorization Grant as a JWT Bearer Assertion as defined by <xref target="RFC7523"/>.</t>
        <dl>
          <dt><tt>grant_type</tt>:</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14> - The value of <tt>grant_type</tt> is <tt>urn:ietf:params:oauth:grant-type:jwt-bearer</tt></t>
          </dd>
          <dt><tt>assertion</tt>:</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14> - The Identity Assertion JWT Authorization Grant obtained in the previous token exchange step</t>
          </dd>
        </dl>
        <t>The Client authenticates with its credentials as registered with the Resource Authorization Server.</t>
        <t>For example:</t>
        <artwork><![CDATA[
POST /oauth2/token HTTP/1.1
Host: acme.chat.example
Authorization: Basic yZS1yYW5kb20tc2VjcmV0v3JOkF0XG5Qx2

grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer
assertion=eyJhbGciOiJIUzI1NiIsI...
]]></artwork>
        <section anchor="processing-rules-1">
          <name>Processing Rules</name>
          <t>All of <xref section="5.2" sectionFormat="of" target="RFC7521"/> applies, in addition to the following processing rules:</t>
          <ul spacing="normal">
            <li>
              <t>Validate the JWT <tt>typ</tt> is <tt>oauth-id-jag+jwt</tt> (per <xref section="3.11" sectionFormat="of" target="RFC8725"/>)</t>
            </li>
            <li>
              <t>The Resource Authorization Server <bcp14>MUST</bcp14> validate the <tt>aud</tt> (audience) claim of the ID-JAG. The <tt>aud</tt> claim <bcp14>MUST</bcp14> contain the issuer identifier of the Resource Authorization Server as defined in <xref target="RFC8414"/>. The <tt>aud</tt> claim <bcp14>MAY</bcp14> be a string containing a single issuer identifier, or an array containing a single issuer identifier. If the <tt>aud</tt> claim is an array, it <bcp14>MUST</bcp14> contain exactly one element, and that element <bcp14>MUST</bcp14> be the issuer identifier of the Resource Authorization Server. If the <tt>aud</tt> claim does not match the Resource Authorization Server's issuer identifier, the Resource Authorization Server <bcp14>MUST</bcp14> reject the JWT with an <tt>invalid_grant</tt> error as defined in <xref section="5.2" sectionFormat="of" target="RFC6749"/>. This validation prevents audience injection attacks and ensures the ID-JAG was intended for this specific Resource Authorization Server.</t>
            </li>
            <li>
              <t>The <tt>client_id</tt> claim <bcp14>MUST</bcp14> identify the same client as the client authentication in the request. The Resource Authorization Server <bcp14>MUST</bcp14> validate that the <tt>client_id</tt> claim in the ID-JAG matches the authenticated client making the request. If they do not match, the Resource Authorization Server <bcp14>MUST</bcp14> reject the request with an <tt>invalid_grant</tt> error. This client continuity requirement preserves the OAuth client binding across the exchange, but it does not by itself identify or authenticate any actor represented in an <tt>act</tt> claim.</t>
            </li>
          </ul>
          <t>When processing authorization information from the ID-JAG:</t>
          <ul spacing="normal">
            <li>
              <t>If the <tt>resource</tt> claim is present, the Resource Authorization Server <bcp14>MUST</bcp14> process it according to <xref section="2" sectionFormat="of" target="RFC8707"/>. The Resource Authorization Server evaluates the resource identifiers and determines which resources to grant access to based on policy. The granted resources <bcp14>MAY</bcp14> be a subset of the resources in the ID-JAG issued by the IdP Authorization Server.</t>
            </li>
            <li>
              <t>If the <tt>scope</tt> claim is present, the Resource Authorization Server <bcp14>MUST</bcp14> process it according to <xref section="3.3" sectionFormat="of" target="RFC6749"/>. The Resource Authorization Server evaluates the scopes and determines which scopes to grant in the access token based on policy. The granted scopes <bcp14>MAY</bcp14> be a subset of the scopes in the ID-JAG issued by the IdP Authorization Server.</t>
            </li>
            <li>
              <t>If the <tt>authorization_details</tt> claim is present, the Resource Authorization Server <bcp14>MUST</bcp14> parse it as a JSON array and process each authorization detail object according to <xref target="RFC9396"/>. The Resource Authorization Server evaluates policy for each authorization detail and determines which authorization details to grant. The Resource Authorization Server <bcp14>MAY</bcp14> modify, filter, or omit authorization details based on policy.</t>
            </li>
            <li>
              <t>If both <tt>resource</tt> and <tt>authorization_details</tt> claims are present, the Resource Authorization Server <bcp14>MUST</bcp14> process both. The Resource Authorization Server <bcp14>SHOULD</bcp14> ensure consistency between the resource identifiers and authorization details when issuing the access token. The Resource Authorization Server <bcp14>MAY</bcp14> derive resource identifiers from authorization details or vice versa, or process them independently based on policy.</t>
            </li>
            <li>
              <t>If both <tt>scope</tt> and <tt>authorization_details</tt> claims are present, the Resource Authorization Server <bcp14>MUST</bcp14> process both. The Resource Authorization Server <bcp14>SHOULD</bcp14> ensure consistency between the scopes and authorization details when issuing the access token. The Resource Authorization Server <bcp14>MAY</bcp14> derive scopes from authorization details or vice versa, or process them independently based on policy.</t>
            </li>
            <li>
              <t>The Resource Authorization Server <bcp14>MUST</bcp14> include the granted <tt>resource</tt> (if any), <tt>scope</tt> (if any), and <tt>authorization_details</tt> (if any) in the access token response. The response format follows <xref section="2" sectionFormat="of" target="RFC8707"/> for resource, <xref section="5.1" sectionFormat="of" target="RFC6749"/> for scope, and <xref section="2.2" sectionFormat="of" target="RFC9396"/> for authorization_details.</t>
            </li>
          </ul>
        </section>
        <section anchor="response-1">
          <name>Response</name>
          <t>The Resource Authorization Server's token endpoint responds with an OAuth 2.0 Token Response, e.g.:</t>
          <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache

{
  "token_type": "Bearer",
  "access_token": "2YotnFZFEjr1zCsicMWpAA",
  "expires_in": 86400,
  "scope": "chat.read chat.history"
}
]]></artwork>
        </section>
        <section anchor="refresh-token">
          <name>Refresh Token</name>
          <t>The Resource Authorization Server <bcp14>SHOULD NOT</bcp14> return a Refresh Token when an Identity Assertion JWT Authorization is exchanged for an Access Token per <xref section="5.2" sectionFormat="of" target="I-D.ietf-oauth-identity-chaining"/>.</t>
          <t>When the access token has expired, clients <bcp14>MAY</bcp14> re-submit the original Identity Assertion JWT Authorization Grant to obtain a new Access Token.  The ID-JAG replaces the use of Refresh Token for the Resource Authorization Server.</t>
          <t>If the ID-JAG has expired, the Client <bcp14>SHOULD</bcp14> request a new ID-JAG from the IdP Authorization Server before presenting it to the Resource Authorization Sever using the original Identity Assertion from the IdP (e.g ID Token)</t>
          <t>If the ID Token is expired, the Client <bcp14>MAY</bcp14> use the Refresh Token obtained from the IdP during SSO to obtain a new ID Token which it can exchange for a new ID-JAG.  If the Client is unable to obtain a new Identity Assertion with a Refresh Token then it <bcp14>SHOULD</bcp14> re-authenticate the user by redirecting to the IdP.</t>
          <t>If the IdP Authorization Server supports Refresh Tokens as a <tt>subject_token</tt> in Token Exchange, the client can skip renewing the Identity Assertion and directly request a new ID-JAG by presenting the Refresh Token (see <xref target="token-exchange-refresh-token-example"/>).</t>
        </section>
      </section>
      <section anchor="saml-20-identity-assertion-interopability">
        <name>SAML 2.0 Identity Assertion Interopability</name>
        <t>Clients using SAML 2.0 for SSO with the IdP Authorization Server can obtain an ID-JAG without changing their SSO protocol to OpenID Connect by first exchanging the SAML 2.0 assertion for a Refresh Token using Token Exchange. This enables protocol transition to OAuth and allows the client to later use the Refresh Token as a <tt>subject_token</tt> to obtain an ID-JAG without prompting the user for a new Identity Assertion.</t>
        <t>The OpenID Connect scopes <tt>openid offline_access</tt> <bcp14>SHOULD</bcp14> be requested (additional scopes are allowed) when requesting a Refresh Token from the IdP Authorization Server.</t>
        <t>The IdP Authorization Server <bcp14>MUST</bcp14> map the SAML Audience to a Client ID and ensure the client's authentication matches that mapping before issuing the Refresh Token.</t>
        <t>The following non-normative example shows a SAML 2.0 assertion where the <tt>Audience</tt> value (from <tt>AudienceRestriction</tt>) corresponds to the Service Provider Entity ID (<tt>SPAuthority</tt> / <tt>SPEntityID</tt>) and <bcp14>MUST</bcp14> be mapped to the OAuth Client ID that the IdP Authorization Server associates with that SAML SP registration.</t>
        <artwork><![CDATA[
<saml2:Assertion xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion"
    ID="_123456789" IssueInstant="2025-03-01T12:34:56Z" Version="2.0">
  <saml2:Issuer>https://idp.example.com/</saml2:Issuer>
  <saml2:Subject>
    <saml2:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress">
      alice@example.com
    </saml2:NameID>
    <saml2:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
      <saml2:SubjectConfirmationData
          NotOnOrAfter="2025-03-01T12:39:56Z"
          Recipient="https://client.example.com/assertion-consumer"/>
    </saml2:SubjectConfirmation>
  </saml2:Subject>
  <saml2:Conditions NotBefore="2025-03-01T12:34:56Z" NotOnOrAfter="2025-03-01T13:34:56Z">
    <saml2:AudienceRestriction>
      <saml2:Audience>https://client.example.com/sp-entity-id</saml2:Audience>
    </saml2:AudienceRestriction>
  </saml2:Conditions>
  <saml2:AttributeStatement>
    <saml2:Attribute Name="given_name">
      <saml2:AttributeValue>Alice</saml2:AttributeValue>
    </saml2:Attribute>
  </saml2:AttributeStatement>
  <saml2:AuthnStatement AuthnInstant="2025-03-01T12:30:00Z">
    <saml2:AuthnContext>
      <saml2:AuthnContextClassRef>
        urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
      </saml2:AuthnContextClassRef>
    </saml2:AuthnContext>
  </saml2:AuthnStatement>
</saml2:Assertion>
]]></artwork>
        <t>When this assertion is used as the <tt>subject_token</tt> in Token Exchange, the IdP Authorization Server <bcp14>MUST</bcp14> verify that the <tt>Audience</tt> / <tt>SPEntityID</tt> maps to the OAuth Client ID that is authenticated for the token request. This prevents a client from presenting an assertion issued for a different SAML SP.</t>
        <artwork><![CDATA[
POST /oauth2/token HTTP/1.1
Host: acme.idp.example
Content-Type: application/x-www-form-urlencoded

grant_type=urn:ietf:params:oauth:grant-type:token-exchange
&requested_token_type=urn:ietf:params:oauth:token-type:refresh_token
&scope=openid+offline_access+email
&subject_token=PHNhbWxwOkFzc2VydGlvbiB4bWxuczp...c2FtbDppc3N1ZXI+PC9zYW1sOkFzc2VydGlvbj4=
&subject_token_type=urn:ietf:params:oauth:token-type:saml2
&client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
&client_assertion=eyJhbGciOiJSUzI1NiIsImtpZCI6IjIyIn0...

HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache

{
  "issued_token_type": "urn:ietf:params:oauth:token-type:refresh_token",
  "access_token": "vF9dft4qmTcXkZ26zL8b6u",
  "token_type": "N_A",
  "scope": "openid offline_access email",
  "expires_in": 1209600
}
]]></artwork>
      </section>
    </section>
    <section anchor="client-id-mapping">
      <name>Cross-Domain Client ID Handling</name>
      <t>There are three separate OAuth/OpenID Connect/SAML relationships involved in this flow:</t>
      <ul spacing="normal">
        <li>
          <t>Client to IdP Authorization Server (OpenID Connect or SAML)</t>
        </li>
        <li>
          <t>Client to Resource Authorization Server (OAuth)</t>
        </li>
        <li>
          <t>Resource Authorization Server to IdP Authorization Server (OpenID Connect or SAML)</t>
        </li>
      </ul>
      <t>Each relationship is typically represented by independent client registrations between each party. For example, the IdP Authorization Server typically issues a Client ID for both the Client and Resource Authorization Server to use for single sign-on with OpenID Connect as a Relying Party. Similarly, the Resource Authorization Server typically issues a Client ID for the Client to use for API access to the Resource Server.   The Client may choose to use different client credentials with each registration.</t>
      <t>In this flow, the IdP Authorization Server accepts a Token Exchange request from the Client, and issues an ID-JAG that will be consumed by the Resource Authorization Server. This means the IdP Authorization Server needs to know about the relationship between the Client and the Resource Authorization Server, in order to include a <tt>client_id</tt> claim in the ID-JAG that will be recognized by the Resource Authorization Server.</t>
      <t>This can be handled by the IdP Authorization Server maintaining a record of each <tt>client_id</tt> used between Clients and Resource Authorization Servers, which will need to be obtained by out-of-band mechanisms.  The Client still needs to authenticate using its registered credential with the Resource Authorization Server when presenting the ID-JAG for the mapped <tt>client_id</tt>. Requiring a confidential client helps to prevent the IdP Authorization Server from delegating access to any of the valid clients for the Resource Authorization Server.</t>
      <t>Note: The IdP Authorization Server is also responsible for mapping subject identifiers across Clients and trust domains in the ID-JAG. The same user may have a pairwise subject identifier issued in an ID Token for SSO to the Client and another with SSO to the Resource Authorization Server as a Relying Party. The Resource Authorization Server needs consistent subject identifiers for subject resolution across both SSO and API access. The IdP Authorization Server needs to ensure that the subject identifier issued in the ID-JAG is the same identifier for the user that it would have included in an ID Token intended for the Resource Authorization Server.</t>
      <t>Alternatively, if clients use "Client ID Metadata Document" <xref target="I-D.ietf-oauth-client-id-metadata-document"/> as their client identifiers, this acts as a shared global namespace of Client IDs and removes the need for the IdP Authorization Server to maintain a mapping of each client registration.</t>
    </section>
    <section anchor="tenant-relationships">
      <name>Tenant Relationships with Issuer and Client ID</name>
      <t>In multi-tenant deployments, the relationship between tenants, issuers, and client identifiers is critical for proper identity and authorization management. This section explains how these components relate to each other in the context of Identity Assertion JWT Authorization Grants.</t>
      <section anchor="issuer-and-tenant-relationship">
        <name>Issuer and Tenant Relationship</name>
        <t>An Authorization Server may operate as either a single-tenant or multi-tenant issuer:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Single-tenant issuer</strong>: The issuer identifier (<tt>iss</tt>) uniquely identifies both the Authorization Server and the tenant. All clients and users belong to a single tenant context. The issuer identifier alone is sufficient to identify the tenant.</t>
          </li>
          <li>
            <t><strong>Multi-tenant issuer</strong>: The issuer identifier (<tt>iss</tt>) identifies the Authorization Server, but multiple tenants may be hosted by the same issuer. In this case, the tenant identifier (<tt>tenant</tt>) claim is used in conjunction with the issuer identifier to uniquely identify the tenant context. The combination of <tt>iss</tt> + <tt>tenant</tt> uniquely identifies the tenant.</t>
          </li>
        </ul>
        <t>When an IdP Authorization Server issues an ID-JAG, it <bcp14>MUST</bcp14> include the <tt>tenant</tt> claim if the issuer is multi-tenant and the tenant context is relevant for the Resource Authorization Server. The IdP <bcp14>MUST</bcp14> determine the appropriate tenant identifier based on the subject's tenant membership and the target Resource Authorization Server's tenant requirements.</t>
      </section>
      <section anchor="client-id-and-tenant-relationship">
        <name>Client ID and Tenant Relationship</name>
        <t>The relationship between <tt>client_id</tt> and tenant depends on the deployment model:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Tenant-scoped client identifiers</strong>: In some deployments, the <tt>client_id</tt> is unique only within a tenant context. The same <tt>client_id</tt> value may exist in different tenants, and the combination of <tt>tenant</tt> + <tt>client_id</tt> (or <tt>iss</tt> + <tt>tenant</tt> + <tt>client_id</tt> for multi-tenant issuers) uniquely identifies the client registration.</t>
          </li>
          <li>
            <t><strong>Global client identifiers</strong>: In other deployments, the <tt>client_id</tt> is globally unique across all tenants. The <tt>client_id</tt> alone uniquely identifies the client, regardless of tenant context.</t>
          </li>
        </ul>
        <t>The IdP Authorization Server <bcp14>MUST</bcp14> understand the client identifier model used by the Resource Authorization Server when including the <tt>client_id</tt> claim in an ID-JAG. For tenant-scoped client identifiers, the IdP <bcp14>MUST</bcp14> ensure that the <tt>client_id</tt> included in the ID-JAG is valid within the tenant context indicated by the <tt>tenant</tt> claim (if present) or the issuer's tenant context.</t>
      </section>
      <section anchor="subject-identifier-uniqueness-with-tenants">
        <name>Subject Identifier Uniqueness with Tenants</name>
        <t>As specified in <xref target="id-jag"/>, subject identifiers (<tt>sub</tt>) have different uniqueness requirements based on tenant configuration:</t>
        <ul spacing="normal">
          <li>
            <t>For single-tenant issuers: The subject identifier <bcp14>MUST</bcp14> be unique when scoped with issuer (<tt>iss</tt> + <tt>sub</tt>).</t>
          </li>
          <li>
            <t>For multi-tenant issuers: The subject identifier <bcp14>MUST</bcp14> be unique when scoped with issuer and tenant (<tt>iss</tt> + <tt>tenant</tt> + <tt>sub</tt>).</t>
          </li>
        </ul>
        <t>The IdP Authorization Server <bcp14>MUST</bcp14> ensure that the <tt>sub</tt> claim in the ID-JAG follows the appropriate uniqueness rules for the target Resource Authorization Server. When the Resource Authorization Server is multi-tenant, the IdP <bcp14>MUST</bcp14> include the <tt>tenant</tt> claim in the ID-JAG to ensure proper subject identifier scoping.</t>
      </section>
      <section anchor="tenant-context-in-token-exchange">
        <name>Tenant Context in Token Exchange</name>
        <t>When a Client requests an ID-JAG via Token Exchange, the IdP Authorization Server determines the tenant context from:</t>
        <ol spacing="normal" type="1"><li>
            <t>The subject token (e.g., ID Token or SAML assertion) used in the token exchange request, which may contain tenant information</t>
          </li>
          <li>
            <t>The authenticated client's tenant membership</t>
          </li>
          <li>
            <t>The target Resource Authorization Server's tenant requirements</t>
          </li>
        </ol>
        <t>The IdP <bcp14>MUST</bcp14> evaluate policy to determine if the requested <tt>audience</tt> (Resource Authorization Server) requires tenant information, and if so, which tenant identifier to include in the issued ID-JAG. The tenant identifier in the ID-JAG <bcp14>MUST</bcp14> match the tenant context that the Resource Authorization Server expects for the specified <tt>client_id</tt> and <tt>sub</tt>.</t>
      </section>
    </section>
    <section anchor="idp-metadata">
      <name>Authorization Server Metadata</name>
      <t>An IdP Authorization Server can advertise the identity chaining token types it can issue in its OAuth Authorization Server Metadata <xref target="RFC8414"/>. Identity and Authorization Chaining Across Domains <xref target="I-D.ietf-oauth-identity-chaining"/> defines the <tt>identity_chaining_requested_token_types_supported</tt> metadata parameter for this purpose.</t>
      <t>To advertise support for issuing an Identity Assertion JWT Authorization Grant via Token Exchange, the IdP Authorization Server <bcp14>SHOULD</bcp14> include the following value in <tt>identity_chaining_requested_token_types_supported</tt>:</t>
      <t><tt>urn:ietf:params:oauth:token-type:id-jag</tt></t>
      <t>A Resource Authorization Server can advertise support for authorization grant profiles in its OAuth Authorization Server Metadata <xref target="RFC8414"/> using the <tt>authorization_grant_profiles_supported</tt> metadata parameter.</t>
      <t>The value of <tt>authorization_grant_profiles_supported</tt> <bcp14>MUST</bcp14> be a JSON array of strings. Each string <bcp14>MUST</bcp14> identify a supported authorization grant profile.</t>
      <t>Inclusion of a profile identifier in <tt>authorization_grant_profiles_supported</tt> indicates only that the Resource Authorization Server implements the processing rules for that profile. It does not indicate that any particular issuer, tenant, client, subject, audience, or authorization request will be accepted.</t>
      <t>To advertise support for the Identity Assertion JWT Authorization Grant profile, the Resource Authorization Server <bcp14>SHOULD</bcp14> include the following value in the <tt>authorization_grant_profiles_supported</tt> property:</t>
      <t><tt>urn:ietf:params:oauth:grant-profile:id-jag</tt></t>
      <t>A Resource Authorization Server that includes <tt>urn:ietf:params:oauth:grant-profile:id-jag</tt> in <tt>authorization_grant_profiles_supported</tt> for this specification <bcp14>MUST</bcp14> also include <tt>urn:ietf:params:oauth:grant-type:jwt-bearer</tt> in <tt>grant_types_supported</tt>.</t>
      <t>These metadata parameters are complementary. <tt>identity_chaining_requested_token_types_supported</tt> indicates which token types an IdP Authorization Server can issue for identity chaining, while <tt>authorization_grant_profiles_supported</tt> indicates which authorization grant profiles a Resource Authorization Server can process.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="client-authentication">
        <name>Client Authentication</name>
        <t>This specification <bcp14>SHOULD</bcp14> only be supported for confidential clients.  Public clients <bcp14>SHOULD</bcp14> use the existing authorization code grant and redirect the user to the Resource Authorization Server with an OAuth 2.0 Authorization Request where the user can interactively consent to the access delegation.</t>
      </section>
      <section anchor="step-up-authentication">
        <name>Step-Up Authentication</name>
        <t>In the initial token exchange request, the IdP may require step-up authentication for the subject if the authentication context in the subject's assertion does not meet policy requirements. An <tt>insufficient_user_authentication</tt> OAuth error response may be returned to convey the authentication requirements back to the client similar to OAuth 2.0 Step-up Authentication Challenge Protocol <xref target="RFC9470"/>.</t>
        <artwork><![CDATA[
HTTP/1.1 400 Bad Request
Content-Type: application/json
Cache-Control: no-store

{
  "error": "insufficient_user_authentication",
  "error_description": "Subject doesn't meet authentication requirements",
  "max_age": 5
}
]]></artwork>
        <t>The Client would need to redirect the user back to the IdP to obtain a new assertion that meets the requirements and retry the token exchange.</t>
        <t>TBD: It may make more sense to request the Identity Assertion JWT Authorization Grant in the authorization request if using OpenID Connect for SSO when performing a step-up to skip the need for additional token exchange round-trip.</t>
      </section>
      <section anchor="cross-domain-use">
        <name>Cross-Domain Use</name>
        <t>This specification is intended for cross-domain uses where the Client, Resource Authorization Server, and IdP are in different trust domains. In particular, the IdP <bcp14>MUST NOT</bcp14> issue access tokens in response to an ID-JAG it issued itself. Doing so could lead to unintentional broadening of the scope of authorization.</t>
        <t>An ID-JAG is specific to the trust relationship between the issuing IdP Authorization Server and the Resource Authorization Server identified by the <tt>aud</tt> claim. When a deployment involves additional downstream hops, the same ID-JAG <bcp14>MUST NOT</bcp14> be reused as the authorization grant for a different downstream Resource Authorization Server. For each subsequent hop, a new ID-JAG <bcp14>MAY</bcp14> be issued by the IdP Authorization Server trusted by that downstream Resource Authorization Server for SSO and subject resolution, or other mechanisms <bcp14>MAY</bcp14> be used.</t>
      </section>
      <section anchor="metadata-disclosure">
        <name>Metadata Disclosure</name>
        <t>Advertising issuer-specific trust relationships in publicly accessible metadata can disclose federation topology, business relationships, tenant configuration, or other deployment-sensitive information.</t>
        <t>Resource Authorization Servers <bcp14>MUST NOT</bcp14> use <tt>authorization_grant_profiles_supported</tt> to disclose issuer allow lists or other profile-specific trust relationships.</t>
        <t>Resource Authorization Servers <bcp14>MAY</bcp14> provide a protected discovery mechanism by which an authenticated client can determine whether an Identity Assertion JWT Authorization Grant from a particular issuer would be accepted for that client. If such a mechanism is provided, the Resource Authorization Server <bcp14>MUST</bcp14> require client authentication before disclosing issuer-specific acceptance information. The response <bcp14>MUST</bcp14> be specific to the authenticated client and <bcp14>MAY</bcp14> also be scoped by tenant, resource, or other local policy context.</t>
      </section>
      <section anchor="actor-delegation-extensions">
        <name>Actor Delegation Extensions</name>
        <t>This specification allows Token Exchange requests for ID-JAG to carry <tt>actor_token</tt>, but it does not define normative processing requirements for it. Future profiles or extensions can define how <tt>actor_token</tt> is validated, authorized, and reflected in the issued ID-JAG, including whether an <tt>act</tt> claim is included.</t>
        <t>Profiles or extensions that define use of <tt>actor_token</tt> need to consider delegation risks. In particular, a client could attempt to combine a valid <tt>subject_token</tt> with an unrelated or less-trusted <tt>actor_token</tt> to obtain an ID-JAG that overstates the actor's authority.</t>
        <t>Such profiles or extensions should define how <tt>actor_token</tt> is validated, how the relationship between the authenticated client, subject, and actor is authorized, how any resulting <tt>act</tt> claim is derived, and how unnecessary disclosure of actor identity or attributes is minimized across trust domains.</t>
        <t>When such profiles or extensions use an <tt>act</tt> claim, they should preserve the distinction between the actor identified by <tt>act</tt> and the resource owner identified by <tt>sub</tt>. The authenticated client identity is also not a substitute for actor identity.</t>
      </section>
      <section anchor="sender-constraining-tokens">
        <name>Sender Constraining Tokens</name>
        <section anchor="proof-of-possession">
          <name>Proof-of-Possession</name>
          <t>Identity Assertion JWT Authorization Grant may support key binding to enable sender-constrained tokens as described in <xref section="4" sectionFormat="of" target="I-D.ietf-oauth-identity-chaining"/> and <xref target="I-D.parecki-oauth-jwt-dpop-grant"/>. This provides additional security by binding tokens to a specific cryptographic key, preventing reuse by parties that do not have access to the private key.</t>
          <t>Proof-of-possession is demonstrated by the client presenting a DPoP proof JWT (as defined in <xref target="RFC9449"/>) in a <tt>DPoP</tt> HTTP header. The DPoP proof demonstrates that the client possesses the private key corresponding to a public key. This public key can be bound to tokens, ensuring that only the holder of the private key can use those tokens.</t>
          <t>The <tt>cnf</tt> (confirmation) claim, as defined in <xref target="RFC7800"/>, is used to bind a public key to a JWT. When an ID-JAG contains a <tt>cnf</tt> claim with a <tt>jkt</tt> property as defined in <xref target="RFC9449"/>, it indicates that the ID-JAG is bound to that specific key (identified by its JWK SHA-256 Thumbprint), and proof of possession of the corresponding private key <bcp14>MUST</bcp14> be demonstrated when using the ID-JAG.</t>
          <t>The following sections describe the processing rules for proof-of-possession at two stages: during the Token Exchange (when requesting an ID-JAG from the IdP) and during the ID-JAG exchange (when exchanging the ID-JAG for an access token at the Resource Authorization Server).</t>
          <section anchor="proof-of-possession-during-token-exchange">
            <name>Proof-of-Possession During Token Exchange</name>
            <t>When a client requests an ID-JAG from the IdP Authorization Server via Token Exchange, the client <bcp14>MAY</bcp14> include a DPoP proof in the request. This demonstrates possession of a key that can be bound to the ID-JAG.</t>
            <t>The client generates a key pair and includes a DPoP proof JWT in the <tt>DPoP</tt> header of the Token Exchange request:</t>
            <artwork><![CDATA[
POST /oauth2/token HTTP/1.1
Host: acme.idp.example
Content-Type: application/x-www-form-urlencoded
DPoP: eyJ0eXAiOiJkcG9wK2p3dCIsImFsZyI6IkVTMjU2IiwiandrIjp7Imt0eSI6IkVDI...

grant_type=urn:ietf:params:oauth:grant-type:token-exchange
&requested_token_type=urn:ietf:params:oauth:token-type:id-jag
&audience=https://acme.chat.example/
&resource=https://api.chat.example/
&scope=chat.read+chat.history
&subject_token=eyJraWQiOiJzMTZ0cVNtODhwREo4VGZCXzdrSEtQ...
&subject_token_type=urn:ietf:params:oauth:token-type:id_token
]]></artwork>
            <t>The IdP Authorization Server processes the request as follows:</t>
            <ol spacing="normal" type="1"><li>
                <t>If a DPoP proof is present, the IdP <bcp14>MUST</bcp14> validate it according to <xref section="4.3" sectionFormat="of" target="RFC9449"/>. The <tt>htm</tt> claim <bcp14>MUST</bcp14> be <tt>POST</tt>, and the <tt>htu</tt> claim <bcp14>MUST</bcp14> match the token endpoint URL.</t>
              </li>
              <li>
                <t>If the DPoP proof is valid, the IdP <bcp14>MUST</bcp14> include a <tt>cnf</tt> claim in the issued ID-JAG containing a <tt>jkt</tt> property with the JWK SHA-256 Thumbprint computed from the DPoP proof's <tt>jwk</tt> header parameter as defined in <xref section="6.1" sectionFormat="of" target="RFC9449"/>.  This enables the Resource Authorization Server to validate the key binding for the ID-JAG using simple string comparison of the JWK SHA-256 Thumbprint.</t>
              </li>
            </ol>
            <t>The <tt>cnf</tt> claim format follows <xref section="6.1" sectionFormat="of" target="RFC9449"/>:</t>
            <artwork><![CDATA[
{
  "jti": "9e43f81b64a33f20116179",
  "iss": "https://acme.idp.example",
  "sub": "U019488227",
  "aud": "https://acme.chat.example/",
  "client_id": "f53f191f9311af35",
  "exp": 1311281970,
  "iat": 1311280970,
  "resource": "https://api.chat.example/",
  "scope": "chat.read chat.history",
  "cnf": {
    "jkt":"0ZcOCORZNYy-DWpqq30jZyJGHTN0d2HglBV3uiguA4I"
  }
}
]]></artwork>
            <ol spacing="normal" type="1"><li>
                <t>The token exchange response does not explicitly indicate whether key binding was successfully performed by the IdP.  The <tt>token_type</tt> response parameter for an ID-JAG is always <tt>N_A</tt> per <xref section="2.2.1" sectionFormat="of" target="RFC8693"/>. The client <bcp14>SHOULD</bcp14> inspect the ID-JAG to determine if a <tt>cnf</tt> claim is present and whether it represents the same key as the DPoP proof.  This enables the client to detect if the IdP successfully processed the DPoP proof in the token exchange request and bound the issued ID-JAG, preventing the IdP from silently ignoring the DPoP proof and mitigating downgrade attacks.</t>
              </li>
              <li>
                <t>If no DPoP proof is presented, the IdP issues an ID-JAG without a <tt>cnf</tt> claim.</t>
              </li>
            </ol>
          </section>
          <section anchor="proof-of-possession-during-id-jag-exchange">
            <name>Proof-of-Possession During ID-JAG Exchange</name>
            <t>When a client exchanges an ID-JAG for an access token at the Resource Authorization Server, the processing rules depend on whether the ID-JAG contains a <tt>cnf</tt> claim and whether the client presents a DPoP proof.</t>
            <section anchor="id-jag-contains-cnf-claim-and-dpop-proof-is-presented">
              <name>ID-JAG Contains <tt>cnf</tt> Claim and DPoP Proof is Presented</name>
              <t>If the ID-JAG contains a <tt>cnf</tt> claim and the client presents a DPoP proof, the Resource Authorization Server <bcp14>MUST</bcp14>:</t>
              <ol spacing="normal" type="1"><li>
                  <t>Validate the DPoP proof according to <xref section="4" sectionFormat="of" target="RFC9449"/>.</t>
                </li>
                <li>
                  <t>Extract the JWK SHA-256 Thumbprint from the DPoP proof by computing the thumbprint of the <tt>jwk</tt> header parameter in the DPoP proof according to <xref target="RFC7638"/>.</t>
                </li>
                <li>
                  <t>Extract the JWK SHA-256 Thumbprint from the <tt>jkt</tt> property of the <tt>cnf</tt> claim in the ID-JAG.</t>
                </li>
                <li>
                  <t>Compare the two thumbprints. They <bcp14>MUST</bcp14> match exactly. If they do not match, the request <bcp14>MUST</bcp14> fail with an <tt>invalid_grant</tt> error.</t>
                </li>
                <li>
                  <t>If the thumbprints match, the Resource Authorization Server <bcp14>MAY</bcp14> issue a sender-constrained access token (e.g., a DPoP-bound token) per the Resource Server configuration. The issued access token <bcp14>SHOULD</bcp14> be bound to the same key.</t>
                </li>
              </ol>
              <t>Example request:</t>
              <artwork><![CDATA[
POST /oauth2/token HTTP/1.1
Host: acme.chat.example
Content-Type: application/x-www-form-urlencoded
DPoP: eyJ0eXAiOiJkcG9wK2p3dCIsImFsZyI6IkVTMjU2IiwiandrIjp7Imt0eSI6IkVDI...

grant_type=urn:ietf:params:oauth:grant-type:jwt-dpop
&assertion=eyJhbGciOiJIUzI1NiIsInR5cCI6Im9hdXRoLWlkLWphZytqd3QifQ...
]]></artwork>
              <t>Example successful response with DPoP-bound token:</t>
              <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache

{
  "token_type": "DPoP",
  "access_token": "2YotnFZFEjr1zCsicMWpAA",
  "expires_in": 86400,
  "scope": "chat.read chat.history"
}
]]></artwork>
            </section>
            <section anchor="id-jag-contains-cnf-claim-but-dpop-proof-is-not-presented">
              <name>ID-JAG Contains <tt>cnf</tt> Claim but DPoP Proof is Not Presented</name>
              <t>If the ID-JAG contains a <tt>cnf</tt> claim but the client does not present a DPoP proof, the Resource Authorization Server <bcp14>MUST</bcp14> reject the request with an <tt>invalid_grant</tt> error, as the ID-JAG requires proof of possession.</t>
              <t>Example error response:</t>
              <artwork><![CDATA[
HTTP/1.1 400 Bad Request
Content-Type: application/json
Cache-Control: no-store

{
  "error": "invalid_grant",
  "error_description": "Proof of possession required for this authorization grant"
}
]]></artwork>
            </section>
            <section anchor="id-jag-does-not-contain-cnf-claim-and-dpop-proof-is-presented">
              <name>ID-JAG Does Not Contain <tt>cnf</tt> Claim and DPoP Proof is Presented</name>
              <t>If the ID-JAG does not contain a <tt>cnf</tt> claim but the client presents a DPoP proof, the Resource Authorization Server:</t>
              <ol spacing="normal" type="1"><li>
                  <t><bcp14>MUST</bcp14> validate the DPoP proof according to <xref section="4" sectionFormat="of" target="RFC9449"/>.</t>
                </li>
                <li>
                  <t><bcp14>MAY</bcp14> issue a sender-constrained access token (e.g., a DPoP-bound token) per the Resource Server configuration at the Authorization Server, binding the access token to the key demonstrated in the DPoP proof.</t>
                </li>
                <li>
                  <t>The access token response will indicate the token type (e.g., <tt>DPoP</tt> for DPoP-bound tokens, or <tt>Bearer</tt> for unconstrained tokens).</t>
                </li>
              </ol>
            </section>
            <section anchor="id-jag-does-not-contain-cnf-claim-and-dpop-proof-is-not-presented">
              <name>ID-JAG Does Not Contain <tt>cnf</tt> Claim and DPoP Proof is Not Presented</name>
              <t>If the ID-JAG does not contain a <tt>cnf</tt> claim and the client does not present a DPoP proof:</t>
              <ol spacing="normal" type="1"><li>
                  <t>The Resource Authorization Server <bcp14>MAY</bcp14> issue an unconstrained Bearer token.</t>
                </li>
                <li>
                  <t>However, if the Resource Server configuration at the Authorization Server requires constrained tokens for that Resource Server, the request <bcp14>MUST</bcp14> fail with an <tt>invalid_grant</tt> error.</t>
                </li>
              </ol>
              <t>Example error response when constrained tokens are required:</t>
              <artwork><![CDATA[
HTTP/1.1 400 Bad Request
Content-Type: application/json
Cache-Control: no-store

{
  "error": "invalid_grant",
  "error_description": "Sender-constrained tokens required for this resource server"
}
]]></artwork>
            </section>
          </section>
        </section>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="media-types">
        <name>Media Types</name>
        <t>This section registers <tt>oauth-id-jag+jwt</tt>, a new media type <xref target="RFC2046"/> in the "Media Types" registry <xref target="IANA.media-types"/> in the manner described in <xref target="RFC6838"/>. It can be used to indicate that the content is an Identity Assertion JWT Authorization Grant.</t>
      </section>
      <section anchor="oauth-uri-registration">
        <name>OAuth URI Registration</name>
        <t>This section registers <tt>urn:ietf:params:oauth:token-type:id-jag</tt> in the "OAuth URI" subregistry of the "OAuth Parameters" registry <xref target="IANA.oauth-parameters"/>.</t>
        <ul spacing="normal">
          <li>
            <t>URN: urn:ietf:params:oauth:token-type:id-jag</t>
          </li>
          <li>
            <t>Common Name: Token type URI for an Identity Assertion JWT Authorization Grant</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Specification Document: This document</t>
          </li>
        </ul>
        <t>This section registers <tt>urn:ietf:params:oauth:grant-profile:id-jag</tt> in the "OAuth URI" subregistry of the "OAuth Parameters" registry <xref target="IANA.oauth-parameters"/>.</t>
        <ul spacing="normal">
          <li>
            <t>URN: urn:ietf:params:oauth:grant-profile:id-jag</t>
          </li>
          <li>
            <t>Common Name: Authorization grant profile identifier for an Identity Assertion JWT Authorization Grant</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Specification Document: This document</t>
          </li>
        </ul>
      </section>
      <section anchor="oauth-authorization-server-metadata-registration">
        <name>OAuth Authorization Server Metadata Registration</name>
        <t>This section registers <tt>authorization_grant_profiles_supported</tt> in the "OAuth Authorization Server Metadata" registry of the "OAuth Parameters" registry <xref target="IANA.oauth-parameters"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Metadata Name: <tt>authorization_grant_profiles_supported</tt></t>
          </li>
          <li>
            <t>Metadata Description: JSON array of supported authorization grant profile identifiers</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Specification Document: This document</t>
          </li>
        </ul>
      </section>
      <section anchor="json-web-token-claims-registration">
        <name>JSON Web Token Claims Registration</name>
        <t>This section registers the following claims in the "JSON Web Token Claims" subregistry of the "JSON Web Token (JWT)" registry <xref target="IANA.jwt"/>. The "JSON Web Token Claims" subregistry was established by <xref target="RFC7519"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Claim Name: <tt>resource</tt></t>
          </li>
          <li>
            <t>Claim Description: Resource</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Specification Document(s): <xref target="id-jag"/></t>
          </li>
          <li>
            <t>Claim Name: <tt>aud_tenant</tt></t>
          </li>
          <li>
            <t>Claim Description: Resource Authorization Server tenant identifier</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Specification Document(s): <xref target="id-jag"/></t>
          </li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC6749">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6749"/>
          <seriesInfo name="DOI" value="10.17487/RFC6749"/>
        </reference>
        <reference anchor="RFC7519">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </reference>
        <reference anchor="RFC7521">
          <front>
            <title>Assertion Framework for OAuth 2.0 Client Authentication and Authorization Grants</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="Y. Goland" initials="Y." surname="Goland"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification provides a framework for the use of assertions with OAuth 2.0 in the form of a new client authentication mechanism and a new authorization grant type. Mechanisms are specified for transporting assertions during interactions with a token endpoint; general processing rules are also specified.</t>
              <t>The intent of this specification is to provide a common framework for OAuth 2.0 to interwork with other identity systems using assertions and to provide alternative client authentication mechanisms.</t>
              <t>Note that this specification only defines abstract message flows and processing rules. In order to be implementable, companion specifications are necessary to provide the corresponding concrete instantiations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7521"/>
          <seriesInfo name="DOI" value="10.17487/RFC7521"/>
        </reference>
        <reference anchor="RFC7523">
          <front>
            <title>JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification defines the use of a JSON Web Token (JWT) Bearer Token as a means for requesting an OAuth 2.0 access token as well as for client authentication.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7523"/>
          <seriesInfo name="DOI" value="10.17487/RFC7523"/>
        </reference>
        <reference anchor="RFC8693">
          <front>
            <title>OAuth 2.0 Token Exchange</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="A. Nadalin" initials="A." surname="Nadalin"/>
            <author fullname="B. Campbell" initials="B." role="editor" surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <date month="January" year="2020"/>
            <abstract>
              <t>This specification defines a protocol for an HTTP- and JSON-based Security Token Service (STS) by defining how to request and obtain security tokens from OAuth 2.0 authorization servers, including security tokens employing impersonation and delegation.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8693"/>
          <seriesInfo name="DOI" value="10.17487/RFC8693"/>
        </reference>
        <reference anchor="RFC8707">
          <front>
            <title>Resource Indicators for OAuth 2.0</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>This document specifies an extension to the OAuth 2.0 Authorization Framework defining request parameters that enable a client to explicitly signal to an authorization server about the identity of the protected resource(s) to which it is requesting access.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8707"/>
          <seriesInfo name="DOI" value="10.17487/RFC8707"/>
        </reference>
        <reference anchor="RFC8725">
          <front>
            <title>JSON Web Token Best Current Practices</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="D. Hardt" initials="D." surname="Hardt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>JSON Web Tokens, also known as JWTs, are URL-safe JSON-based security tokens that contain a set of claims that can be signed and/or encrypted. JWTs are being widely used and deployed as a simple security token format in numerous protocols and applications, both in the area of digital identity and in other application areas. This Best Current Practices document updates RFC 7519 to provide actionable guidance leading to secure implementation and deployment of JWTs.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="225"/>
          <seriesInfo name="RFC" value="8725"/>
          <seriesInfo name="DOI" value="10.17487/RFC8725"/>
        </reference>
        <reference anchor="RFC7800">
          <front>
            <title>Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="April" year="2016"/>
            <abstract>
              <t>This specification describes how to declare in a JSON Web Token (JWT) that the presenter of the JWT possesses a particular proof-of- possession key and how the recipient can cryptographically confirm proof of possession of the key by the presenter. Being able to prove possession of a key is also sometimes described as the presenter being a holder-of-key.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7800"/>
          <seriesInfo name="DOI" value="10.17487/RFC7800"/>
        </reference>
        <reference anchor="RFC7638">
          <front>
            <title>JSON Web Key (JWK) Thumbprint</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>This specification defines a method for computing a hash value over a JSON Web Key (JWK). It defines which fields in a JWK are used in the hash computation, the method of creating a canonical form for those fields, and how to convert the resulting Unicode string into a byte sequence to be hashed. The resulting hash value can be used for identifying or selecting the key represented by the JWK that is the subject of the thumbprint.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7638"/>
          <seriesInfo name="DOI" value="10.17487/RFC7638"/>
        </reference>
        <reference anchor="RFC9449">
          <front>
            <title>OAuth 2.0 Demonstrating Proof of Possession (DPoP)</title>
            <author fullname="D. Fett" initials="D." surname="Fett"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="D. Waite" initials="D." surname="Waite"/>
            <date month="September" year="2023"/>
            <abstract>
              <t>This document describes a mechanism for sender-constraining OAuth 2.0 tokens via a proof-of-possession mechanism on the application level. This mechanism allows for the detection of replay attacks with access and refresh tokens.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9449"/>
          <seriesInfo name="DOI" value="10.17487/RFC9449"/>
        </reference>
        <reference anchor="RFC9396">
          <front>
            <title>OAuth 2.0 Rich Authorization Requests</title>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="J. Richer" initials="J." surname="Richer"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <date month="May" year="2023"/>
            <abstract>
              <t>This document specifies a new parameter authorization_details that is used to carry fine-grained authorization data in OAuth messages.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9396"/>
          <seriesInfo name="DOI" value="10.17487/RFC9396"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-identity-chaining">
          <front>
            <title>OAuth Identity and Authorization Chaining Across Domains</title>
            <author fullname="Arndt Schwenkschuster" initials="A." surname="Schwenkschuster">
              <organization>Defakto Security</organization>
            </author>
            <author fullname="Pieter Kasselman" initials="P." surname="Kasselman">
              <organization>Defakto Security</organization>
            </author>
            <author fullname="Kelley Burgin" initials="K." surname="Burgin">
              <organization>MITRE</organization>
            </author>
            <author fullname="Michael J. Jenkins" initials="M. J." surname="Jenkins">
              <organization>NSA-CCSS</organization>
            </author>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <date day="9" month="February" year="2026"/>
            <abstract>
              <t>   This specification defines a mechanism to preserve identity and
   authorization information across trust domains that use the OAuth 2.0
   Framework.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Discussion of this document takes place on the Web Authorization
   Protocol Working Group mailing list (oauth@ietf.org), which is
   archived at https://mailarchive.ietf.org/arch/browse/oauth/.

   Source for this draft and an issue tracker can be found at
   https://github.com/oauth-wg/oauth-identity-chaining.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-identity-chaining-08"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-rfc7523bis">
          <front>
            <title>Updates to OAuth 2.0 JSON Web Token (JWT) Client Authentication and Assertion-Based Authorization Grants</title>
            <author fullname="Michael B. Jones" initials="M. B." surname="Jones">
              <organization>Self-Issued Consulting</organization>
            </author>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <author fullname="Chuck Mortimore" initials="C." surname="Mortimore">
              <organization>Disney</organization>
            </author>
            <author fullname="Filip Skokan" initials="F." surname="Skokan">
              <organization>Okta</organization>
            </author>
            <date day="20" month="April" year="2026"/>
            <abstract>
              <t>   This document updates RFC7521, RFC7522, RFC7523 and RFC9126 with
   respect to the treatment of audience values in OAuth 2.0 Client
   Assertion Authentication and Assertion-based Authorization Grants to
   address a security vulnerability identified in the previous
   requirements for those audience values in multiple OAuth 2.0
   specifications.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-rfc7523bis-10"/>
        </reference>
        <reference anchor="IANA.media-types" target="https://www.iana.org/assignments/media-types">
          <front>
            <title>Media Types</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA.oauth-parameters" target="https://www.iana.org/assignments/oauth-parameters">
          <front>
            <title>OAuth Parameters</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="IANA.jwt" target="https://www.iana.org/assignments/jwt">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="RFC6838">
          <front>
            <title>Media Type Specifications and Registration Procedures</title>
            <author fullname="N. Freed" initials="N." surname="Freed"/>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <date month="January" year="2013"/>
            <abstract>
              <t>This document defines procedures for the specification and registration of media types for use in HTTP, MIME, and other Internet protocols. This memo documents an Internet Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="13"/>
          <seriesInfo name="RFC" value="6838"/>
          <seriesInfo name="DOI" value="10.17487/RFC6838"/>
        </reference>
        <reference anchor="RFC2046">
          <front>
            <title>Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types</title>
            <author fullname="N. Freed" initials="N." surname="Freed"/>
            <author fullname="N. Borenstein" initials="N." surname="Borenstein"/>
            <date month="November" year="1996"/>
            <abstract>
              <t>This second document defines the general structure of the MIME media typing system and defines an initial set of media types. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2046"/>
          <seriesInfo name="DOI" value="10.17487/RFC2046"/>
        </reference>
        <reference anchor="RFC8414">
          <front>
            <title>OAuth 2.0 Authorization Server Metadata</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <date month="June" year="2018"/>
            <abstract>
              <t>This specification defines a metadata format that an OAuth 2.0 client can use to obtain the information needed to interact with an OAuth 2.0 authorization server, including its endpoint locations and authorization server capabilities.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8414"/>
          <seriesInfo name="DOI" value="10.17487/RFC8414"/>
        </reference>
        <reference anchor="I-D.parecki-oauth-jwt-dpop-grant">
          <front>
            <title>OAuth 2.0 JWT Authorization Grant with DPoP Binding</title>
            <author fullname="Aaron Parecki" initials="A." surname="Parecki">
              <organization>Okta</organization>
            </author>
            <date day="30" month="January" year="2026"/>
            <abstract>
              <t>   This specification defines a new OAuth 2.0 authorization grant type
   that uses a JSON Web Token (JWT) assertion to request an access token
   that is bound to a specific key using the Demonstration of Proof-of-
   Possession (DPoP) mechanism.  This provides a higher level of
   security than a simple bearer token, as the client must prove
   possession of the key to use the access token.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-parecki-oauth-jwt-dpop-grant-01"/>
        </reference>
        <reference anchor="OpenID.Core" target="https://openid.net/specs/openid-connect-core-1_0.html">
          <front>
            <title>OpenID Connect Core 1.0 incorporating errata set 2</title>
            <author initials="N." surname="Sakimura">
              <organization/>
            </author>
            <author initials="J." surname="Bradley">
              <organization/>
            </author>
            <author initials="M." surname="Jones">
              <organization/>
            </author>
            <author initials="B." surname="de Medeiros">
              <organization/>
            </author>
            <author initials="C." surname="Mortimore">
              <organization/>
            </author>
            <date year="2023" month="December"/>
          </front>
        </reference>
        <reference anchor="OpenID.Enterprise" target="https://openid.net/specs/openid-connect-enterprise-extensions-1_0.html">
          <front>
            <title>OpenID Connect Enterprise Extensions 1.0 - draft 01</title>
            <author initials="D." surname="Hardt">
              <organization/>
            </author>
            <author initials="K." surname="McGuinness">
              <organization/>
            </author>
            <date year="2025" month="September"/>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC9470">
          <front>
            <title>OAuth 2.0 Step Up Authentication Challenge Protocol</title>
            <author fullname="V. Bertocci" initials="V." surname="Bertocci"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <date month="September" year="2023"/>
            <abstract>
              <t>It is not uncommon for resource servers to require different authentication strengths or recentness according to the characteristics of a request. This document introduces a mechanism that resource servers can use to signal to a client that the authentication event associated with the access token of the current request does not meet its authentication requirements and, further, how to meet them. This document also codifies a mechanism for a client to request that an authorization server achieve a specific authentication strength or recentness when processing an authorization request.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9470"/>
          <seriesInfo name="DOI" value="10.17487/RFC9470"/>
        </reference>
        <reference anchor="RFC9728">
          <front>
            <title>OAuth 2.0 Protected Resource Metadata</title>
            <author fullname="M.B. Jones" initials="M.B." surname="Jones"/>
            <author fullname="P. Hunt" initials="P." surname="Hunt"/>
            <author fullname="A. Parecki" initials="A." surname="Parecki"/>
            <date month="April" year="2025"/>
            <abstract>
              <t>This specification defines a metadata format that an OAuth 2.0 client or authorization server can use to obtain the information needed to interact with an OAuth 2.0 protected resource.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9728"/>
          <seriesInfo name="DOI" value="10.17487/RFC9728"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-client-id-metadata-document">
          <front>
            <title>OAuth Client ID Metadata Document</title>
            <author fullname="Aaron Parecki" initials="A." surname="Parecki">
              <organization>Okta</organization>
            </author>
            <author fullname="Emelia Smith" initials="E." surname="Smith">
         </author>
            <date day="1" month="March" year="2026"/>
            <abstract>
              <t>   This specification defines a mechanism through which an OAuth client
   can identify itself to authorization servers, without prior dynamic
   client registration or other existing registration.  This is through
   the usage of a URL as a client_id in an OAuth flow, where the URL
   refers to a document containing the necessary client metadata,
   enabling the authorization server to fetch the metadata about the
   client as needed.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-client-id-metadata-document-01"/>
        </reference>
      </references>
    </references>
    <?line 1152?>

<section anchor="use-cases">
      <name>Use Cases</name>
      <t>The following use cases are illustrative and not exhaustive. Enterprise workforce identity is a common deployment context, but this profile can also apply where the IdP Authorization Server trusted by the Resource Authorization Server for SSO and subject resolution is a CIAM layer, platform identity system, or other application-domain identity provider.</t>
      <section anchor="enterprise-deployment">
        <name>Enterprise Deployment</name>
        <t>Enterprises often have hundreds of SaaS applications.  SaaS applications often have integrations to other SaaS applications that are critical to the application experience and jobs to be done.  When a SaaS app needs to request an access token on behalf of a user to a 3rd party SaaS integration's API, the end-user typically needs to complete an interactive delegated OAuth 2.0 flow, as the SaaS application is not in the same security or policy domain as the 3rd party SaaS integration.</t>
        <t>It is industry best practice for an enterprise to connect their ecosystem of SaaS applications to their Identity Provider (IdP) to centralize identity and access management capabilities for the organization.  End-users get a better experience (SSO) and administrators get better security outcomes such multi-factor authentication and zero-trust.  SaaS applications today enable the administrator to establish trust with an IdP for user authentication.</t>
        <t>This specification can be used to extend the SSO relationship of multiple SaaS applications to include API access between these applications as well. This specification enables federation for Authorization Servers across policy or administrative boundaries. The same enterprise IdP that is trusted by applications for SSO can be extended to broker access to APIs.  This enables the enterprise to centralize more access decisions across their SaaS ecosystem and provides better end-user experience for users that need to connect multiple applications via OAuth 2.0.</t>
        <section anchor="preconditions">
          <name>Preconditions</name>
          <ul spacing="normal">
            <li>
              <t>The Client has a registered OAuth 2.0 Client with the IdP Authorization Server</t>
            </li>
            <li>
              <t>The Client has a registered OAuth 2.0 Client with the Resource Authorization Server</t>
            </li>
            <li>
              <t>Enterprise has established a trust relationship between their IdP and the Client for SSO and Identity Assertion JWT Authorization Grant</t>
            </li>
            <li>
              <t>Enterprise has established a trust relationship between their IdP and the Resource Authorization Server for SSO and Identity Assertion JWT Authorization Grant</t>
            </li>
            <li>
              <t>Enterprise has granted the Client permission to act on behalf of users for the Resource Authorization Server with a set of scopes</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="customer-identity-for-developer-saas-components">
        <name>Customer Identity for Developer SaaS Components</name>
        <t>In deployments where the shared identity layer serves customer-facing applications, the IdP is a Customer Identity and Access Management (CIAM) platform that signs end-users into a customer-facing application or suite of first-party applications rather than a workforce IdP used to sign employees into internal or SaaS productivity tools.</t>
        <t>These customer applications often embed or depend on third-party developer SaaS components such as communications, analytics, fraud detection, document processing, support tooling, or logging and observability services.  A first-party application may need to request an access token on behalf of the signed-in customer so that these components can be invoked seamlessly as part of the product experience, without interrupting the customer with separate delegated OAuth authorization prompts for each downstream service.</t>
        <t>This specification can be used in these deployments when the CIAM platform serves as the common identity layer trusted by the first-party applications and by the authorization servers for the third-party developer SaaS components.  In that model, the CIAM platform can broker an Identity Assertion JWT Authorization Grant that allows the component provider to issue an access token scoped to the customer and to the specific component APIs needed by the first-party application.</t>
        <section anchor="preconditions-1">
          <name>Preconditions</name>
          <section anchor="deployment-and-client-preconditions">
            <name>Deployment and Client Preconditions</name>
            <ul spacing="normal">
              <li>
                <t>The first-party application has a registered OAuth 2.0 Client with the CIAM IdP Authorization Server</t>
              </li>
              <li>
                <t>The first-party application has a registered OAuth 2.0 Client with the Resource Authorization Server for the developer SaaS component</t>
              </li>
              <li>
                <t>The Resource Authorization Server is able to map the customer identity conveyed by the CIAM platform to the corresponding account, tenant, or subject established through JIT provisioning at the developer SaaS component</t>
              </li>
            </ul>
          </section>
          <section anchor="trust-relationship-preconditions">
            <name>Trust Relationship Preconditions</name>
            <ul spacing="normal">
              <li>
                <t>The organization operating the customer application has established a trust relationship between its CIAM platform and the first-party application for customer sign-in and issuance of identity assertions</t>
              </li>
              <li>
                <t>The organization operating the customer application and the developer SaaS provider have established a trust relationship between the CIAM platform and the Resource Authorization Server for Identity Assertion JWT Authorization Grant</t>
              </li>
              <li>
                <t>The organization operating the customer application has granted the first-party application permission to act on behalf of signed-in customers for the developer SaaS component with a defined set of scopes</t>
              </li>
            </ul>
          </section>
        </section>
      </section>
      <section anchor="email-and-calendaring-applications">
        <name>Email and Calendaring Applications</name>
        <t>Email clients can be used with arbitrary email servers, and cannot require pre-established relationships between each email client and each email server. When an email client uses OAuth to obtain an access token to an email server, this provides the security benefit of being able to use strong multi-factor authentication methods provided by the email server's authorization server, but does require that the user go through a web-based flow to log in to the email client. However, this web-based flow is often seen as disruptive to the user experience when initiated from a desktop or mobile native application, and so is often attempted to be minimized as much as possible.</t>
        <t>When the email client needs access to a separate API, such as a third-party calendaring application, traditionally this would require that the email client go through another web-based OAuth redirect flow to obtain authorization and ultimately an access token.</t>
        <t>To streamline the user experience, this specification can be used to enable the email client to use the Identity Assertion to obtain an access token for the third-party calendaring application without any user interaction.</t>
        <section anchor="preconditions-2">
          <name>Preconditions</name>
          <ul spacing="normal">
            <li>
              <t>The Client does not have a pre-registered OAuth 2.0 client at the IdP Authorization Server or the Resource Authorization Server</t>
            </li>
            <li>
              <t>The Client has obtained an Identity Assertion (e.g. ID Token) from the IdP Authorization Server</t>
            </li>
            <li>
              <t>The Resource Authorization Server is configured to allow the Identity Assertion JWT Authorization Grant from unregistered clients</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="ai-agent-using-external-tools">
        <name>AI Agent using External Tools</name>
        <t>AI agents are designed to perform complex tasks on behalf of users, often requiring integration with external tools provided by SaaS applications, internal services, or enterprise data sources. When accessing these systems, the agent often operates on behalf of the end user, and its actions are constrained by the user's identity, role, and permissions. In agentic systems, the relevant IdP for a given ID-JAG hop is the IdP Authorization Server the downstream Resource Authorization Server already trusts for SSO and subject resolution at that boundary. That may be an enterprise workforce IdP, a CIAM or product identity layer, or an internal platform IdP depending on the deployment.</t>
        <section anchor="preconditions-3">
          <name>Preconditions</name>
          <section anchor="deployment-and-client-preconditions-1">
            <name>Deployment and Client Preconditions</name>
            <ul spacing="normal">
              <li>
                <t>The Enterprise IdP at <tt>idp.cyberdyne-corp.example</tt> authenticates the enterprise's users, issues identity assertions, and is the IdP Authorization Server trusted by the External Tool Resource Authorization Server for SSO and subject resolution for this hop</t>
              </li>
              <li>
                <t>The External Tool API (resource server) at <tt>api.saas-tool.example</tt> and its authorization server at <tt>authorization-server.saas-tool.example</tt> are operated by a SaaS tool vendor, in a different trust domain from the enterprise IdP</t>
              </li>
              <li>
                <t>The AI Agent is an OAuth 2.0 client with client ID <tt>https://ai-agent-app.example/</tt></t>
              </li>
              <li>
                <t>The Enterprise IdP (<tt>idp.cyberdyne-corp.example</tt>) recognizes the AI Agent (<tt>https://ai-agent-app.example/</tt>) as a trusted client, either through static registration or dynamic discovery via <xref target="I-D.ietf-oauth-client-id-metadata-document"/></t>
              </li>
              <li>
                <t>The External Tool Resource Authorization Server (<tt>authorization-server.saas-tool.example</tt>) recognizes the AI Agent (<tt>https://ai-agent-app.example/</tt>) as a trusted client, either through static registration or dynamic discovery via <xref target="I-D.ietf-oauth-client-id-metadata-document"/></t>
              </li>
            </ul>
            <ul empty="true">
              <li>
                <t>Note: This example uses a URL as the client ID, following the Client Identity Metadata Document pattern <xref target="I-D.ietf-oauth-client-id-metadata-document"/> to allow servers to dynamically discover client metadata. Alternatively, clients may be statically registered at the IdP and authorization server and given static opaque client IDs, with metadata configured directly in the IdP and Authorization Server.</t>
              </li>
            </ul>
          </section>
          <section anchor="trust-relationship-preconditions-1">
            <name>Trust Relationship Preconditions</name>
            <ul spacing="normal">
              <li>
                <t>The enterprise has established a trust relationship between their IdP (<tt>idp.cyberdyne-corp.example</tt>) and the AI Agent for SSO</t>
              </li>
              <li>
                <t>The enterprise has established a trust relationship between their IdP (<tt>idp.cyberdyne-corp.example</tt>) and the External Tool Resource Authorization Server (<tt>authorization-server.saas-tool.example</tt>) for SSO and Identity Assertion JWT Authorization Grant</t>
              </li>
              <li>
                <t>The enterprise has granted the AI Agent permission to act on behalf of users for the External Tool Resource Authorization Server with a specific set of scopes</t>
              </li>
            </ul>
          </section>
        </section>
        <section anchor="example-sequence">
          <name>Example Sequence</name>
          <t>The steps below describe the sequence of the AI Agent obtaining an access token using an Identity Assertion JWT Authorization Grant (<xref target="id-jag"/>).</t>
          <section anchor="ai-agent-establishes-a-user-identity-with-enterprise-idp">
            <name>AI Agent establishes a User Identity with Enterprise IdP</name>
            <t>AI Agent (<tt>https://ai-agent-app.example/</tt>) discovers the Enterprise IdP's (<tt>idp.cyberdyne-corp.example</tt>) OpenID Connect Provider configuration based on a configured <tt>issuer</tt> that was previously established.</t>
            <ul empty="true">
              <li>
                <t>Note: IdP discovery where an agent discovers which IdP the agent should use to authenticate a given user is out of scope of this specification.</t>
              </li>
            </ul>
            <artwork><![CDATA[
GET /.well-known/openid-configuration
Host: idp.cyberdyne-corp.example
Accept: application/json

HTTP/1.1 200 OK
Content-Type: application/json

{
  "issuer": "https://idp.cyberdyne-corp.example/",
  "authorization_endpoint": "https://idp.cyberdyne-corp.example/oauth2/authorize",
  "token_endpoint": "https://idp.cyberdyne-corp.example/oauth2/token",
  "userinfo_endpoint": "https://idp.cyberdyne-corp.example/oauth2/userinfo",
  "jwks_uri": "https://idp.cyberdyne-corp.example/oauth2/keys",
  "registration_endpoint": "https://idp.cyberdyne-corp.example/oauth2/register",
  "scopes_supported": [
    "openid", "email", "profile"
  ],
  "response_types_supported": [
    "code"
  ],
  "grant_types_supported": [
    "authorization_code", "refresh_token", "urn:ietf:params:oauth:grant-type:token-exchange"
  ],
  "identity_chaining_requested_token_types_supported": ["urn:ietf:params:oauth:token-type:id-jag"],
  ...
}
]]></artwork>
            <t>AI Agent discovers all necessary endpoints for authentication as well as support for the identity chaining requested token type <tt>urn:ietf:params:oauth:token-type:id-jag</tt></t>
          </section>
          <section anchor="idp-authorization-request-with-pkce">
            <name>IdP Authorization Request (with PKCE)</name>
            <t>AI Agent (<tt>https://ai-agent-app.example/</tt>) generates a PKCE <tt>code_verifier</tt> and a <tt>code_challenge</tt> (usually a SHA256 hash of the verifier, base64url-encoded) and redirects the end-user to the Enterprise IdP (<tt>idp.cyberdyne-corp.example</tt>) with an authorization request</t>
            <artwork><![CDATA[
GET /authorize?
  response_type=code
  &client_id=https://ai-agent-app.example/
  &redirect_uri=https://ai-agent-app.example/callback
  &scope=openid+profile+email
  &state=xyzABC123
  &code_challenge=E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM
  &code_challenge_method=S256
Host: idp.cyberdyne-corp.example
]]></artwork>
          </section>
          <section anchor="user-authenticates-and-authorizes-ai-agent">
            <name>User authenticates and authorizes AI Agent</name>
            <t>Enterprise IdP (<tt>idp.cyberdyne-corp.example</tt>) authenticates the end-user and redirects back to the AI Agent's registered redirect URI with an authorization code:</t>
            <artwork><![CDATA[
https://ai-agent-app.example/callback?code=SplxlOBeZQQYbYS6WxSbIA&state=xyzABC123
]]></artwork>
            <t>AI Agent (<tt>https://ai-agent-app.example/</tt>) exchanges the <tt>code</tt> and PKCE <tt>code_verifier</tt> to obtain an ID Token and Access Token for the IdP's UserInfo endpoint</t>
            <artwork><![CDATA[
POST /oauth2/token
Host: idp.cyberdyne-corp.example
Authorization: Basic yZS1yYW5kb20tc2VjcmV0v3JOkF0XG5Qx2
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code
&code=SplxlOBeZQQYbYS6WxSbIA
&redirect_uri=https://ai-agent-app.example/callback
&code_verifier=dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk

HTTP/1.1 200 OK
Content-Type: application/json

{
  "id_token": "eyJraWQiOiJzMTZ0cVNtODhwREo4VGZCXzdrSEtQ...",
  "token_type": "Bearer",
  "access_token": "7SliwCQP1brGdjBtsaMnXo",
  "scope": "openid profile email"
}
]]></artwork>
            <t>AI Agent validates the ID Token using the published JWKS for the Enterprise IdP (<tt>idp.cyberdyne-corp.example</tt>)</t>
            <artwork><![CDATA[
{
  "iss": "https://idp.cyberdyne-corp.example/",
  "sub": "1997e829-2029-41d4-a716-446655440000",
  "aud": "https://ai-agent-app.example/",
  "exp": 1984448400,
  "iat": 1984444800,
  "auth_time": 1984444800,
  "name": "John Connor",
  "email": "john.connor@cyberdyne-corp.example",
  "email_verified": true
}
]]></artwork>
            <t>AI Agent now has an identity binding for context</t>
          </section>
          <section anchor="ai-agent-calls-external-tool">
            <name>AI Agent calls External Tool</name>
            <t>AI Agent (<tt>https://ai-agent-app.example/</tt>) calls the External Tool API (Resource Server) at <tt>api.saas-tool.example</tt> without a valid access token and is issued an authentication challenge per Protected Resource Metadata <xref target="RFC9728"/>.</t>
            <ul empty="true">
              <li>
                <t>Note: How agents discover available external tools is out of scope of this specification</t>
              </li>
            </ul>
            <artwork><![CDATA[
GET /tools
Host: api.saas-tool.example
Accept: application/json

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer resource_metadata=
  "https://api.saas-tool.example/.well-known/oauth-protected-resource"
]]></artwork>
            <t>AI Agent fetches the External Tool API's OAuth 2.0 Protected Resource Metadata per <xref target="RFC9728"/> to dynamically discover an authorization server that can issue an access token for the resource.</t>
            <artwork><![CDATA[
GET /.well-known/oauth-protected-resource
Host: api.saas-tool.example
Accept: application/json

HTTP/1.1 200 OK
Content-Type: application/json

{
   "resource":
     "https://api.saas-tool.example/",
   "authorization_servers":
     [ "https://authorization-server.saas-tool.example/" ],
   "bearer_methods_supported":
     ["header", "body"],
   "scopes_supported":
     ["agent.read", "agent.write"],
   "resource_documentation":
     "https://api.saas-tool.example/resource_documentation.html"
 }
]]></artwork>
            <t>AI Agent discovers the External Tool Resource Authorization Server (<tt>authorization-server.saas-tool.example</tt>) configuration per <xref target="RFC8414"/></t>
            <artwork><![CDATA[
GET /.well-known/oauth-authorization-server
Host: authorization-server.saas-tool.example
Accept: application/json

HTTP/1.1 200 Ok
Content-Type: application/json

{
  "issuer": "https://authorization-server.saas-tool.example/",
  "authorization_endpoint": "https://authorization-server.saas-tool.example/oauth2/authorize",
  "token_endpoint": "https://authorization-server.saas-tool.example/oauth2/token",
  "jwks_uri": "https://authorization-server.saas-tool.example/oauth2/keys",
  "registration_endpoint": "https://authorization-server.saas-tool.example/oauth2/register",
  "scopes_supported": [
    "agent.read", "agent.write"
  ],
  "response_types_supported": [
    "code"
  ],
  "grant_types_supported": [
    "authorization_code", "refresh_token", "urn:ietf:params:oauth:grant-type:jwt-bearer"
  ],
  "authorization_grant_profiles_supported": ["urn:ietf:params:oauth:grant-profile:id-jag"],
  ...
}
]]></artwork>
            <t>AI Agent has learned all necessary endpoints and supported capabilities to obtain an access token for the external tool.</t>
            <t>If the <tt>urn:ietf:params:oauth:grant-profile:id-jag</tt> authorization grant profile is supported, the AI Agent can first attempt to silently obtain an access token using an Identity Assertion JWT Authorization Grant from the IdP Authorization Server trusted by the External Tool Resource Authorization Server for SSO, otherwise it can fallback to interactively obtaining a standard <tt>authorization_code</tt> from the External Tool Resource Authorization Server.</t>
          </section>
          <section anchor="ai-agent-obtains-an-identity-assertion-jwt-authorization-grant-for-external-tool-from-the-enterprise-idp">
            <name>AI Agent obtains an Identity Assertion JWT Authorization Grant for External Tool from the Enterprise IdP</name>
            <t>AI Agent (<tt>https://ai-agent-app.example/</tt>) makes an Identity Assertion JWT Authorization Grant Token Exchange <xref target="RFC8693"/> request to the Enterprise IdP (<tt>idp.cyberdyne-corp.example</tt>) using the ID Token obtained when establishing an identity binding context, along with scopes and the resource identifier for the External Tool API (<tt>api.saas-tool.example</tt>) that was returned in the external tool's <tt>OAuth 2.0 Protected Resource Metadata</tt></t>
            <artwork><![CDATA[
POST /oauth2/token HTTP/1.1
Host: idp.cyberdyne-corp.example
Content-Type: application/x-www-form-urlencoded

grant_type=urn:ietf:params:oauth:grant-type:token-exchange
&requested_token_type=urn:ietf:params:oauth:token-type:id-jag
&audience=https://authorization-server.saas-tool.example/
&resource=https://api.saas-tool.example/
&scope=agent.read+agent.write
&subject_token=eyJraWQiOiJzMTZ0cVNtODhwREo4VGZCXzdrSEtQ...
&subject_token_type=urn:ietf:params:oauth:token-type:id_token
&client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
&client_assertion=eyJhbGciOiJSUzI1NiIsImtpZCI6IjIyIn0...
]]></artwork>
            <t>If access is granted, the Enterprise IdP (<tt>idp.cyberdyne-corp.example</tt>) creates a signed Identity Assertion JWT Authorization Grant and returns it in the token exchange response defined in <xref section="2.2" sectionFormat="of" target="RFC8693"/>:</t>
            <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache

{
  "issued_token_type": "urn:ietf:params:oauth:token-type:id-jag",
  "access_token": "eyJhbGciOiJIUzI1NiIsI...",
  "token_type": "N_A",
  "scope": "agent.read agent.write",
  "expires_in": 300
}
]]></artwork>
            <t>Identity Assertion JWT Authorization Grant claims:</t>
            <artwork><![CDATA[
{
  "alg": "ES256",
  "typ": "oauth-id-jag+jwt"
}
.
{
  "jti": "9e43f81b64a33f20116179",
  "iss": "https://idp.cyberdyne-corp.example/",
  "sub": "1997e829-2029-41d4-a716-446655440000",
  "aud": "https://authorization-server.saas-tool.example/",
  "resource": "https://api.saas-tool.example/",
  "client_id": "https://ai-agent-app.example/",
  "exp": 1984445160,
  "iat": 1984445100,
  "scope": "agent.read agent.write"
}
.
signature
]]></artwork>
          </section>
          <section anchor="ai-agent-obtains-an-access-token-for-external-tool">
            <name>AI Agent obtains an Access Token for External Tool</name>
            <t>AI Agent (<tt>https://ai-agent-app.example/</tt>) makes a token request to the External Tool Resource Authorization Server (<tt>authorization-server.saas-tool.example</tt>) token endpoint using the Identity Assertion JWT Authorization Grant obtained from the Enterprise IdP (<tt>idp.cyberdyne-corp.example</tt>) as a JWT Assertion as defined by <xref target="RFC7523"/>.</t>
            <ul empty="true">
              <li>
                <t>Note: How the AI Agent registers with the External Tool Resource Authorization Server (e.g static or dynamic client registration), and whether or not it has credentials, is out-of-scope of this specification</t>
              </li>
            </ul>
            <artwork><![CDATA[
POST /oauth2/token HTTP/1.1
Host: authorization-server.saas-tool.example
Authorization: Basic yZS1yYW5kb20tc2VjcmV0v3JOkF0XG5Qx2
Content-Type: application/x-www-form-urlencoded

grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer
&assertion=eyJhbGciOiJIUzI1NiIsI...
]]></artwork>
            <t>External Tool Resource Authorization Server (<tt>authorization-server.saas-tool.example</tt>) validates the Identity Assertion JWT Authorization Grant using the published JWKS for the trusted Enterprise IdP (<tt>idp.cyberdyne-corp.example</tt>)</t>
            <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache

{
  "token_type": "Bearer",
  "access_token": "2YotnFZFEjr1zCsicMWpAA",
  "expires_in": 86400,
  "scope": "agent.read agent.write"
}
]]></artwork>
          </section>
          <section anchor="ai-agent-makes-an-authorized-external-tool-request">
            <name>AI Agent makes an authorized External Tool request</name>
            <t>AI Agent (<tt>https://ai-agent-app.example/</tt>) calls the External Tool API (Resource Server) at <tt>api.saas-tool.example</tt> with a valid access token</t>
            <artwork><![CDATA[
GET /tools
Host: api.saas-tool.example
Authorization: Bearer 2YotnFZFEjr1zCsicMWpAA
Accept: application/json

HTTP/1.1 200 OK
Content-Type: application/json

{
  ...
}
]]></artwork>
          </section>
        </section>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors would like to thank the following people for their contributions and reviews of this specification: Kamron Batmanghelich, Sofia Desenberg, Meghna Dubey, George Fletcher, Bingrong He, Pieter Kasselman, Kai Lehmann, Dean H. Saxe, Filip Skokan, Phil Whipps.</t>
    </section>
    <section numbered="false" anchor="document-history">
      <name>Document History</name>
      <t>[[ To be removed from the final specification ]]</t>
      <t>-03</t>
      <ul spacing="normal">
        <li>
          <t>Added a section defining terms used in the document</t>
        </li>
        <li>
          <t>Updated language to be less specific to "enterprise" and more about the relationships between the IdP and Resource Authorization Server</t>
        </li>
        <li>
          <t>Clarified the use of the <tt>resource</tt> and <tt>audience</tt> parameters in the token exchange request</t>
        </li>
        <li>
          <t>Removed language discouraging the use of the <tt>actor_token</tt> in the token exchange request</t>
        </li>
        <li>
          <t>Added a new AS metadata parameter <tt>authorization_grant_profiles_supported</tt> to enable a Resource Authorization Server to publish support for this profile</t>
        </li>
      </ul>
      <t>-02</t>
      <ul spacing="normal">
        <li>
          <t>Added reference and examples of a RAR <tt>authorization_details</tt> object in the Token Exchange and ID-JAG</t>
        </li>
        <li>
          <t>Added refresh token as an optional subject token input to the Token Exchange for SAML interop</t>
        </li>
        <li>
          <t>Described how to use DPoP with the ID-JAG exchange</t>
        </li>
        <li>
          <t>Added <tt>aud_tenant</tt> and <tt>aud_sub</tt> claims to ID-JAG to support multi-tenant systems</t>
        </li>
      </ul>
      <t>-01</t>
      <ul spacing="normal">
        <li>
          <t>Moved ID-JAG definition to document root instead of nested under Token Exchange</t>
        </li>
        <li>
          <t>Added proposed OpenID Connect <tt>tenant</tt> claim</t>
        </li>
        <li>
          <t>Added authentication claims from ID Token</t>
        </li>
        <li>
          <t>Adopted standard OAuth 2.0 role names instead of Resource App or Resource App's Authorization Server</t>
        </li>
        <li>
          <t>Updated sequence diagram</t>
        </li>
        <li>
          <t>Updated all inconsistent references of ID-JAG to "Identity Assertion JWT Authorization Grant"</t>
        </li>
        <li>
          <t>Updated section references with more specific links</t>
        </li>
        <li>
          <t>Added reference to scope parameter in ID-JAG processing rules</t>
        </li>
        <li>
          <t>Added a section discussing client ID mapping and reference to Client ID Metadata Document</t>
        </li>
        <li>
          <t>Added recommendations for refresh tokens</t>
        </li>
      </ul>
      <t>-00</t>
      <ul spacing="normal">
        <li>
          <t>Initial revision as adopted working group draft</t>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+296XbbVrYg/F9PgU9ZX0WKSVqS5Um3nCpZthM5sa1Ydpyk
upYFkqAEiwRYAGiFGd6ln6WfrPd4BuCAg+xMqyvd65YFAmfYZ589D91ud6NK
q3FyEG0eD5MM/j2PDssyKao0z6Knb15Fh7PqIi/Sn2J68kURZ9XmRtzvF8l7
/OiReekn/XEQV8l5XswPorIabmwM80EWT2CGYRGPqm6aVKNuHsMH3VRm7MY6
Yxef/9Q9x4G6O7c2yll/kpYl/FLNpzDE8eNXTzay2aSfFAcbQ5jnYGOQZ2WS
lbPyIKqKWbIBq7q1ERdJDKs7TQazAibY3LjKi8vzIp9N4embpF/b1UmRV/kg
H29uXCZzeHV4sBF1o0GRl2V3mE/iNMO/Y/cbffAT/UPXj3/AnpJiWqQlrCXJ
ZrDEKFpl6ijiPW6+gbWm2TmAEz7C57CAMTwnoP0T4dfLi3P8IS4GF/DDRVVN
y4ObN/E9fJS+T3r62k18cLNf5FdlcpNGuIlfnqfVxayvg3avzm+uciT45Rig
XlbOrHSsZY++72VJtdJIN9dEht5FNQEYbfAZ4PHAUqJoNBuPGbkO4wKhCQc/
uEzpN9h8nAmYD6IXl1VMjxOGZozv/3PK7/cG+aQ55FdxMY6eDb6YpVmWlGVg
0ONsmEyTDFfujj2d9cfp4J+X8P1kcC6fh+d4WKRxFh3Fk2k/GY8DU5wgJujV
dCfpD+Sjf07hFYUezbKR5cUEvn9PuPfyydGdu/v35Z93b+/af+7t2n/ekn/e
u3Pf/PPuzl3zz73b+u69nR39551b9+Sf9/fNFPdv3b+D/zzuPuqFDnhwARcK
1hx4pxgNcCn9tKQfD58f9ibJMI27eDXsM34ZDg9gCJfN/vDuqtIt3zNL29vZ
v6Pb2N/d12nl7GVm+LI7nOZTRreDDXjpBRzt8aPeUV4QHOF+MqXk59FRDuc6
qCL8Pdrt7URpNsiLaV4A5OHMkgL+EUdlUkV7/HVcnCdwcfTe5DBMOqQbU06T
QSkPugMeF/63SLq7b3cI9WkEInjRo2SQIAGMdm93or2dvVv0m7kY9F8XFgME
8XkvOo0v08msiP0fnvYA8+LhOJn7z5/1oqc5YKv/9GEvGibRs2SYpEAS/d+O
etGzHK7rBFbrAO2xIYKLQGffih7/WAEVB5QvCZZd5hbRzu61YGdpcDcxA4eA
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
nYOdneDpwTdHnJESPDb789EYMBV4yeceli8kd4ODAX4Ej0+kht2JVpN8hQII
yqPupDdXmTX0VgN0HmT4V/Ob3rfPjcKYlg5/q1VSX1EyXsz24R/sOlRvnuWc
PmdDZlYuZGVpWfPv+XUxHE8j293Fl6riHHFoR+JGx7azdVMKOHay24QX9v5f
yoYI1INyW4nd8EXOG8Tp5DUvseDky+cX/Tc/Xr24fPLTYO/b+fCL8ft++nAf
ns0GP017vd5g70nVfzSdDm493/3hu+MbJ0f3f/r+zW7pffFu/0Fg9BX3QnjP
n/+Jkg4IV/4iqQV+k6xWC977J/eHo2r/P5NXg+8uf9i789PX9/p3ZuslLAdV
mojwq8UUuLu3c/+Oja//JDpCB3n3Ebd3suTjSxCax3jnf/5EjhYkNdEbOCAQ
9SGS7YsE+wBwWx0mQzd9Dewm0QS//1GavcfqrxLDBtQHGzGQC/zIqJKtZHIr
3Ehw2/t6sZ1yixaKXyx+71rL2Hgck9Pb6SILO4SjxKTj8dyLIcDgA+tbsImz
VpMojduEXIpTbFFbq6S6kKnYeaUirqs+UrnQXOwWGiaYDZdDZcYOhHr7GFKK
anBpdtjtRafpJB3HxXi+ihdq6Q6cxTtLwyLifnFxM42GSbHZ1YS2zqPBRZ6X
iY5i2Zoas5xQSdpqwift6X3HDkovORtu6xPobqf2L2NJOJLqbU5lY2svIWZ/
hb1auCcpagbDldoGCO+fJHFWLl4qVlAjQF5m+VUU99E+ww5XB81dB5+DTUuX
QVGRIPIxbqmPLF4ayeRt3LRfXXHrUk8UjXLw9QVSvBV6MyChtLGBOGeBFJgx
wV0vCYYKEDUdLr1bpfb8pF1pJ2BYn7FUwwIB9t181O3jaLbWcs/DZu7dY07N
sxGz9Q9jf51gX4vbK8b9shmsZpFVt4HcSrG3OHDpUZy5lkqlBro6rVyyi2TM
cq1IpIvPg26IdHD22wlg0JbErlCEmfHnrOo9WaHnKTU0om7T5FKkOtg4vJrY
tDacF43AQWkuSrhNFuv1b7h7HQYRkgEUqdRF/B5vxzROqS5FYBYVz9Ws6viN
xKtRu6La7pGO3nllaVRug7QvdxIyUprAgCoIJWIuzTbnAjziWdoN3RL6Je3N
zW0wFlPRsRYC0At3siGdzrte73XWvLSSJB2V24LIPY5a/OlyjDzEsJ6MzK/I
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
6GJ7+OwmfJDBMXq7d3Iy20FJLx1Sic9AJsM18w9rWQ4MbrcCRPt6brrlK9wI
XC2OsuIwkqVqKiPaYTmd8XrDcZ6jGQrPDWuiXnM0/dwO+O7qsnw7K9L1xrlM
5k6pdlc6uebClB3X6nI4cc8w3r9s7Q3Gvs1OtEk2IvyHxHBqkY1/uwVBKBmn
3kXDHxGTgJvfBjt8+B/6SEPDdHDSEcx7IXmq8GDN2k3NpazdJQSX2TJtIxVj
08yjNZR+dUirJTfYrdPW7tSzLk1vJTdKjqPDIqpJ4ve+afb5sp3YnHy6NTpC
cbJcQyHVXhlbxDpOvjp6vL0Wx3DLlOHX0Rme71sABQVGs/oYy9OB9m84i7Zm
5YzEzBhLEmBFApAPLpSv6ucd4hZ39mfFuCtZ6Nte5xBV0TXeNA8wrmVsS+MK
fbFW4O3QdkO3/iGI4F2bB7g6+eFvpnTPg4Xw09d1N0hmFn+BojlFiMuXXCeM
7/oNud836MKbN7B67oMf5z8dPjza3btlVuidx4PH958l44s83ntx9f5J8fjZ
q6fns6Mv4zz5are69/rlm/7si6enZXXVHTwLj/CWXSgPTuEoV2NyjJGva0Gc
SempGPCnIqMbiL2SWByw5Aia+BjkNsLQyT4tXf3HGP8x6SqMLggNSVNc6QD/
gR88OJ2Ofxy/eJj88M033/e/P73z5sfT/vFh48zWuZC2oAzuh+4dX8Lg7awV
XpbkDif465XnIWAxEM/sGHikoW5tpSjWkHZcYB5ED+MS5PX5D6e78+/f3L7s
7+1Ug71v3w0m3+68v/X0xeWTne++uP3Nj3vXKmNRrzvRZE8bBsFbTkiL+V3r
2v7NO4MHw4fvRtXT5If9o29PupOH9/e+2rs7u+i/fvp6d7pbvL16s3v+5M2T
F4/ffXf5sWS/oS0OsUbhwLq4ptUnOEG5vf7E3dNxenX0zcluv/hi+O5hVcbP
su/yQH0xJmMm1YTllgar1Xx8rcEgKGrLrFJZWtKvn7756tRqjutQj6a0vLao
LEXgdu/fv5vc27vf3duB/7O/O9zvxnd373T39+/cuX17f38H/msvDxdCpkbp
t/v39vf377l1O6T0G/2wf8/5AXH9bZVOkvDPWUy/bD7NLzLS43LnXPk84Nd3
8GtvQL/+MwyG2keK7Li3qpgljTMFfYmjnJxwObdmoOQj1VVhvFalbxJYi1by
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
DcDcZtNoWMSjauP/AkHzWQhjfQEA

-->

</rfc>
