<?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.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-oauth-identity-assertion-authz-grant-06" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <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-06"/>
    <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="October" day="31"/>
    <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 115?>

<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 OAuth 2.0 Token Exchange (RFC 8693) and the JWT Profile for OAuth 2.0 Authorization Grants (RFC 7523). 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 119?>

<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, typically 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, typically 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>
      <t>Because an ID-JAG is a JWT authorization grant, RS256 is mandatory to implement for both the IdP Authorization Server and the Resource Authorization Server (<xref section="5" sectionFormat="of" target="RFC7523"/>). Resource Authorization Servers <bcp14>SHOULD</bcp14> also support ES256 <xref target="RFC7518"/>.</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 for the End-User, selected by the IdP Authorization Server for the Resource Authorization Server identified by the <tt>aud</tt> claim as described in <xref target="subject-mapping"/>. The <tt>sub</tt> claim identifies the End-User in the subject namespace of the ID-JAG issuer. 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.
</t>
            <t>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.</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 from the 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 an independent client relationship with 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> - Identifies the protected resource(s) for which access is granted, using resource identifiers as defined in <xref section="2" sectionFormat="of" target="RFC8707"/>. The value is a string for a single resource, or a non-empty JSON array of unique strings for multiple resources. Resource identifiers are compared as described in <xref target="token-exchange"/>.</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": 1311281270,
  "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 conveys claims about three subjects: the End-User identified by <tt>sub</tt> (including identity, authentication context, and audience-scoped authorization context such as roles or entitlements at the target application), the OAuth 2.0 client identified by <tt>client_id</tt> that will act on behalf of the End-User at the Resource Authorization Server, and, when present, the actor identified by <tt>act</tt> (<xref section="4.1" sectionFormat="of" target="RFC8693"/>). The IdP Authorization Server populates these claims for the specific Resource Authorization Server identified by <tt>aud</tt>, in the same way it would populate audience-scoped claims into an ID Token or SAML Assertion issued to that Resource Authorization Server. Any claim that would be valid in an ID Token <xref target="OpenID.Core"/> may appear in the ID-JAG, since the grant conveys identity claims about the End-User as well as an 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 a SAML <tt>&lt;NameID&gt;</tt> from its SSO trust relationship with the IdP Authorization Server, 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 SAML NameID Subject Identifier is intended to function as a stable, cross-trust-domain identifier for the End-User. The following requirements apply to the SAML <tt>&lt;NameID&gt;</tt> value conveyed in this format:</t>
          <ul spacing="normal">
            <li>
              <t><strong>Stability.</strong> The <tt>nameid</tt> value <bcp14>MUST</bcp14> be a SAML <tt>&lt;NameID&gt;</tt> that the Resource Authorization Server treats as stable for SSO subject resolution. Transient NameID Formats (such as <tt>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</tt>, defined in Section 8.3.8 of <xref target="OASIS.saml-core-2.0-os"/>) <bcp14>MUST NOT</bcp14> be used, because their values change across sessions and cannot serve as a cross-trust-domain identifier. Other Formats (including <tt>emailAddress</tt> and <tt>persistent</tt>) <bcp14>MAY</bcp14> be used. The SAML NameID Subject Identifier inherits the lifecycle and subject-resolution properties of the underlying Format. For example, when <tt>emailAddress</tt> is used, the same considerations that apply to SAML SSO with mutable email identifiers (changes propagating to the relying party, reassignment risks) apply to the SAML NameID Subject Identifier.</t>
            </li>
            <li>
              <t><strong>Identifier scope.</strong> A SAML <tt>&lt;NameID&gt;</tt> is unique within the context of the SAML issuer (<tt>issuer</tt>) and the Service Provider (as scoped by <tt>sp_name_qualifier</tt> when present), not globally unique within the issuer. NameIDs may be public (a single value for an End-User across all Service Providers) or pairwise (different values per Service Provider). When the IdP Authorization Server issues pairwise NameIDs, the <tt>nameid</tt> value placed in the SAML NameID Subject Identifier <bcp14>MUST</bcp14> be the value the IdP would issue to the SAML Service Provider corresponding to the target Resource Authorization Server. The IdP Authorization Server <bcp14>MUST</bcp14> maintain the mapping between the OAuth <tt>client_id</tt> of the Resource Authorization Server and the SAML Service Provider entity ID used for SSO with the corresponding application, so pairwise NameIDs resolve under the correct Service Provider scope. The IdP Authorization Server <bcp14>MUST NOT</bcp14> assume the <tt>nameid</tt> value identifies the same End-User across different Service Providers without the qualifying scope members.</t>
            </li>
            <li>
              <t><strong>Non-NameID subject resolution.</strong> Some SAML deployments resolve users by a SAML attribute outside the <tt>&lt;Subject&gt;</tt> element (for example, an attribute in the <tt>&lt;AttributeStatement&gt;</tt> such as the <tt>http://schemas.microsoft.com/identity/claims/objectidentifier</tt> attribute used by Microsoft Entra ID). In those deployments, the SAML NameID Subject Identifier is not the correct vehicle. The IdP Authorization Server <bcp14>SHOULD</bcp14> convey the relevant attribute value as an additional claim in the ID-JAG so the Resource Authorization Server can perform subject resolution. The choice of attribute and identifier type is deployment-specific: a SAML Service Provider and Resource Authorization Server may use either pairwise (different values per Service Provider) or public (a single value across Service Providers) identifiers, depending on local needs. Immutable identifiers are preferred. Mutable identifiers (such as <tt>emailAddress</tt>) <bcp14>MAY</bcp14> be used for subject resolution, subject to the considerations described in the Stability requirement above. When the attribute is pairwise per Service Provider, the IdP Authorization Server <bcp14>MUST</bcp14> use the value scoped to the SAML Service Provider corresponding to the target Resource Authorization Server.</t>
            </li>
          </ul>
          <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 a 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
Cache-Control: no-store

{
  "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, typically in another trust domain, as the intended audience for the ID-JAG. Exactly one <tt>audience</tt> value is allowed.
</t>
            <t>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>RECOMMENDED</bcp14> - The Resource Identifier(s) of the protected resource(s), governed by the Resource Authorization Server identified by <tt>audience</tt>, for which access is requested, as defined in <xref section="2" sectionFormat="of" target="RFC8707"/>. Resource identifiers are compared using Simple String Comparison (<xref section="6.2.1" sectionFormat="of" target="RFC3986"/>). A Client that discovered the Resource Authorization Server using Protected Resource Metadata <xref target="RFC9728"/> <bcp14>MUST</bcp14> include the <tt>resource</tt> value from that metadata unchanged (<xref target="prm-validation"/>).</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. As in <xref section="2.1" sectionFormat="of" target="RFC8693"/>, these values have the meaning defined by the Resource Authorization Server where the ID-JAG will be used, not their OpenID Connect meaning, so a value such as <tt>profile</tt> or <tt>email</tt> does not request identity claims (Section 5.4 of <xref target="OpenID.Core"/>).</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> authenticate the Client, and <bcp14>MUST</bcp14> reject a request without client authentication with <tt>invalid_client</tt> (<xref section="5.2" sectionFormat="of" target="RFC6749"/>).</t>
          <t>The IdP <bcp14>MUST</bcp14> validate the subject token:</t>
          <ul spacing="normal">
            <li>
              <t>The IdP <bcp14>MUST</bcp14> determine that the <tt>subject_token</tt> is in fact a token of the type indicated by <tt>subject_token_type</tt>, and that the IdP issued it for that purpose. A token that the IdP issued for a different purpose, such as an access token, an ID-JAG, or a client assertion, <bcp14>MUST NOT</bcp14> be accepted as an Identity Assertion.</t>
            </li>
            <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 not restricted by the IdP from the requested audience, resources, or scopes. The scope comparison in <xref section="6" sectionFormat="of" target="RFC6749"/> applies only when <tt>audience</tt> identifies the IdP Authorization Server itself (<xref target="cross-domain-use"/>). For any other Authorization Server, the requested <tt>scope</tt> and <tt>authorization_details</tt> have that server's meaning (<xref target="token-exchange"/>), not the IdP's, so the IdP evaluates them by policy as for any other Token Exchange request.</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>Determining that a JWT is an ID Token requires care, because OpenID Connect Core <xref target="OpenID.Core"/> does not define an explicit <tt>typ</tt> header value for ID Tokens, so an ID Token cannot be positively identified from its header alone. The IdP <bcp14>MUST</bcp14> reject the request if the <tt>subject_token</tt> carries a <tt>typ</tt> header that identifies a different type of token, such as the access token type defined in <xref target="RFC9068"/> or the ID-JAG type defined in <xref target="id-jag"/>. Because the IdP issued the <tt>subject_token</tt> itself, this determination is made entirely within the IdP's own trust domain and does not depend on interoperable agreement with any other party, so the IdP <bcp14>MAY</bcp14> use deployment-specific means to positively identify the token as an ID Token, such as a claim that the IdP includes in the ID Tokens it issues, a signing key or key set reserved for ID Tokens, or an internal record of the type of each token it issued. Explicit typing of JWTs, as recommended in <xref section="3.11" sectionFormat="of" target="RFC8725"/>, avoids this ambiguity where an explicit type is defined. For a SAML 2.0 Assertion, the IdP <bcp14>MUST</bcp14> likewise confirm that the assertion is one it issued as an authentication assertion for the subject, and not a SAML assertion or protocol message it issued for a different purpose.</t>
          <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>If the request contains more than one <tt>audience</tt> value, the IdP <bcp14>MUST</bcp14> respond with <tt>invalid_request</tt>. If <tt>audience</tt> does not identify a Resource Authorization Server with which the IdP has a trust relationship, the IdP <bcp14>MUST</bcp14> respond with <tt>invalid_target</tt> (<xref section="2.2.2" sectionFormat="of" target="RFC8693"/>).</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 as defined in <xref section="2" sectionFormat="of" target="RFC8707"/> and <bcp14>MAY</bcp14> grant a subset of the requested resources based on policy. The IdP <bcp14>SHOULD</bcp14> respond with <tt>invalid_target</tt> (<xref section="2.2.2" sectionFormat="of" target="RFC8693"/>) if any requested resource is not governed by the Resource Authorization Server identified by <tt>audience</tt>, and <bcp14>MUST</bcp14> respond with <tt>invalid_target</tt> if it grants none of them.</t>
            </li>
            <li>
              <t>If <tt>resource</tt> is absent, the IdP <bcp14>MAY</bcp14> select one or more default resources governed by the Resource Authorization Server identified by <tt>audience</tt>, based on policy, client configuration, or other request context. The IdP <bcp14>MAY</bcp14> require the client to include <tt>resource</tt>; if the parameter is required and absent, the IdP <bcp14>MUST</bcp14> respond with <tt>invalid_target</tt> as defined in <xref section="2" sectionFormat="of" target="RFC8707"/>. If no default is selected, the issued ID-JAG is not restricted to a specific protected resource, though it remains restricted to the Resource Authorization Server identified by <tt>audience</tt>.</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 values, if any, in the <tt>resource</tt>, <tt>scope</tt>, and <tt>authorization_details</tt> claims of the issued ID-JAG, even when they differ from the requested values. Each requested resource identifier that the IdP grants <bcp14>MUST</bcp14> appear in the <tt>resource</tt> claim exactly as the Client sent it.</t>
            </li>
          </ul>
          <t>How the IdP learns which protected resources each Resource Authorization Server governs is out of scope for this specification.</t>
          <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": "eyJhbGciOiJSUzI1NiIsI...",
  "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="7" 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.1" 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": 1311281270,
  "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": "eyJhbGciOiJSUzI1NiIsI...",
  "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": 1311281270,
  "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=eyJhbGciOiJSUzI1NiIsI...
]]></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="token-exchange-error-response">
            <name>Error Response</name>
            <t>On error, the IdP Authorization Server returns an OAuth 2.0 Token Error response as defined in <xref section="5.2" sectionFormat="of" target="RFC6749"/>. Any OAuth error code <bcp14>MAY</bcp14> be returned; this specification profiles the following codes for interoperability:</t>
            <ul spacing="normal">
              <li>
                <t><tt>invalid_request</tt>: the subject token failed validation (for example expired, malformed, audience mismatch, or a Refresh Token is expired or revoked), as required by <xref section="2.2.2" sectionFormat="of" target="RFC8693"/>. A Client that receives <tt>invalid_request</tt> for a request that previously succeeded can obtain a new subject token and retry.  </t>
                <artwork><![CDATA[
{
  "error": "invalid_request",
  "error_description": "Audience validation failed"
}
]]></artwork>
              </li>
              <li>
                <t><tt>access_denied</tt>: the subject token is valid but the Client or End-User is not authorized to obtain an ID-JAG for the target Resource Authorization Server. A re-issued subject token will not resolve the error. Remediation is defined by the IdP Authorization Server operator's app assignment, access-request, or entitlement process, such as an Identity Governance and Administration (IGA) workflow. This profile uses <tt>access_denied</tt> here rather than <tt>invalid_target</tt> (<xref section="2.2.2" sectionFormat="of" target="RFC8693"/>), so that the Client can tell a target it is not allowed to use from one the IdP Authorization Server does not recognize.  </t>
                <artwork><![CDATA[
{
  "error": "access_denied",
  "error_description": "Client is not authorized to access the target Resource Authorization Server"
}
]]></artwork>
              </li>
              <li>
                <t><tt>invalid_target</tt>: the <tt>audience</tt> does not identify a Resource Authorization Server with which the IdP Authorization Server has a trust relationship, or a requested resource is not governed by that Resource Authorization Server (<xref target="token-exchange"/>). A re-issued subject token will not resolve the error; the Client needs to change the request.  </t>
                <artwork><![CDATA[
{
  "error": "invalid_target",
  "error_description": "Resource not governed by audience"
}
]]></artwork>
              </li>
            </ul>
          </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> - <tt>urn:ietf:params:oauth:grant-type:jwt-bearer</tt>, or <tt>urn:ietf:params:oauth:grant-type:jwt-dpop</tt> (<xref target="I-D.parecki-oauth-jwt-dpop-grant"/>) when the ID-JAG is bound to a DPoP key (<xref target="sec-dpop-binding"/>).</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. The Resource Authorization Server <bcp14>SHOULD</bcp14> require client authentication. It <bcp14>MUST</bcp14> reject a request that has neither client authentication nor a sender-constrained ID-JAG (<xref target="sender-constraining-tokens"/>) with <tt>invalid_client</tt> (<xref section="5.2" sectionFormat="of" target="RFC6749"/>). See <xref target="client-authentication"/> for the trade-off.</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=eyJhbGciOiJSUzI1NiIsI...
]]></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> reject the ID-JAG with an <tt>invalid_grant</tt> error if the <tt>iss</tt> claim does not identify an IdP Authorization Server it trusts. It <bcp14>SHOULD</bcp14> obtain that issuer's keys from the <tt>jwks_uri</tt> in the issuer's metadata (<xref target="idp-metadata"/>). It validates the signature as required by <xref section="5.2" sectionFormat="of" target="RFC7521"/>, accepting only the algorithms it allows for that issuer (<xref section="3.1" sectionFormat="of" target="RFC8725"/>).</t>
            </li>
            <li>
              <t>If the issuer is multi-tenant, the Resource Authorization Server <bcp14>MUST</bcp14> reject the ID-JAG with an <tt>invalid_grant</tt> error unless the <tt>tenant</tt> claim is present and the Resource Authorization Server trusts <tt>iss</tt> and <tt>tenant</tt> together for the recipient tenant. The recipient tenant is identified by <tt>aud</tt>, by <tt>aud_tenant</tt> when present, or by the Resource Authorization Server's trust relationship with the issuer. If the Resource Authorization Server cannot determine the recipient tenant unambiguously, it <bcp14>MUST</bcp14> reject the ID-JAG with an <tt>invalid_grant</tt> error. It <bcp14>MUST</bcp14> resolve the subject only within the recipient tenant.</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>If the Client authenticates, the Resource Authorization Server <bcp14>MUST</bcp14> reject the request with an <tt>invalid_grant</tt> error unless the <tt>client_id</tt> claim identifies the authenticated client. If the Client does not authenticate, proof of possession of the key in the <tt>cnf</tt> claim (<xref target="sender-constraining-tokens"/>) takes the place of this check, and the <tt>client_id</tt> claim identifies the Client. This client continuity check preserves the OAuth client binding across the exchange, but does not by itself identify or authenticate any actor represented in an <tt>act</tt> claim.</t>
            </li>
            <li>
              <t>If the ID-JAG contains a <tt>cnf</tt> claim, the Resource Authorization Server verifies proof of possession as described in <xref target="sender-constraining-tokens"/>.</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, each identifier <bcp14>MUST</bcp14> be a protected resource governed by this Resource Authorization Server for the tenant identified by <tt>aud_tenant</tt> when present, otherwise for the tenant it associates with the issuing IdP (<xref target="tenant-relationships"/>), compared as described in <xref target="token-exchange"/>. If any identifier is not, the Resource Authorization Server <bcp14>MUST</bcp14> reject the request with <tt>invalid_grant</tt> as defined in <xref section="5.2" sectionFormat="of" target="RFC6749"/>, because the ID-JAG was not issued for resources it governs. The access token <bcp14>MUST</bcp14> be restricted to resources in the <tt>resource</tt> claim, and <bcp14>SHOULD</bcp14> be audience-restricted to them (<xref section="2" sectionFormat="of" target="RFC8707"/>). The Resource Authorization Server <bcp14>MAY</bcp14> restrict it to a subset based on local policy, and <bcp14>MUST</bcp14> reject the request with <tt>access_denied</tt> (<xref target="access-token-error-response"/>) if none of the resources are acceptable.</t>
            </li>
            <li>
              <t>If the <tt>resource</tt> claim is absent, the Resource Authorization Server <bcp14>MAY</bcp14> select one or more default resources based on policy, client configuration, or other request context. It <bcp14>MAY</bcp14> require the ID-JAG to contain a <tt>resource</tt> claim; if the claim is required and absent, it <bcp14>MUST</bcp14> reject the request with <tt>invalid_grant</tt> as defined in <xref section="5.2" sectionFormat="of" target="RFC6749"/>.</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. Any resource identifiers it derives <bcp14>MUST</bcp14> be among those in the <tt>resource</tt> claim.</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>scope</tt> (if any) and <tt>authorization_details</tt> (if any) in the access token response. The response format follows <xref section="5.1" sectionFormat="of" target="RFC6749"/> for scope and <xref section="7" 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="access-token-error-response">
          <name>Error Response</name>
          <t>On error, the Resource Authorization Server returns an OAuth 2.0 Token Error response as defined in <xref section="5.2" sectionFormat="of" target="RFC6749"/>. Any OAuth error code <bcp14>MAY</bcp14> be returned; this specification profiles the following two codes for interoperability:</t>
          <ul spacing="normal">
            <li>
              <t><tt>invalid_grant</tt>: the ID-JAG failed a validation rule in <xref target="token-request"/> (for example signature, <tt>aud</tt>, <tt>client_id</tt>, <tt>exp</tt>, <tt>typ</tt>, decryption, or <tt>cnf</tt> binding). A re-issued ID-JAG may resolve the error.  </t>
              <artwork><![CDATA[
{
  "error": "invalid_grant",
  "error_description": "Audience validation failed"
}
]]></artwork>
            </li>
            <li>
              <t><tt>access_denied</tt>: the ID-JAG is valid but the End-User or Client is not authorized at the Resource Authorization Server (for example the End-User lacks a license, entitlement, or provisioning record, or is denied by the Resource Authorization Server's policy or role/permission assignments). A re-issued ID-JAG will not resolve the error. Remediation is defined by the Resource Authorization Server operator's access-request, entitlement, or provisioning process, such as an Identity Governance and Administration (IGA) workflow.  </t>
              <artwork><![CDATA[
{
  "error": "access_denied",
  "error_description": "The end-user is not licensed for this application"
}
]]></artwork>
            </li>
          </ul>
        </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 Grant is exchanged for an Access Token per <xref section="5.4" 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. However, the Resource Authorization Server can reject an ID-JAG with an <tt>exp</tt> longer than its policy allows, or accept each ID-JAG only once by tracking its <tt>jti</tt> (<xref section="3" sectionFormat="of" target="RFC7523"/>).</t>
          <t>If the ID-JAG has expired, or the Resource Authorization Server rejects a re-submitted ID-JAG with an <tt>invalid_grant</tt> error, the Client <bcp14>SHOULD</bcp14> request a new ID-JAG from the IdP Authorization Server using the original Identity Assertion from the IdP (e.g ID Token) before presenting it to the Resource Authorization Server. If the Resource Authorization Server also rejects the new ID-JAG, requesting another will not resolve the error.</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="cross-domain-client-and-subject-identifier-handling">
      <name>Cross-Domain Client and Subject Identifier 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>
      <section anchor="client-id-mapping">
        <name>Client ID Mapping</name>
        <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>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="subject-mapping">
        <name>Subject Identifier Mapping</name>
        <t>The IdP Authorization Server selects the subject identifiers in the ID-JAG for the Resource Authorization Server identified by the <tt>aud</tt> claim, not for the Client. The same user can 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, and the Resource Authorization Server needs consistent subject identifiers for subject resolution across both SSO and API access.</t>
        <t>The IdP Authorization Server <bcp14>MUST</bcp14> include the same <tt>sub</tt> value for a given End-User in every ID-JAG it issues for the same Resource Authorization Server and, when present, the same <tt>aud_tenant</tt>, regardless of which Client requested it. When the Resource Authorization Server uses OpenID Connect for SSO with the IdP Authorization Server, that value <bcp14>MUST</bcp14> be the <tt>sub</tt> the IdP Authorization Server would include in an ID Token issued to the Resource Authorization Server as a Relying Party. This requires the IdP Authorization Server to know which Relying Party registration corresponds to the Resource Authorization Server's issuer identifier, a mapping established out of band like the <tt>client_id</tt> mapping in <xref target="client-id-mapping"/>. When pairwise subject identifiers are used, the <tt>sub</tt> claim of the ID-JAG can differ from the <tt>sub</tt> claim of the Client's ID Token (see <xref target="sub-id-disclosure"/>).</t>
        <t>When the Resource Authorization Server uses a different subject namespace for SSO, such as a SAML Assertion Subject <tt>&lt;NameID&gt;</tt> namespace, see the <tt>sub_id</tt> claim and <xref target="saml-nameid-subject-identifier"/>.</t>
      </section>
    </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. The <tt>tenant</tt> value identifies the End-User's tenant at the issuer.</t>
      </section>
      <section anchor="client-id-tenant">
        <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 the Resource Authorization Server tenant and <tt>client_id</tt> 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 Resource Authorization Server tenant for which the ID-JAG is issued (identified by <tt>aud_tenant</tt>, when present).</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.</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 value of each tenant claim it includes:</t>
        <ul spacing="normal">
          <li>
            <t><tt>tenant</tt>: the issuer tenant, which is the End-User's tenant, from the subject token. The subject token was issued to the authenticated Client in that tenant.</t>
          </li>
          <li>
            <t><tt>aud_tenant</tt>: the Resource Authorization Server tenant, from the requested <tt>audience</tt> and <tt>resource</tt> and the issuer tenant's configuration for that Resource Authorization Server. The IdP Authorization Server selects <tt>client_id</tt> (<xref target="client-id-tenant"/>), <tt>sub</tt> (<xref target="subject-mapping"/>), and <tt>aud_sub</tt> for that tenant.</t>
          </li>
        </ul>
      </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>
        <t>The IdP Authorization Server <bcp14>SHOULD</bcp14> sign ID-JAGs with a key published at the <tt>jwks_uri</tt> in its metadata, located from its issuer identifier as described in <xref section="3" sectionFormat="of" target="RFC8414"/>. A Resource Authorization Server that cannot retrieve metadata from that location <bcp14>MAY</bcp14> fall back to Section 4 of <xref target="OpenID.Discovery"/>, as described in <xref section="5" sectionFormat="of" target="RFC8414"/>.</t>
        <t>The IdP Authorization Server can also advertise the algorithms it uses to sign ID-JAGs:</t>
        <dl>
          <dt><tt>id_jag_signing_alg_values_supported</tt>:</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14>. JSON array containing a list of the JWS signing algorithms (<tt>alg</tt> values) supported by the IdP Authorization Server for signing ID-JAGs. If present, the list <bcp14>MUST</bcp14> include RS256. <tt>id_token_signing_alg_values_supported</tt> <xref target="OpenID.Discovery"/> does not describe ID-JAGs, which the IdP Authorization Server can sign differently from ID Tokens.</t>
          </dd>
        </dl>
      </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>The IdP Authorization Server always authenticates the Client (<xref target="token-exchange"/>). The Resource Authorization Server usually does too, but it can instead accept a sender-constrained ID-JAG from a Client that does not authenticate (<xref target="token-request"/>). It then relies on the IdP Authorization Server: the <tt>client_id</tt> claim identifies the Client that the IdP Authorization Server authenticated, and proof of possession shows that the presenter holds the key the IdP Authorization Server bound to the ID-JAG for that Client. Without the key binding, anyone holding a copy of the ID-JAG could present it. Clients that cannot authenticate to the IdP Authorization Server <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="subject-token-storage">
        <name>Storage of Subject Tokens</name>
        <t>The subject tokens used with this specification, whether an OpenID Connect ID Token, a SAML 2.0 Assertion, or a Refresh Token issued by the IdP Authorization Server, are high-value artifacts. A client that holds one of these can obtain an ID-JAG for any Resource Authorization Server the IdP policy permits, and can then redeem each ID-JAG for an access token at the corresponding Resource Authorization Server. A compromised subject token therefore exposes not only the IdP, but potentially every downstream resource reachable through it, and does so without further interaction with the user.</t>
        <t>Exploiting a stolen subject token also requires the attacker to authenticate to the IdP Authorization Server's token endpoint as the client, since the Token Exchange request requires client authentication. This means the client's credentials are the only remaining barrier, and both the subject token and the client credentials are typically held by the same deployment. An attacker who obtains access to the client's storage, backup, logs, or process memory is likely to obtain both. Deployments <bcp14>SHOULD NOT</bcp14> rely on client authentication alone to mitigate the theft of subject tokens.</t>
        <t>Clients that retain subject tokens beyond the immediate Token Exchange request:</t>
        <ul spacing="normal">
          <li>
            <t><bcp14>SHOULD</bcp14> protect them at rest with at least the same protections applied to the client's own credentials, and <bcp14>SHOULD</bcp14> store them in a separate protection domain from the client credentials, for example by keeping client authentication keys in a hardware security module or key management service so that both cannot be exfiltrated together.</t>
          </li>
          <li>
            <t><bcp14>SHOULD NOT</bcp14> write them to application logs, error reports, telemetry, traces, or crash dumps, and <bcp14>SHOULD NOT</bcp14> include them in HTTP request URIs where they may be recorded by intermediaries.</t>
          </li>
          <li>
            <t><bcp14>SHOULD</bcp14> scope stored subject tokens to the individual user session or task they were obtained for, rather than pooling them in a shared cache that any part of the client can read.</t>
          </li>
          <li>
            <t><bcp14>SHOULD</bcp14> discard them as soon as they are no longer needed, and <bcp14>SHOULD NOT</bcp14> cache an Identity Assertion beyond its expiration.</t>
          </li>
          <li>
            <t><bcp14>SHOULD</bcp14> prefer requesting a new ID-JAG when needed over caching issued ID-JAGs and access tokens, since the ID-JAG and any resulting access tokens are themselves credentials subject to the same handling requirements.</t>
          </li>
        </ul>
        <t>IdP Authorization Servers <bcp14>SHOULD</bcp14> limit exposure from a compromised subject token by issuing Identity Assertions with short lifetimes, and, when Refresh Tokens are accepted as subject tokens, by sender-constraining those Refresh Tokens as described in <xref target="sender-constraining-tokens"/>, rotating them on use, and binding them to the client that they were issued to. IdP Authorization Servers <bcp14>SHOULD</bcp14> also provide a mechanism to revoke Refresh Tokens and to invalidate outstanding sessions for a subject, so that a detected compromise can be contained before the affected subject tokens expire.</t>
        <t>Because a single subject token can be exchanged for ID-JAGs targeting many different Resource Authorization Servers, IdP Authorization Servers <bcp14>SHOULD</bcp14> record the <tt>audience</tt>, <tt>resource</tt>, <tt>scope</tt>, and authenticated client of each Token Exchange request, which allows unusual patterns, such as a client requesting ID-JAGs for audiences it does not normally access, to be detected.</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 unless explicitly configured to do so, since this could lead to unintentional broadening of the scope of authorization. When so configured, the IdP <bcp14>MUST NOT</bcp14> grant the client more access than it would when issuing an access token for the same subject and resource directly, and evaluates any consent and authentication requirements when issuing the ID-JAG, since the access token request does not involve the user. 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="as-metadata-validation">
        <name>Authorization Server Metadata Validation</name>
        <t>Clients that discover an Authorization Server's metadata using OAuth 2.0 Authorization Server Metadata <xref target="RFC8414"/> <bcp14>MUST</bcp14> validate that the <tt>issuer</tt> value in the metadata document is identical to the Authorization Server issuer identifier used to construct the metadata retrieval URL, as required by <xref section="3.3" sectionFormat="of" target="RFC8414"/>. If the values are not identical, the client <bcp14>MUST NOT</bcp14> use the metadata. This validation is particularly important for this specification because more steps happen without user interaction than in an interactive OAuth flow, and a mismatch can enable an attacker who controls an Authorization Server metadata document to redirect ID-JAG issuance toward an Authorization Server the client did not intend to use.</t>
        <t>For example, an attacker's protected resource references an attacker-controlled Authorization Server whose metadata declares an <tt>issuer</tt> value matching a legitimate Resource Authorization Server the user's IdP already trusts. A client that skips the <tt>issuer</tt> check treats the malicious metadata as authoritative for the legitimate Authorization Server and requests an ID-JAG with <tt>audience</tt> set to that server. The client then presents the ID-JAG and its client authentication to the attacker's token endpoint. The attacker relays both to the legitimate Resource Authorization Server, authenticating as the client with the <tt>client_secret</tt> it received or with a client assertion whose <tt>aud</tt> is the legitimate issuer, and obtains an access token for the End-User.</t>
        <t>The client-side <tt>issuer</tt> check required by <xref section="3.3" sectionFormat="of" target="RFC8414"/> is the primary defense. When the client has validated the attacker's Protected Resource Metadata (<xref target="prm-validation"/>) and includes its <tt>resource</tt> value (<xref target="token-exchange"/>), the ID-JAG names the attacker's resource, so the legitimate Resource Authorization Server rejects the relayed ID-JAG because it does not govern that resource (<xref target="token-request"/>). An IdP that checks which resources that Resource Authorization Server governs (<xref target="token-exchange"/>) rejects the Token Exchange request instead, so the ID-JAG never reaches the attacker. A sender-constrained ID-JAG (<xref target="sender-constraining-tokens"/>) also defeats the relay, because the attacker cannot prove possession of the client's key.</t>
      </section>
      <section anchor="prm-validation">
        <name>Protected Resource Metadata Validation</name>
        <t>Clients that discover the Resource Authorization Server for a protected resource via Protected Resource Metadata <xref target="RFC9728"/> <bcp14>MUST</bcp14> validate that metadata as required by <xref section="3.3" sectionFormat="of" target="RFC9728"/>, including verifying that the <tt>resource</tt> value is identical to the resource identifier used to construct the metadata URL or, when the metadata URL came from a <tt>WWW-Authenticate</tt> response, to the URL of the request that received that response. Without this check, an attacker who publishes metadata at their own resource can misrepresent the resource identifier and redirect the client toward an Authorization Server unrelated to the intended resource.</t>
        <t>Together with the Authorization Server metadata <tt>issuer</tt> check in <xref target="as-metadata-validation"/>, this validation binds discovery to the resource the client intended to access, and including the validated <tt>resource</tt> value in the Token Exchange request (<xref target="token-exchange"/>) binds the grant to it.</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>
        <t>A Resource Authorization Server that resolves the subject using <tt>email</tt> or <tt>aud_sub</tt> relies on the administrators of the issuer tenant for those values. It <bcp14>SHOULD</bcp14> do so only when it trusts that issuer tenant as authoritative for them, for example for email addresses in domains the tenant has verified, because administrators of another tenant at the same issuer can set any value.</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. For the same reason, a pairwise <tt>sub</tt> selected for the Resource Authorization Server (<xref target="subject-mapping"/>) is disclosed to the Client, which can link it to the <tt>sub</tt> in its own ID Token. 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>
        <t>Identity Assertion JWT Authorization Grant may support key binding to enable sender-constrained tokens as described in <xref section="5.2" 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 or certificate, preventing reuse by parties that do not have access to the corresponding private key.</t>
        <t>This specification defines two sender-constraining mechanisms for the ID-JAG:</t>
        <ul spacing="normal">
          <li>
            <t><strong>DPoP Key Binding</strong> (<xref target="sec-dpop-binding"/>): binding via a DPoP proof JWT as defined by <xref target="RFC9449"/>. The <tt>cnf</tt> claim carries a <tt>jkt</tt> property with the JWK SHA-256 Thumbprint of the bound key.</t>
          </li>
          <li>
            <t><strong>mTLS Certificate Binding</strong> (<xref target="sec-mtls-binding"/>): binding via a mutually authenticated TLS session using an X.509 client certificate as defined by <xref section="3" sectionFormat="of" target="RFC8705"/>. The <tt>cnf</tt> claim carries an <tt>x5t#S256</tt> property with the SHA-256 thumbprint of the DER encoding of the bound X.509 certificate.</t>
          </li>
        </ul>
        <t>An IdP <bcp14>SHOULD NOT</bcp14> bind the same ID-JAG to both a DPoP key and an X.509 certificate. If both a DPoP proof and a certificate suitable for binding are presented on the same Token Exchange request, the IdP selects a single binding mechanism according to local policy for the target Resource Authorization Server.</t>
        <t>The <tt>cnf</tt> (confirmation) claim, as defined in <xref target="RFC7800"/>, is used to bind a key or certificate to a JWT. When an ID-JAG contains a <tt>cnf</tt> claim, proof of possession of the corresponding private key or X.509 certificate <bcp14>MUST</bcp14> be demonstrated when using the ID-JAG at the Resource Authorization Server. A Resource Authorization Server that does not support the confirmation method in the <tt>cnf</tt> claim <bcp14>MUST</bcp14> reject the request with an <tt>invalid_grant</tt> error.</t>
        <t>The following sections describe the processing rules for each mechanism 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="sec-dpop-binding">
          <name>DPoP Key Binding</name>
          <t>DPoP key binding 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>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>
          <section anchor="dpop-key-binding-during-token-exchange">
            <name>DPoP Key Binding 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"/>, unless it binds the ID-JAG to the client's X.509 certificate instead (<xref target="sec-mtls-binding"/>).  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": 1311281270,
  "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="dpop-key-binding-during-id-jag-exchange">
            <name>DPoP Key Binding 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=eyJhbGciOiJSUzI1NiIsInR5cCI6Im9hdXRoLWlkLWphZytqd3QifQ...
]]></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 anchor="sec-mtls-binding">
          <name>mTLS Certificate Binding</name>
          <t>An IdP <bcp14>MAY</bcp14> bind an ID-JAG to a client's X.509 certificate per <xref target="RFC8705"/>. When bound, the <tt>cnf</tt> claim carries an <tt>x5t#S256</tt> property containing the SHA-256 thumbprint of the DER encoding of the certificate, as defined by <xref section="3.1" sectionFormat="of" target="RFC8705"/>.</t>
          <t>The certificate used for binding is the certificate the client presents during the mutually authenticated TLS handshake, validated per <xref section="2" sectionFormat="of" target="RFC8705"/>. Because TLS exposes a single client certificate per connection, the binding certificate and the client-authentication certificate are the same certificate.</t>
          <section anchor="mtls-certificate-binding-during-token-exchange">
            <name>mTLS Certificate Binding During Token Exchange</name>
            <t>When the client presents an X.509 client certificate on the mTLS session to the IdP token endpoint and local policy permits certificate-bound issuance, the IdP validates the certificate per <xref section="2" sectionFormat="of" target="RFC8705"/> and includes an <tt>x5t#S256</tt> <tt>cnf</tt> claim in the issued ID-JAG per <xref section="3.1" sectionFormat="of" target="RFC8705"/>:</t>
            <artwork><![CDATA[
"cnf": {
  "x5t#S256": "bwcK0esc3ACC3DB2Y5_lESsXE8o9ltc05O89jdN-dg2"
}
]]></artwork>
            <t>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> verify that the returned ID-JAG contains an <tt>x5t#S256</tt> <tt>cnf</tt> claim matching the certificate it presented, to detect a silent downgrade.</t>
            <t>If no client certificate is presented (or is not accepted for binding), the IdP issues an ID-JAG without an <tt>x5t#S256</tt> <tt>cnf</tt> claim.</t>
          </section>
          <section anchor="mtls-certificate-binding-during-id-jag-exchange">
            <name>mTLS Certificate Binding During ID-JAG Exchange</name>
            <t>When the client exchanges the ID-JAG at the Resource Authorization Server, processing depends on whether the ID-JAG contains an <tt>x5t#S256</tt> <tt>cnf</tt> claim and whether the client establishes an mTLS session:</t>
            <ul spacing="normal">
              <li>
                <t><strong><tt>cnf.x5t#S256</tt> present and mTLS certificate presented:</strong> The Resource Authorization Server <bcp14>MUST</bcp14> validate the certificate per <xref section="2" sectionFormat="of" target="RFC8705"/>, compute its SHA-256 thumbprint per <xref section="3.1" sectionFormat="of" target="RFC8705"/>, and compare against <tt>cnf.x5t#S256</tt>. Mismatch <bcp14>MUST</bcp14> fail with <tt>invalid_grant</tt>. On match, the Resource Authorization Server <bcp14>MAY</bcp14> issue a certificate-bound access token per <xref section="3" sectionFormat="of" target="RFC8705"/>.</t>
              </li>
              <li>
                <t><strong><tt>cnf.x5t#S256</tt> present, no mTLS certificate:</strong> <bcp14>MUST</bcp14> fail with <tt>invalid_grant</tt>.</t>
              </li>
              <li>
                <t><strong>No <tt>cnf.x5t#S256</tt>, mTLS certificate presented:</strong> The Resource Authorization Server <bcp14>MAY</bcp14> validate the certificate per <xref section="2" sectionFormat="of" target="RFC8705"/> and issue a certificate-bound access token per <xref section="3" sectionFormat="of" target="RFC8705"/>.</t>
              </li>
              <li>
                <t><strong>No <tt>cnf.x5t#S256</tt>, no mTLS certificate:</strong> The Resource Authorization Server <bcp14>MAY</bcp14> issue an unconstrained Bearer token; if Resource Server configuration requires sender-constrained tokens, <bcp14>MUST</bcp14> fail with <tt>invalid_grant</tt>.</t>
              </li>
            </ul>
            <t>Example request (mTLS session established at the TLS layer) and successful response with a certificate-bound access token:</t>
            <artwork><![CDATA[
POST /oauth2/token HTTP/1.1
Host: acme.chat.example
Content-Type: application/x-www-form-urlencoded

grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer
&assertion=eyJhbGciOiJSUzI1NiIsInR5cCI6Im9hdXRoLWlkLWphZytqd3QifQ...
&client_id=f53f191f9311af35


HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store

{
  "token_type": "Bearer",
  "access_token": "2YotnFZFEjr1zCsicMWpAA",
  "expires_in": 86400,
  "scope": "chat.read chat.history"
}
]]></artwork>
          </section>
        </section>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>The privacy considerations of <xref target="RFC8693"/>, <xref target="RFC7523"/>, and <xref section="6" sectionFormat="of" target="I-D.ietf-oauth-identity-chaining"/> also apply to this specification. Disclosure of subject identifiers to the Client is covered in <xref target="sub-id-disclosure"/>, and disclosure of trust relationships in metadata in <xref target="metadata-disclosure"/>.</t>
      <t>The IdP Authorization Server learns which Clients access which Resource Authorization Servers for which End-Users, and when, including access that happens without the End-User present. It should keep the records described in <xref target="subject-token-storage"/> only as long as security and audit require, and should let End-Users or administrators see and revoke cross-app access.</t>
      <t>The Client can read the ID-JAG, including claims it would not receive in its own ID Token, such as a pairwise <tt>sub</tt> or <tt>aud_sub</tt>, and can link them across Resource Authorization Servers. The IdP Authorization Server <bcp14>SHOULD</bcp14> include only the claims the Resource Authorization Server needs.</t>
      <t>A Resource Authorization Server that provisions accounts from ID-JAGs (<xref target="id-jag"/>) can create accounts for End-Users who never used it directly, and should retain only the attributes it needs.</t>
      <t>Error descriptions <bcp14>SHOULD NOT</bcp14> disclose more about the End-User than the error code conveys, such as whether the End-User holds a license for the application.</t>
    </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 the following 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>
          <li>
            <t>Metadata Name: <tt>id_jag_signing_alg_values_supported</tt></t>
          </li>
          <li>
            <t>Metadata Description: JSON array of the JWS signing algorithms supported for signing Identity Assertion JWT Authorization Grants</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="RFC7518">
          <front>
            <title>JSON Web Algorithms (JWA)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification registers cryptographic algorithms and identifiers to be used with the JSON Web Signature (JWS), JSON Web Encryption (JWE), and JSON Web Key (JWK) specifications. It defines several IANA registries for these identifiers.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7518"/>
          <seriesInfo name="DOI" value="10.17487/RFC7518"/>
        </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="RFC8705">
          <front>
            <title>OAuth 2.0 Mutual-TLS Client Authentication and Certificate-Bound Access Tokens</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>This document describes OAuth client authentication and certificate-bound access and refresh tokens using mutual Transport Layer Security (TLS) authentication with X.509 certificates. OAuth clients are provided a mechanism for authentication to the authorization server using mutual TLS, based on either self-signed certificates or public key infrastructure (PKI). OAuth authorization servers are provided a mechanism for binding access tokens to a client's mutual-TLS certificate, and OAuth protected resources are provided a method for ensuring that such an access token presented to it was issued to the client presenting the token.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8705"/>
          <seriesInfo name="DOI" value="10.17487/RFC8705"/>
        </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="19" month="July" year="2026"/>
            <abstract>
              <t>   This specification describes a mechanism for preserving identity and
   authorization information across trust domains that use the OAuth 2.0
   Framework.  A JSON Web Token (JWT) authorization grant, obtained
   through an intra-domain OAuth 2.0 Token Exchange, facilitates the
   cross-domain acquisition of an access token.  The relevant identity
   and authorization information is chained throughout the flow by being
   conveyed in the respective artifacts exchanged at each step of the
   process.  Chaining across multiple domains is achieved by using the
   same protocol every time a trust domain boundary is crossed.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-identity-chaining-17"/>
        </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="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </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.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="October" year="2026"/>
            <abstract>
              <t>   This specification defines a new OAuth 2.0 authorization grant type
   for exchanging a JSON Web Token (JWT) assertion that is bound to a
   key for an access token.  To use the assertion, the client must prove
   possession of that key using the Demonstrating Proof of Possession
   (DPoP) mechanism.  Unlike the JWT bearer grant, a stolen assertion
   cannot be used by a party that does not hold the private key.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-parecki-oauth-jwt-dpop-grant-02"/>
        </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.Discovery" target="https://openid.net/specs/openid-connect-discovery-1_0.html">
          <front>
            <title>OpenID Connect Discovery 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="E." surname="Jay">
              <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="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="6" month="July" 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-02"/>
        </reference>
      </references>
    </references>
    <?line 1488?>

<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 as 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 identifies itself at both with a Client ID Metadata Document <xref target="I-D.ietf-oauth-client-id-metadata-document"/> that publishes its public keys, and authenticates in the Token Exchange request with the corresponding private key (<xref target="token-exchange"/>), for example using <tt>private_key_jwt</tt></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 accepts clients identified by a Client ID Metadata Document, and either authenticates the Client the same way or accepts a sender-constrained ID-JAG (<xref target="token-request"/>)</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
Cache-Control: no-store

{
  "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 /
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": "eyJhbGciOiJSUzI1NiIsI...",
  "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": 1984445400,
  "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=eyJhbGciOiJSUzI1NiIsI...
]]></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, Paul Carleton, Sofia Desenberg, Meghna Dubey, George Fletcher, Bingrong He, Pieter Kasselman, Aaron Jeongwoo Kim, Kai Lehmann, David Lozano, Kaixuan Luo, Ken McCracken, Anuj Mistry, Dean H. Saxe, Kenneth Sinder, 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>-06</t>
      <ul spacing="normal">
        <li>
          <t>Changed the IdP Authorization Server error for a subject token that fails validation from <tt>invalid_grant</tt> to <tt>invalid_request</tt>, as required by Section 2.2.2 of RFC 8693</t>
        </li>
        <li>
          <t>Explained why <tt>access_denied</tt> is used rather than <tt>invalid_target</tt> when the Client or End-User is not authorized for the target</t>
        </li>
      </ul>
      <t>-05</t>
      <ul spacing="normal">
        <li>
          <t>Added <tt>invalid_target</tt> handling and resource governance checks for the <tt>resource</tt> parameter and claim</t>
        </li>
        <li>
          <t>Added security considerations on Authorization Server and Protected Resource Metadata validation</t>
        </li>
        <li>
          <t>Added mTLS certificate binding as an alternative sender-constraining mechanism for the ID-JAG, alongside DPoP</t>
        </li>
        <li>
          <t>Added security considerations on storage and caching of subject tokens (ID Token, SAML Assertion, Refresh Token)</t>
        </li>
        <li>
          <t>Added requirement that the IdP confirm the subject token is actually a token of the indicated type</t>
        </li>
        <li>
          <t>Allowed an IdP to accept ID-JAGs it issued itself when explicitly configured</t>
        </li>
        <li>
          <t>Profiled <tt>access_denied</tt> alongside <tt>invalid_grant</tt> for authorization failures at the IdP and Resource Authorization Server</t>
        </li>
        <li>
          <t>Clarified SAML NameID stability and scope assumptions, and resolution of users by attributes other than NameID</t>
        </li>
        <li>
          <t>Clarified the subjects whose claims the ID-JAG conveys (End-User, client, and actor)</t>
        </li>
        <li>
          <t>Clarified that <tt>sub</tt> is selected for the Resource Authorization Server, and added a Subject Identifier Mapping section</t>
        </li>
        <li>
          <t>Clarified that Token Exchange <tt>scope</tt> values are not OpenID Connect scopes</t>
        </li>
        <li>
          <t>Specified how the Resource Authorization Server finds and validates ID-JAG signing keys</t>
        </li>
        <li>
          <t>Added <tt>id_jag_signing_alg_values_supported</tt> IdP metadata parameter</t>
        </li>
        <li>
          <t>Specified that IdP metadata is located per RFC 8414</t>
        </li>
        <li>
          <t>Clarified ID-JAG reuse limits and when the Client should request a new ID-JAG</t>
        </li>
        <li>
          <t>Required the IdP to authenticate the Client in the Token Exchange request</t>
        </li>
        <li>
          <t>Limited the Token Exchange request to a single <tt>audience</tt> value, and profiled <tt>invalid_target</tt> for an unrecognized audience or a resource not governed by it</t>
        </li>
        <li>
          <t>Defined resource identifier comparison, made the IdP resource governance check a <bcp14>SHOULD</bcp14>, and required the access token to be restricted to the resources in the ID-JAG <tt>resource</tt> claim</t>
        </li>
        <li>
          <t>Moved RFC 9728 to normative references</t>
        </li>
        <li>
          <t>Clarified how the IdP validates a Refresh Token used as the subject token, and when the RFC 6749 scope comparison applies</t>
        </li>
        <li>
          <t>Required the <tt>jwt-dpop</tt> grant type for DPoP-bound ID-JAGs, and required the Resource Authorization Server to reject an ID-JAG with an unsupported <tt>cnf</tt> confirmation method</t>
        </li>
        <li>
          <t>Allowed a key-bound ID-JAG to be used in place of client authentication at the Resource Authorization Server</t>
        </li>
        <li>
          <t>Fixed the tenant claims used in the client ID and subject identifier uniqueness rules</t>
        </li>
        <li>
          <t>Added a tenant context check at the Resource Authorization Server</t>
        </li>
        <li>
          <t>Added Privacy Considerations</t>
        </li>
        <li>
          <t>Updated the email and calendaring use case to use a Client ID Metadata Document</t>
        </li>
        <li>
          <t>Fixed examples (RS256 signatures, <tt>Cache-Control</tt> headers, mTLS <tt>client_id</tt>, consistent <tt>iss</tt> and <tt>exp</tt> values)</t>
        </li>
        <li>
          <t>Corrected cited section numbers, removed citations from the abstract, and removed an unused reference</t>
        </li>
        <li>
          <t>Editorial clarifications and typo fixes</t>
        </li>
      </ul>
      <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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
WtYO1riRsRU4PMZx6tDvyWPhSWhQ8lCCGb9uUl70ue5MPSthNuaUpRuWG62i
uNk5+4PlH+rHjeQXC97Em3uJNCb4xo13a2uuXLfIbCfCOscUYXdXy/yi2M5h
cZgX8D0Splr9SAzwgLkbWDJezw7lrKJY4XoaiDlTxo7RA69G9wwhRtXqU2LF
fr+AhS9JDh0PH48QOnb8Lh+yUaxfD+knGIn2iIcuzc1VX6XJ4xfFC8qUh9Gq
bMy/PcsJ/lcxQR36wEdFNv2WSMBNdyvW4yJgGlsfJojIWDQyBl0DP05nFasf
55gNgwqIQ/necP+92pid5/JWOdsxWpI3So7rjgJTkhgoexYZg4PGa/oWXGmH
OTDl0Pa+kS2jvQm/hO3hSvKK9vj6paoJd2FWz2MwIYFnICFfppNsWEynIarT
f8zdtrnbUaR8BBKe0HbbewEyZM/XE1LakgKkqiw0OPUGORBHJmPge1vGigeP
S5/gjJ82nWTAD9wYorMeZUdzrdafiWZZlgWi6Wy7rjVbeaVpVrHbfrGuXlI6
LdFxk3Mp+q9pwALXA0izykfnT99evqverMr8NMi45NJHgaamzJ3lUP+m4wEv
CWHlnAOo29Zp7uxA6pipSgWLRSkGPTuHxdUXc07ZZeRQV30tIPfbwTaFu6Rp
hn4tVBNmmoQPeuQd32gXV4uZan+n/CqDSal5hP0w+6RtFjME5eTpgHVxzjh9
KoPgfsuXbC/SIyy4m5/6NBGbTI157/yvNzr+JddTSNolQsv0yKv/tIpoj/6i
kd72ui3rly5lkWG6dWs5qwVXhJE+Q2ksN9kyezl5DVOVUK5g9vWDLUpfQyIE
FfVcCL+dulr3Rk28T3a2JfM0jlT/BOz9kS0fTJeH1itdCnsEzVzRGJuz0NpB
ztTp9RPHGvblXLZLo/gN1vVnpotGxpawAXCQT1w+z82pFZ2Zk83kCep1PCJU
ur4UwitsvQjq75cjW9/4ZlDfxOo97+nKF2/l12ldp+N3nN/E6dUhyBo1m5O+
J62c1w30NeI6ptDehExB365e0trASwjvNbCeIxgMo8a0HVPYhweomBRUGoiQ
aKiheJQKNCw0hXm8mOq7N+qzNZmJZCTM0rGv4xxfgKnjUWE3rkr6TAniqit3
QhhXaoyAw/FVUCpqH3ty5VkxhOAaR4wGNs7FTOEGdI4kZ1eK6OC0mbA7VkbF
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

-->

</rfc>
