<?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.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-oauth-identity-assertion-authz-grant-04" 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-04"/>
    <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="May" day="21"/>
    <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 103?>

<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"/>. This pattern is informally referred to as Cross-App Access (XAA).</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 107?>

<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 defines Cross-App Access (XAA): a pattern in which an application's access to another application's API is mediated by the IdP that both applications already trust for SSO and subject resolution. XAA extends the IdP's role from single sign-on to brokering cross-domain API access, using the same trust relationships that already exist for SSO.</t>
      <t>XAA is built on top of OAuth 2.0 by profiling "Identity Chaining Across Trust Domains" <xref target="I-D.ietf-oauth-identity-chaining"/>, which combines OAuth 2.0 Token Exchange <xref target="RFC8693"/> and the JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants <xref target="RFC7523"/> to chain a JWT authorization grant across trust domains. Identity Chaining intentionally leaves many details unspecified in order to support multiple use cases. This specification profiles it for XAA by defining:</t>
      <ul spacing="normal">
        <li>
          <t>the Token Exchange request used to obtain an Identity Assertion JWT Authorization Grant (<xref target="id-jag"/>);</t>
        </li>
        <li>
          <t>the ID-JAG itself, including its claims and format;</t>
        </li>
        <li>
          <t>the processing rules applied by the Resource Authorization Server when exchanging an ID-JAG for an Access Token; and</t>
        </li>
        <li>
          <t>the authorization server and client metadata used to discover support for the profile.</t>
        </li>
      </ul>
      <t>In particular, this profile requires an Identity Assertion (such as an OpenID Connect ID Token or SAML 2.0 assertion) as the Token Exchange <tt>subject_token</tt> input.</t>
      <t>Unlike profiles in which the IdP issues access tokens directly to be consumed by the Resource Server (such as the OAuth 2.0 JWT Profile for Access Tokens <xref target="RFC9068"/>), this specification preserves the Resource Authorization Server as the issuer of access tokens for its protected resources. This lets the IdP centralize federated identity, SSO trust, and the decision to broker cross-app access, while the Resource Authorization Server keeps independent control over its own access tokens. The Resource Authorization Server determines whether to honor a given ID-JAG, what scopes or authorization details to grant, and what access token to issue, applying its own local 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>Cross-App Access (XAA)</dt>
          <dd>
            <t>The application-ecosystem name for the pattern this specification profiles, in which an application obtains an access token at another application's API by coordinating through the IdP both applications trust for SSO. XAA is realized over OAuth 2.0 by using an Identity Assertion JWT Authorization Grant (<xref target="id-jag"/>) as a specific instance of cross-domain identity chaining (<xref target="I-D.ietf-oauth-identity-chaining"/>).</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 <tt>sub</tt> claim identifies the End-User in the subject namespace of the ID-JAG issuer. When the Resource Authorization Server uses a different subject namespace for SSO, such as a SAML Assertion Subject <tt>&lt;NameID&gt;</tt> namespace, the ID-JAG <bcp14>MAY</bcp14> include <tt>sub_id</tt> to carry the SSO subject identifier. When both <tt>sub</tt> and <tt>sub_id</tt> are present, they <bcp14>MUST</bcp14> identify the same End-User. 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>sub_id</tt>:</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14> - Subject Identifier as defined in <xref target="RFC9493"/>. The <tt>sub_id</tt> claim <bcp14>MAY</bcp14> be used to identify the same End-User as the <tt>sub</tt> claim using a different identifier namespace from the ID-JAG <tt>iss</tt> and <tt>sub</tt>. This is useful when the Resource Authorization Server resolves users by a non-JWT subject identifier, such as a SAML Assertion Subject <tt>&lt;NameID&gt;</tt>, in its SSO trust relationship with the IdP Authorization Server. See <xref target="saml-nameid-format"/> for the SAML NameID Subject Identifier Format defined by this specification, and <xref target="saml-nameid-sub-id-processing"/> for processing rules.</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 anchor="saml-nameid-subject-identifier">
        <name>SAML NameID Subject Identifier</name>
        <section anchor="saml-nameid-format">
          <name>Subject Identifier Format</name>
          <t>This specification defines the SAML NameID Subject Identifier Format for use in the <tt>sub_id</tt> claim <xref target="RFC9493"/>. The SAML NameID Subject Identifier Format is identified by the name <tt>saml-nameid</tt> and identifies a subject using a SAML 2.0 Assertion Subject <tt>&lt;NameID&gt;</tt> value within the context of a SAML issuer <xref target="OASIS.saml-core-2.0-os"/>.</t>
          <t>This format is intended for deployments where the Resource Authorization Server resolves users using SAML SSO subject identifiers rather than the ID-JAG issuer's <tt>iss</tt> and <tt>sub</tt> values.</t>
          <t>A Subject Identifier in this format <bcp14>MUST</bcp14> contain:</t>
          <dl>
            <dt><tt>format</tt>:</dt>
            <dd>
              <t>A JSON string containing the value <tt>saml-nameid</tt> identifying this Subject Identifier Format, as defined in <xref target="RFC9493"/>.</t>
            </dd>
            <dt><tt>issuer</tt>:</dt>
            <dd>
              <t>A JSON string containing the SAML issuer entity identifier for the assertion or configured mapping containing the SAML Assertion Subject <tt>&lt;NameID&gt;</tt>, as defined by Section 8.3.6 of <xref target="OASIS.saml-core-2.0-os"/>. SAML <tt>&lt;Issuer&gt;</tt> attributes are not represented by this format.</t>
            </dd>
            <dt><tt>nameid</tt>:</dt>
            <dd>
              <t>A JSON string containing the SAML Assertion Subject <tt>&lt;NameID&gt;</tt> value as defined in <xref target="OASIS.saml-core-2.0-os"/>.</t>
            </dd>
          </dl>
          <t>A Subject Identifier in this format <bcp14>MAY</bcp14> contain:</t>
          <dl>
            <dt><tt>nameid_format</tt>:</dt>
            <dd>
              <t>A JSON string containing the value of the <tt>Format</tt> attribute on the SAML Assertion Subject <tt>&lt;NameID&gt;</tt> as defined in <xref target="OASIS.saml-core-2.0-os"/>.</t>
            </dd>
            <dt><tt>name_qualifier</tt>:</dt>
            <dd>
              <t>A JSON string containing the value of the <tt>NameQualifier</tt> attribute on the SAML Assertion Subject <tt>&lt;NameID&gt;</tt> as defined in <xref target="OASIS.saml-core-2.0-os"/>.</t>
            </dd>
            <dt><tt>sp_name_qualifier</tt>:</dt>
            <dd>
              <t>A JSON string containing the value of the <tt>SPNameQualifier</tt> attribute on the SAML Assertion Subject <tt>&lt;NameID&gt;</tt> as defined in <xref target="OASIS.saml-core-2.0-os"/>.</t>
            </dd>
            <dt><tt>sp_provided_id</tt>:</dt>
            <dd>
              <t>A JSON string containing the value of the <tt>SPProvidedID</tt> attribute on the SAML Assertion Subject <tt>&lt;NameID&gt;</tt> as defined in <xref target="OASIS.saml-core-2.0-os"/>.</t>
            </dd>
          </dl>
          <t>The following is a non-normative example of a <tt>sub_id</tt> claim using the SAML NameID Subject Identifier Format:</t>
          <artwork><![CDATA[
"sub_id": {
  "format": "saml-nameid",
  "issuer": "https://idp.example.com/exk33qwjcwDda7luK346",
  "nameid": "foo@example.com",
  "nameid_format": "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress",
  "sp_name_qualifier": "https://resource.example.com/saml/sp"
}
]]></artwork>
        </section>
        <section anchor="saml-nameid-sub-id-processing">
          <name>Subject Identifier Processing</name>
          <t>When the Resource Authorization Server resolves users by SAML Assertion Subject <tt>&lt;NameID&gt;</tt>, the IdP Authorization Server <bcp14>MAY</bcp14> include a <tt>sub_id</tt> claim using the SAML NameID Subject Identifier Format (<xref target="saml-nameid-format"/>). The <tt>sub_id</tt> claim identifies the same subject as the ID-JAG <tt>sub</tt> claim, but in the SAML subject namespace used by the Resource Authorization Server for SSO.</t>
          <t>When constructing a SAML NameID Subject Identifier, the IdP Authorization Server <bcp14>MUST</bcp14> derive its members from the SAML Assertion Subject <tt>&lt;NameID&gt;</tt> value it would use for SSO to the target Resource Authorization Server, or from an equivalent configured mapping that records the SAML <tt>&lt;NameID&gt;</tt> value and attributes the IdP Authorization Server would issue for that subject and Resource Authorization Server. Each optional field <bcp14>MUST</bcp14> be included exactly when the corresponding attribute is present on that <tt>&lt;NameID&gt;</tt> or in the configured mapping. The SAML NameID <tt>sub_id</tt> <bcp14>MUST</bcp14> identify the same subject as the ID-JAG <tt>sub</tt> claim.</t>
          <t>The Resource Authorization Server <bcp14>MAY</bcp14> use <tt>sub_id</tt> for subject resolution when it supports the indicated Subject Identifier Format. The Resource Authorization Server <bcp14>MUST</bcp14> compare every member of the SAML NameID Subject Identifier that is part of the set of identifier fields it uses for subject resolution for that SAML issuer. The Resource Authorization Server <bcp14>MUST NOT</bcp14> resolve the subject using only the <tt>nameid</tt> value unless local policy explicitly defines <tt>nameid</tt> alone as the subject identifier for that SAML issuer. In particular, when the SAML Assertion Subject <tt>&lt;NameID&gt;</tt> is scoped to a Service Provider, the <tt>sp_name_qualifier</tt> value is part of the subject namespace.</t>
          <t>If the Resource Authorization Server requires a SAML NameID Subject Identifier for subject resolution, it <bcp14>MUST</bcp14> reject the token request with an <tt>invalid_grant</tt> error as defined in <xref section="5.2" sectionFormat="of" target="RFC6749"/> if any of the following is true:</t>
          <ul spacing="normal">
            <li>
              <t>the ID-JAG does not contain a <tt>sub_id</tt> claim using the SAML NameID Subject Identifier Format;</t>
            </li>
            <li>
              <t>the <tt>sub_id</tt> claim is malformed or uses a Subject Identifier Format that the Resource Authorization Server does not support;</t>
            </li>
            <li>
              <t>the <tt>sub_id</tt> claim is not authorized by local policy for the validated ID-JAG issuer.</t>
            </li>
          </ul>
          <t>See <xref target="sub-id-trust"/> and <xref target="sub-id-disclosure"/> for security considerations on the <tt>sub_id</tt> claim.</t>
        </section>
      </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
Content-Type: application/x-www-form-urlencoded

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
Content-Type: application/x-www-form-urlencoded

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>
            <li>
              <t>If the Resource Authorization Server uses the <tt>sub_id</tt> claim for subject resolution, it <bcp14>MUST</bcp14> process the claim according to the indicated Subject Identifier Format. For SAML NameID subject identifiers, the Resource Authorization Server <bcp14>MUST</bcp14> apply the processing rules in <xref target="saml-nameid-sub-id-processing"/>.</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-subject-token-interoperability">
        <name>SAML 2.0 Subject Token Interoperability</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="as-metadata">
      <name>Authorization Server Metadata</name>
      <t>There are two complementary metadata parameters that can be used by the two different authorization servers. <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 anchor="idp-metadata">
        <name>IdP 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>
      </section>
      <section anchor="ras-metadata">
        <name>Resource Authorization Server Metadata</name>
        <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>
      </section>
    </section>
    <section anchor="client-metadata">
      <name>Client Metadata</name>
      <t>A client can advertise support for authorization grant profiles in its client metadata using the <tt>authorization_grant_profiles_supported</tt> parameter. This parameter <bcp14>MAY</bcp14> be registered via OAuth 2.0 Dynamic Client Registration <xref target="RFC7591"/> or published in a Client ID Metadata Document <xref target="I-D.ietf-oauth-client-id-metadata-document"/>.</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 an authorization grant profile that the client implements.</t>
      <t>Inclusion of a profile identifier in <tt>authorization_grant_profiles_supported</tt> indicates only that the client implements the processing rules for that profile. It does not indicate that any particular IdP Authorization Server, Resource Authorization Server, audience, resource, or scope will be requested.</t>
      <t>To advertise support for the Identity Assertion JWT Authorization Grant profile, the client <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 client 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 both <tt>urn:ietf:params:oauth:grant-type:token-exchange</tt> and <tt>urn:ietf:params:oauth:grant-type:jwt-bearer</tt> in its <tt>grant_types</tt>, since the client uses Token Exchange to obtain the ID-JAG from the IdP Authorization Server and the JWT Bearer Token grant to redeem it at the Resource Authorization Server.</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 in the same domain. Doing so could lead to unintentional broadening of the scope of authorization. This does not preclude a single piece of software from being both an IdP issuing ID-JAGs as well as a Resource Authorization Server consuming ID-JAGs, as long as the ID-JAG crosses a trust domain such as a tenant or customer boundary.</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="sub-id-trust">
        <name>Subject Identifier Trust</name>
        <t>When the ID-JAG includes a <tt>sub_id</tt> claim, the Resource Authorization Server <bcp14>MUST NOT</bcp14> use the <tt>sub_id.issuer</tt> value to establish trust in the ID-JAG issuer. The ID-JAG <bcp14>MUST</bcp14> first be validated using the <tt>iss</tt> claim, signature, audience, expiration, and client binding according to this specification.</t>
        <t>The Resource Authorization Server <bcp14>MUST</bcp14> use a SAML NameID <tt>sub_id</tt> only when the validated ID-JAG issuer is explicitly associated with the SAML issuer identified by <tt>sub_id.issuer</tt> through local configuration or trusted federation metadata.</t>
      </section>
      <section anchor="sub-id-disclosure">
        <name>Subject Identifier Disclosure</name>
        <t>The IdP Authorization Server <bcp14>SHOULD</bcp14> include <tt>sub_id</tt> only when needed by the target Resource Authorization Server for subject resolution. Because the ID-JAG is visible to the Client that presents it, <tt>sub_id</tt> can disclose additional user identifiers, such as email-address NameIDs or stable enterprise account identifiers, that the Client might not otherwise receive. The IdP Authorization Server <bcp14>SHOULD</bcp14> minimize the subject identifiers included in the ID-JAG to those required by the Resource Authorization Server.</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="oauth-dynamic-client-registration-metadata-registration">
        <name>OAuth Dynamic Client Registration Metadata Registration</name>
        <t>This section registers <tt>authorization_grant_profiles_supported</tt> in the "OAuth Dynamic Client Registration Metadata" registry of the "OAuth Parameters" registry <xref target="IANA.oauth-parameters"/>, established by <xref target="RFC7591"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Metadata Name: <tt>authorization_grant_profiles_supported</tt></t>
          </li>
          <li>
            <t>Metadata Description: JSON array of authorization grant profile identifiers supported by the client</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Specification Document: <xref target="client-metadata"/></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 anchor="security-event-identifier-format-registration">
        <name>Security Event Identifier Format Registration</name>
        <t>This section registers the <tt>saml-nameid</tt> Subject Identifier Format in the "Security Event Identifier Formats" registry established by <xref target="RFC9493"/>.</t>
        <ul spacing="normal">
          <li>
            <t>Format Name: <tt>saml-nameid</tt></t>
          </li>
          <li>
            <t>Format Description: SAML NameID Subject Identifier Format</t>
          </li>
          <li>
            <t>Change Controller: IETF</t>
          </li>
          <li>
            <t>Reference: <xref target="saml-nameid-format"/></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="RFC9493">
          <front>
            <title>Subject Identifiers for Security Event Tokens</title>
            <author fullname="A. Backman" initials="A." role="editor" surname="Backman"/>
            <author fullname="M. Scurtescu" initials="M." surname="Scurtescu"/>
            <author fullname="P. Jain" initials="P." surname="Jain"/>
            <date month="December" year="2023"/>
            <abstract>
              <t>Security events communicated within Security Event Tokens may support a variety of identifiers to identify subjects related to the event. This specification formalizes the notion of Subject Identifiers as structured information that describes a subject and named formats that define the syntax and semantics for encoding Subject Identifiers as JSON objects. It also establishes a registry for defining and allocating names for such formats as well as the JSON Web Token (JWT) "sub_id" Claim.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9493"/>
          <seriesInfo name="DOI" value="10.17487/RFC9493"/>
        </reference>
        <reference anchor="RFC7591">
          <front>
            <title>OAuth 2.0 Dynamic Client Registration Protocol</title>
            <author fullname="J. Richer" initials="J." role="editor" surname="Richer"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="M. Machulak" initials="M." surname="Machulak"/>
            <author fullname="P. Hunt" initials="P." surname="Hunt"/>
            <date month="July" year="2015"/>
            <abstract>
              <t>This specification defines mechanisms for dynamically registering OAuth 2.0 clients with authorization servers. Registration requests send a set of desired client metadata values to the authorization server. The resulting registration responses return a client identifier to use at the authorization server and the client metadata values registered for the client. The client can then use this registration information to communicate with the authorization server using the OAuth 2.0 protocol. This specification also defines a set of common client metadata fields and values for clients to use during registration.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7591"/>
          <seriesInfo name="DOI" value="10.17487/RFC7591"/>
        </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>
            <author fullname="Aaron Parecki" initials="A." surname="Parecki">
              <organization>Okta</organization>
            </author>
            <date day="11" month="May" 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-12"/>
        </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="28" 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-11"/>
        </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="OASIS.saml-core-2.0-os" target="https://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf">
          <front>
            <title>Assertions and Protocol for the OASIS Security Assertion Markup Language (SAML) V2.0</title>
            <author initials="S." surname="Cantor">
              <organization/>
            </author>
            <author initials="J." surname="Kemp">
              <organization/>
            </author>
            <author initials="R." surname="Philpott">
              <organization/>
            </author>
            <author initials="E." surname="Maler">
              <organization/>
            </author>
            <date year="2005" month="March"/>
          </front>
          <seriesInfo name="OASIS Standard" value="saml-core-2.0-os"/>
        </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="RFC9068">
          <front>
            <title>JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens</title>
            <author fullname="V. Bertocci" initials="V." surname="Bertocci"/>
            <date month="October" year="2021"/>
            <abstract>
              <t>This specification defines a profile for issuing OAuth 2.0 access tokens in JSON Web Token (JWT) format. Authorization servers and resource servers from different vendors can leverage this profile to issue and consume access tokens in an interoperable manner.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9068"/>
          <seriesInfo name="DOI" value="10.17487/RFC9068"/>
        </reference>
        <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 1288?>

<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>-04</t>
      <ul spacing="normal">
        <li>
          <t>Clarified XAA vs ID-JAG terminology in abstract and intro</t>
        </li>
        <li>
          <t>Added compatibility via new <tt>sub_id</tt> claim for Resource Apps configured with SAML SSO, and tightened definition of <tt>sub</tt></t>
        </li>
        <li>
          <t>Added client metadata property for DCR and CIMD</t>
        </li>
        <li>
          <t>Clarified cross-domain use restriction</t>
        </li>
      </ul>
      <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:
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
L50qQN0C77Fn2FQEu+FWBJM33JO9v4KvLvD50jvm18X3GEL0lkGkgrB5l8d7
e1l1+Y6FR8Rdnfe/HuCuTl79fLT9LD0qjybV9KfDo9tHb4+ujrItcn0uvlq+
Papxv8QcFL5k4ZIU2N5daUHd3tVy+2oGtkVa2abfkaRmV40H2qWqzQj139v4
e93GsJf6+hfPs7L+IW+fUxfkxYwkM43cIP+DGgGa5l9KTD4aNX+QqJwmWlsx
rzm0rTtlejk4v5tWVLbRkP+R9QO5dgrTt6PmCzow3WGANAxUJXFlHF/8CctG
gu69eWDwyUsbAFLeHknpl/GVLbIhLS9U8jv1jfYan+gF8Em8wr7zLGRN6nBH
ORNG5hVi1nZHs0wcNx2ptfUOxhta+5GVxdU1mjmOflYh3aJy9bAlp45u4kPq
WkANCtIn3zx/9d1DWExVpCCgkmcP0GbSH3s4/aXpuOVUK3QNjFnLEXGpC8kr
bvUqSPPC2C8h0InK3GI3W3hZnKQ54bTH5NQdSGFZU8TDqYNmOu1yZYR4riMg
u3KNhVjxglzWwJUw2d1GsIY9kitYwAW11QusBvlO09DN3Sw6Vg/T7ueawkzR
EBw16e2sZylV8OA1krh0+yzmRVfth7UyArX4VxuGP3Q7kKYeXZCe8H2JQ/Mb
84XaVegB1rzPemW8uGENJW6NH1afndsm3l5KJc+uKbxWM9sQIu0KmlZ+P+a2
6Alak4nUdsN91ShcnVuYWBMmWYEbj7VMKNWulEosPnWxr7KuitZdxXneJMdy
fMoO6+0PVtsjH5a/QaGJC3cn77VtLRw8MmercVESS6F0BSd0RAy4BAeKZZ4T
SFKHkhc5wpPZ++XcpPZxaxdJHC7BuHh0BEgNsLAjzkgoANpJPkxH2A40HVcS
uZFP0qpl6BYgc9sre1Ok9noQ8PVWWE0kw9HsIoUBAZFE0kl1ReDYMwBYP6ku
EwmcMN6oeu/h4D46oqhcUSStSeGgZtFjKZ8VjsXxgScVwYKTc5GuIBQBxlTU
B2PP4k5kXVC4pkktbWUuyOXe/vbw9gSWXx/CMt2vCVNPbNf749IoB783uOjQ
ZsecgH0y7yz0rZZ76Ri66VqmDZttgL8FutvLCdgKTCQHeZvh6Mpa5oyVCPDQ
KGAzxZhylGJsM1tHklcR1AtxwPcoe8pIbx7ZBxBgckx3Ng3YOEXYGYpy9UIy
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
cVcKPGx6ndFURdd40zzAuBaxLY0r9MVagbdD2w3d+h9BBO/a3MfVyQ9/MVWx
7s+Fn76uu0EyM/8LFM0pQly+5BJ8fNdvyP2+QRfevIGFqe+/v/r54MHh9s6u
WaF3Hvcf3XuajM/zeOf55bvHxaOnL5+czQ6/ifPk2+3q7qsXr/uzr5+clNVl
d/A0PMIbdqHcP4GjXI7JMUa+qgVxJqWnYsA/FRndQOylxOKAJUfQxMcgt9GX
TvZl6eo/xviP+YxhdEFoSAbwUgf4P/jB/ZPp+P34+YPkp++//2f/nye3X78/
6R8dNM5slQtpazXhfuje8SUM3s5aTXPJnHGCv156HgIWA/HMjoBHGurWVuVl
BWnHBeZ+9CAuQV6/+ulk++qfr29d9He2qsHOD28Hkx+23u0+eX7xeOvHr299
/37nWhVi6iVdmuxpzSB4ywlpncxrXdu/eGdwf/jg7ah6kvy0d/jDcXfy4N7O
tzt3Zuf9V09ebU+3izeXr7fPHr9+/PzR2x8vPpfsN7R1V1aoyVkX17SwC+f+
t5d2uXMyTi8Pvz/e7hdfD98+qMr4afZjHijdx2TMpJqw3NJgtVrqQsubCIra
Csa2v/GT19+eWM1xFerRlJZXFpWlvuL2vXt3krs797o7W/B/9raHe934zvbt
7t7e7du3bu3tbcF/7ZUXQ8jUqKp47+7e3t5dtySOVFWkH/buOj8grr+p0kkS
/hlTknD+J/l5Rnpc7pwrnwf8+hZ+7Q3o13+EwVD7SJEd91YVs6RxpqAvcZST
Ey7nluOUfKS6KozXqvRNAivRSv6+aVYgG3mtosRcG7mtu8etJvyqeOwQ0IJa
WV0MNDyUaqccmx5YZgG2eTmlsd3Z4cJpqgd/g40b2K1nzH7xOwA7d3Lx3XFL
abSO0ENfuUW6QgBYRWHd29qOXmWGv3PBrtevX3cPHH69rwVF1FHxRq2G9xWx
3JqgjQX5ejhn+ipcu6ayqIMro6QanCctuPBl6bgT5p0Pl9M0Z9RqlG1ID6U6
+KT2djhWUimZbqDV8NCy4c95jNfkPW5dV6MgLjpMQ03qqqQYv92h/uUMtpSF
8+a61SCjdW5/LcKspyk6U6xzwUPUWfv58Grd+b6pk7vf0S2lCmX4Lf/rskir
xB3CoLya+2n9K4ArPEDvvJoIN23RXH9FG7JvATTX5O7e9h66WeZgcWgKF4+X
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
iqIZy8FjtjWuAZj+bBoNi3hUrf1fm6NrqeaqAQA=

-->

</rfc>
