<?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-05" 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-05"/>
    <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="30"/>
    <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_grant</tt>: the subject token failed validation (for example expired, malformed, audience mismatch, or a Refresh Token is expired or revoked). A re-issued subject token may resolve the error.  </t>
                <artwork><![CDATA[
{
  "error": "invalid_grant",
  "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.  </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>-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>Clarified ID-JAG reuse limits and when the Client should request a new ID-JAG</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>Fixed the tenant claims used in the client ID and subject identifier uniqueness rules</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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
GUWoMlePoTUe2nltELVYt8ns3OF7rT9QKz++be/ty6084/gqZ5IXXzvXcajh
KlZwkfuy3mqE1YkAsqsMFCh4Wk4F0IxH+rKIffHR7zIycrulecwMNp+WFtsZ
K7/pxPBJd3DnADuyzMlPZ7aCQCuuBaJLDCQKRKLk7di1KsvGNdd6l9/nTff0
Bq+2qdMV59sqcz4k5R4mQ60HkAHxlNCHVtMqKpok5nbo0oHpPWZBWkcBPwhu
a+oOpNw1w4C6pvQKNp3aFZ8F5/Wwt1AYxPphGuBc0jxh6XBr+Z9W4YHzmHMb
/fs9fG1WIm7bK7DYF4jdwey7TTfQwJ+HX0qt5OQNPeTm5iyyTzrOiTpOf/kk
rTyCXxCLpOoxDImhGErLKw/85xqGSQakePKt+sFfe9EW3sYqdriPwMCUm9Mb
Le54E0sZqN5I9nRGemOiiKYs7TmF+2opZuW6ZGHaWC6G0yubvpi4fNYq+OcM
CK2vWzePcImMaeDq8jbhMePkpA5JboidAs5vXIC9SJfGtYtPJ+/xciqpxC0C
BISUJHymV84FI5wSs2FSFjPu2N7Hw9890pcesY3FAfOq7byPVP9IVZikCN2A
g9ps7EuqlqtyWVQZdSkyFJNfM+tIfu/1aqGuLcslkdpei3zmsNxyFjdZP8j7
azQTXSvFZI4YrhadpVXLBGG2XKkjUBVxACqKTKV7MSA4m1rLRvCryKW/hV3U
LD5S1jvapB5EanEVTF3mGVhiji9EacAj2sGC6l2meBM4S8fvUHfpm+8wSC27
mkePczBs0G1OIKad070bTncDlenwYo1PeIJDQFQGDyuCvcCdzidvYCPf4MfI
HPCjN9wQOuAI32JyZDFJAojGGd4A5V737Q8niQxp57F9Cn/ItbHaSdwbNsZ2
OfeBx5PJU/FTEDagCQS+gpcn+3fvkRoRXl+7zOg2eSg63SudwKAPQD7V4iDJ
na6DWyDxj7qPRaBvwEbwUr0M9fEmTg4lu5VTaxXSzWS6KYbrrSfb0lb43Vmn
vYfyAG1hZ1rGINUW54JIyoziGyJ4ZlxDGCzkQt5SMMZUvwhijYubWAkCZNyr
wjtXq0vAHJsQes7M02kjoJXHhZZ38iMYjMcsp3y8mqXigMMIlxjI6qIQ29K3
XhkkLR7yIFac98FJNNQjtlNb8unprSZlQX3ymPopyGvxKgcSCBphbUcB+a3X
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

-->

</rfc>
