<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-oauth-identity-chaining-14" category="std" consensus="true" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title>OAuth Identity and Authorization Chaining Across Domains</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-identity-chaining-14"/>
    <author initials="A." surname="Schwenkschuster" fullname="Arndt Schwenkschuster">
      <organization>Defakto Security</organization>
      <address>
        <email>arndts.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="P." surname="Kasselmann" fullname="Pieter Kasselmann">
      <organization>Defakto Security</organization>
      <address>
        <email>pieter@defakto.security</email>
      </address>
    </author>
    <author initials="K." surname="Burgin" fullname="Kelley Burgin">
      <organization>MITRE</organization>
      <address>
        <email>kburgin@mitre.org</email>
      </address>
    </author>
    <author initials="M." surname="Jenkins" fullname="Mike Jenkins">
      <organization>NSA-CCSS</organization>
      <address>
        <email>mjjenki@cyber.nsa.gov</email>
      </address>
    </author>
    <author initials="B." surname="Campbell" fullname="Brian Campbell">
      <organization>Ping Identity</organization>
      <address>
        <email>bcampbell@pingidentity.com</email>
      </address>
    </author>
    <author initials="A." surname="Parecki" fullname="Aaron Parecki">
      <organization>Okta</organization>
      <address>
        <email>aaron@parecki.com</email>
      </address>
    </author>
    <date year="2026" month="June" day="02"/>
    <area>sec</area>
    <workgroup>oauth</workgroup>
    <abstract>
      <?line 60?>

<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>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Web Authorization Protocol Working Group mailing list (oauth@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/oauth/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/oauth-wg/oauth-identity-chaining"/>.</t>
    </note>
  </front>
  <middle>
    <?line 66?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Applications often require access to resources that are distributed across multiple trust domains where each trust domain has its own OAuth 2.0 authorization server. A request may transverse multiple resource servers in multiple trust domains before completing. All protected resources involved in such a request need to know on whose behalf the request was originally initiated (i.e. the user), what authorization was granted and optionally which other resource servers were called prior to making an authorization decision. This information needs to be preserved, even when a request crosses one or more trust domains. This document refers to this as "chaining" and defines a common pattern for combining 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 access resources across multiple trust domains while preserving identity and authorization information.</t>
      <section anchor="requirements-language">
        <name>Requirements Language</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>
    </section>
    <section anchor="identity-and-authorization-chaining-across-domains">
      <name>Identity and Authorization Chaining Across Domains</name>
      <t>This specification describes a combination of OAuth 2.0 Token Exchange <xref target="RFC8693"/> and JWT Profile for OAuth 2.0 Client Authentication and Authorization Grants <xref target="RFC7523"/> to achieve identity and authorization chaining across domains.</t>
      <t>A client in trust domain A that needs to access a resource server in trust domain B requests a JWT authorization grant from the authorization server for trust domain A using a profile of OAuth 2.0 Token Exchange <xref target="RFC8693"/>. The client in trust domain A then presents the received grant as an assertion to the authorization server in trust domain B, using the JWT authorization grant feature of <xref target="RFC7523"/>, to obtain an access token for the protected resource in trust domain B.</t>
      <t>In some deployments, the client in trust domain A may obtain a JWT authorization grant using a proprietary API or interface other than the OAuth 2.0 Token Exchange protocol <xref target="RFC8693"/>. The details of such an interface are out of scope for this document but an alternative means of acquiring the JWT authorization grant is not precluded by this document. A JWT authorization grant, regardless of how it was obtained, <bcp14>MUST</bcp14> be used to request an access token from the authorization server in trust domain B as described in <xref target="jwt-authorization-grant"/> of this document.</t>
      <section anchor="overview">
        <name>Overview</name>
        <t>The identity and authorization chaining flow outlined below describes how a combination of OAuth 2.0 Token Exchange <xref target="RFC8693"/> and JWT Profile for OAuth 2.0 Client Authentication and Authorization Grants <xref target="RFC7523"/> are used to address the use cases identified.
Conceptually, this is an exchange within the first domain that produces a JWT authorization grant intended for use in acquiring an access token from the second domain.</t>
        <figure>
          <name>Identity and Authorization Chaining Flow</name>
          <artwork><![CDATA[
+-------------+         +--------+         +-------------+ +---------+
|Authorization|         | Client |         |Authorization| |Protected|
|Server       |         | Trust  |         |Server       | |Resource |
|Trust        |         |Domain A|         |Trust        | |Trust    |
|Domain A     |         |        |         |Domain B     | |Domain B |
+-------------+         +--------+         +-------------+ +---------+
       |                    |                     |             |
       |                    |----+                |             |
       |      (1) discover  |    |                |             |
       |      Authorization |<---+                |             |
       |      Server        |                     |             |
       |      Trust Domain B|                     |             |
       |                    |                     |             |
       | (2) exchange token |                     |             |
       |   [RFC 8693]       |                     |             |
       |<-------------------|                     |             |
       |                    |                     |             |
       | (3) <authorization |                     |             |
       |       grant JWT>   |                     |             |
       | - - - - - - - - - >|                     |             |
       |                    |                     |             |
       |                    | (4) present         |             |
       |                    | authorization grant |             |
       |                    | [RFC 7523]          |             |
       |                    | ------------------->|             |
       |                    |                     |             |
       |                    | (5) <access token>  |             |
       |                    | <- - - - - - - - - -|             |
       |                    |                     |             |
       |                    |               (6) access          |
       |                    | --------------------------------->|
       |                    |                     |             |
]]></artwork>
        </figure>
        <t>The flow illustrated in Figure 1 shows the steps the client in trust domain A needs to perform to access a protected resource in trust domain B. In this flow, the client is in possession of a token that an authorization server will accept as part of a token exchange flow as defined in <xref target="token-exchange">Token Exchange</xref>. How the client obtained this token is out of scope of this specification. The client has a way to discover the authorization server in domain B and a trust relationship exists between domain A and domain B. It includes the following:</t>
        <ol spacing="normal" type="1"><li>
            <t>The client in trust domain A discovers the location of the authorization server of trust domain B. See <xref target="authorization-server-discovery">Authorization Server Discovery</xref>.</t>
          </li>
          <li>
            <t>The client in trust domain A exchanges a token it has in its possession with the authorization server in trust domain A for a JWT authorization grant that can be used at the authorization server in trust domain B. See <xref target="token-exchange">Token Exchange</xref>.</t>
          </li>
          <li>
            <t>The authorization server of trust domain A processes the request and returns a JWT authorization grant that the client can use with the authorization server of trust domain B. This requires a trust relationship between the authorization servers in trust domain A and trust domain B. Such a trust relationship typically manifests as the exchange of key material, whereby the authorization server in domain B trusts the public key(s) of domain A, which are used to verify JWT authorization grants signed with the corresponding private key(s).</t>
          </li>
          <li>
            <t>The client in trust domain A presents the authorization grant to the authorization server of trust domain B. See <xref target="atr">Access Token Request</xref>.</t>
          </li>
          <li>
            <t>Authorization server of trust domain B validates the JWT authorization grant and returns an access token.
 Validating the JWT authorization grant requires trusting the public key(s) of domain A and its authority to issue authorization grants. This might take the form of configuration and policy in domain B that associates a set of public keys with domain A. Or might rely on the keys published at domain A's <tt>jwks_uri</tt> as listed in its Authorization Server Metadata <xref target="RFC8414"/>.</t>
          </li>
          <li>
            <t>The client in trust domain A uses the access token received from the authorization server in trust domain B to access the protected resource in trust domain B.</t>
          </li>
        </ol>
      </section>
      <section anchor="authorization-server-discovery">
        <name>Authorization Server Discovery</name>
        <t>This specification does not define authorization server discovery. A client may use the <tt>authorization_servers</tt> property as defined in OAuth 2.0 Protected Resource Metadata <xref target="RFC9728"/>, maintain a static mapping or use other means to identify the authorization server.</t>
      </section>
      <section anchor="token-exchange">
        <name>Token Exchange</name>
        <t>The client in trust domain A performs token exchange as defined in <xref target="RFC8693"/> with the authorization server in trust domain A in order to obtain a JWT authorization grant that can be used with the authorization server of trust domain B as specified in Section 1.3 of <xref target="RFC6749"/>.</t>
        <section anchor="token-exchange-request">
          <name>Token Exchange Request</name>
          <t>The parameters described in Section 2.1 of <xref target="RFC8693"/> apply here with the following restrictions:</t>
          <dl newline="true">
            <dt>scope</dt>
            <dd>
              <t>Additional scopes to indicate scopes included in the returned JWT authorization grant, if required. See <xref target="claims-transcription">Claims transcription</xref>.</t>
            </dd>
            <dt>resource</dt>
            <dd>
              <t>URI of authorization server for trust domain B.</t>
            </dd>
            <dt>audience</dt>
            <dd>
              <t>Well known/logical name of authorization server for trust domain B.</t>
            </dd>
          </dl>
          <t>One of <tt>resource</tt> or <tt>audience</tt> is <bcp14>REQUIRED</bcp14> to indicate the intended authorization server in trust domain B.</t>
        </section>
        <section anchor="processing-rules">
          <name>Processing rules</name>
          <ul spacing="normal">
            <li>
              <t>If the request itself is not valid or if the given resource or audience are unknown, or are unacceptable based on policy, the authorization server in trust domain A <bcp14>MUST</bcp14> deny the request as defined in Section 2.2.2 of <xref target="RFC8693"/>.</t>
            </li>
            <li>
              <t>The authorization server in trust domain A can add, remove or change claims. See <xref target="claims-transcription">Claims transcription</xref>.</t>
            </li>
          </ul>
        </section>
        <section anchor="token-exchange-response">
          <name>Token Exchange Response</name>
          <t>All of Section 2.2 of <xref target="RFC8693"/> applies. In addition, the following applies to implementations that conform to this specification.</t>
          <ul spacing="normal">
            <li>
              <t>The "aud" claim in the returned JWT authorization grant <bcp14>MUST</bcp14> identify the requested authorization server in trust domain B. This corresponds with <eref target="https://datatracker.ietf.org/doc/html/rfc7523#section-3">RFC 7523 Section 3, Point 3</eref> and is there to reduce misuse and to prevent clients from, among other things, presenting access tokens as an authorization grant to an authorization server in trust domain B.</t>
            </li>
            <li>
              <t>The "aud" claim included in the returned JWT authorization grant can identify multiple authorization servers, provided that trust relationships exist with them. However, it is <bcp14>RECOMMENDED</bcp14> that the "aud" claim is restricted to a single authorization server in trust domain B to prevent an authorization server from presenting the client's authorization grant to an authorization server in a different trust domain. For example, this will prevent the authorization server in trust domain B from presenting the authorization grant it received from the client in trust domain A to the authorization server for trust domain C.</t>
            </li>
          </ul>
        </section>
        <section anchor="example">
          <name>Example</name>
          <t>The example below shows the message invoked by the client in trust domain A to perform token exchange with the authorization server in trust domain A (https://as.a.example/auth) to receive a JWT authorization grant for the authorization server in trust domain B (https://as.b.example/auth).</t>
          <figure>
            <name>Token exchange request</name>
            <artwork><![CDATA[
POST /auth/token HTTP/1.1
Host: as.a.example
Content-Type: application/x-www-form-urlencoded

grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Atoken-exchange
&resource=https%3A%2F%2Fas.b.example%2Fauth
&subject_token=ey...
&subject_token_type=
 urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Aaccess_token
]]></artwork>
          </figure>
          <figure>
            <name>Token exchange response</name>
            <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-cache, no-store

{
  "access_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJo
  dHRwczovL2FzLmEub3JnL2F1dGgiLCJleHAiOjE2OTUyODQwOTIsImlhdCI6MTY5N
  TI4NzY5Miwic3ViIjoiam9obl9kb2VAYS5vcmciLCJhdWQiOiJodHRwczovL2FzLm
  Iub3JnL2F1dGgifQ.304Pv9e6PnzcQPzz14z-k2ZyZvDtP5WIRkYPScwdHW4",
  "token_type":"N_A",
  "issued_token_type":"urn:ietf:params:oauth:token-type:jwt",
  "expires_in":60
}
]]></artwork>
          </figure>
        </section>
      </section>
      <section anchor="jwt-authorization-grant">
        <name>JWT Authorization Grant</name>
        <t>The client in trust domain A uses the JWT authorization grant obtained from the authorization server in trust domain A as an assertion to request an access token from the authorization server in trust domain B, as described in <xref target="RFC7523"/>.</t>
        <section anchor="atr">
          <name>Access Token Request</name>
          <t>The JWT authorization grant is used to request an access token as defined in Section 2.1 of <xref target="RFC7523"/>. The following required parameters are described additionally here:</t>
          <dl newline="true">
            <dt>grant_type</dt>
            <dd>
              <t>As defined in Section 2.1 of <xref target="RFC7523"/> the value <tt>urn:ietf:params:oauth:grant-type:jwt-bearer</tt> indicates the request is a JWT bearer assertion authorization grant.</t>
            </dd>
            <dt>assertion</dt>
            <dd>
              <t>The JWT authorization grant returned by the authorization server for domain A (see <xref target="token-exchange">Token Exchange</xref> response).</t>
            </dd>
          </dl>
          <t>The client in trust domain A can indicate the protected resource it is trying to access through the <tt>scope</tt> parameter or the <tt>resource</tt> parameter defined in <xref target="RFC8707"/>.</t>
        </section>
        <section anchor="processing-rules-1">
          <name>Processing rules</name>
          <t>The authorization server in trust domain B <bcp14>MUST</bcp14> validate the JWT authorization grant as specified in Sections 3 and 3.1 of <xref target="RFC7523"/>. The following processing rules also apply:</t>
          <ul spacing="normal">
            <li>
              <t>The "aud" claim <bcp14>MUST</bcp14> identify the authorization server in trust domain B as a valid intended audience of the assertion using either the token endpoint as described Section 3 of <xref target="RFC7523"/> or the issuer identifier as defined in Section 2 of <xref target="RFC8414"/>.</t>
            </li>
            <li>
              <t>The authorization server in trust domain B <bcp14>MUST</bcp14> deny the request if it is not able to identify the subject.</t>
            </li>
            <li>
              <t>Due to policy the request <bcp14>MAY</bcp14> be denied (for instance if a trust relationship with trust domain A is not established).</t>
            </li>
          </ul>
          <t>Section 3.1 of <xref target="RFC7523"/> describes the error response used in request denial cases.</t>
        </section>
        <section anchor="access-token-response">
          <name>Access Token Response</name>
          <t>When the authorization grant has been validated, the authorization server in trust domain B responds with an access token as described in Section 5.1 of <xref target="RFC6749"/>.</t>
        </section>
        <section anchor="example-1">
          <name>Example</name>
          <t>The examples below show how the client in trust domain A presents an authorization grant to the authorization server in trust domain B (https://as.b.example/auth) to receive an access token for a protected resource in trust domain B.</t>
          <figure>
            <name>Assertion request</name>
            <artwork><![CDATA[
POST /auth/token HTTP/1.1
Host: as.b.example
Content-Type: application/x-www-form-urlencoded

grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer
&assertion=ey...
]]></artwork>
          </figure>
          <figure>
            <name>Assertion response</name>
            <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-cache, no-store

{
  "access_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJo
  dHRwczovL2FzLmIub3JnL2F1dGgiLCJleHAiOjE2OTUyODQwOTIsImlhdCI6MTY5N
  TI4NzY5Miwic3ViIjoiam9obi5kb2UuMTIzIiwiYXVkIjoiaHR0cHM6Ly9iLm9yZy
  9hcGkifQ.CJBuv6sr6Snj9in5T8f7g1uB61Ql8btJiR0IXv5oeJg",
  "token_type":"Bearer",
  "expires_in":60
}
]]></artwork>
          </figure>
        </section>
      </section>
      <section anchor="claims-transcription">
        <name>Claims transcription</name>
        <t>Claims transcription is motivated by the need to propagate user and client identifiers, authorization context, and other relevant information across trust boundaries.
This enables the various entities involved to determine on whose behalf the request is being made, what authorization has been granted, and, potentially, which other resource servers were previously involved.</t>
        <t>Authorization servers may transcribe claims when either producing JWT authorization grants in the token exchange flow or access tokens in the assertion flow. Transcription of claims may be required for the following reasons:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Transcribing the subject identifier</strong>: The subject identifier can differ between the parties involved. For example, a user is identified in trust domain A as "johndoe@a.example" but in trust domain B they are identified as "doe.john@b.example". The mapping from one identifier to the other can either happen in the token exchange step and the updated identifier is reflected in the returned JWT authorization grant or in the assertion step where the updated identifier would be reflected in the access token. To support this, both authorization servers can add, change or remove claims as described above.</t>
          </li>
          <li>
            <t><strong>Data Minimization</strong>: Authorization servers can remove or hide certain claims due to privacy requirements or reduced trust towards the targeting trust domain.
One example is a financial institution that integrates with a third-party payment gateway.
Domain A (the financial institution) includes detailed claims such as "account type: premium" and "transaction limit: $10,000" in the JWT authorization grant.
However, domain B (the payment gateway) only needs claims like "transaction limit" for its access control policies. Domain A transcribes the claims to exclude unnecessary information, ensuring that domain B receives only the claims relevant to its operations.</t>
          </li>
          <li>
            <t><strong>Controlling scope</strong>: Clients can use the scope parameter to control transcribed claims (e.g. downscoping). Authorization Servers <bcp14>SHOULD</bcp14> verify that the requested scopes are not higher privileged than the scopes of the presented subject_token.
For example, a cloud-based development platform that allows developers to access APIs across multiple trust domains where a developer in domain A requests access to an API in domain B but only needs limited permissions, such as "read-only" access.
The authorization server in domain A transcribes the claims into the JWT authorization grant to reflect the downscoped permissions, removing higher-privileged claims like "write" or "admin." This ensures that the access token issued by domain B aligns with the developer's intended scope of access.</t>
          </li>
          <li>
            <t><strong>Including JWT authorization grant claims</strong>: The authorization server in trust domain B which is performing the assertion flow can leverage claims from the JWT authorization grant presented by the client in trust domain A and include them in the returned access token.</t>
          </li>
        </ul>
        <t>The representation of transcribed claims and their format is not defined in this specification.</t>
        <t>When transcribing claims, it's
important that both the place where the claims are given and where they
are interpreted agree on the semantics and that the access controls are
consistent.</t>
      </section>
    </section>
    <section anchor="authorization-server-metadata">
      <name>Authorization Server Metadata</name>
      <t>The following authorization server metadata parameter is defined by this specification and is registered in the "OAuth Authorization Server Metadata" registry established in "OAuth 2.0 Authorization Server Metadata" <xref target="RFC8414"/>.</t>
      <dl newline="true">
        <dt>identity_chaining_requested_token_types_supported</dt>
        <dd>
          <t><bcp14>OPTIONAL</bcp14>. JSON array containing a list of Token Types that can be requested as a <tt>requested_token_type</tt> in the Token Exchange request when performing Identity and Authorization Chaining Across Domains. In situations where it might be an information disclosure concern, authorization servers <bcp14>MAY</bcp14> choose not to advertise some supported requested token types even when this parameter is used, and lack of a value does not necessarily mean that the token type is unsupported.</t>
        </dd>
      </dl>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <section anchor="oauth-authorization-server-metadata-registry">
        <name>OAuth Authorization Server Metadata Registry</name>
        <t>This specification requests registration of the following parameter in the "OAuth Authorization Server Metadata" registry established in <xref target="RFC8414"/>.</t>
        <section anchor="registry-contents">
          <name>Registry Contents</name>
          <ul spacing="normal">
            <li>
              <t>Metadata Name: <tt>identity_chaining_requested_token_types_supported</tt></t>
            </li>
            <li>
              <t>Metadata Description: JSON array containing a list of Token Type Identifiers supported as a <tt>requested_token_type</tt> in an Identity and Authorization Chaining Token Exchange (<xref target="RFC8693"/>) request.</t>
            </li>
            <li>
              <t>Change Controller: IETF</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="authorization-server-metadata"/> of [[this document]]</t>
            </li>
          </ul>
        </section>
      </section>
    </section>
    <section anchor="Security">
      <name>Security Considerations</name>
      <section anchor="client-authentication">
        <name>Client Authentication</name>
        <t>Authorization Servers should follow Section 2.5 of the Best Current Practice for OAuth 2.0 Security <xref target="RFC9700"/> for client authentication.</t>
      </section>
      <section anchor="sender-constraining">
        <name>Sender Constraining Tokens</name>
        <t>Authorization Servers should follow the Best Current Practice for OAuth 2.0 Security <xref target="RFC9700"/> for sender constraining tokens,
acknowledging, however, that bearer tokens remain the predominantly deployed access token type.</t>
      </section>
      <section anchor="authorized-use-of-subject-token">
        <name>Authorized use of Subject Token</name>
        <t>The authorization server in trust domain A can perform client authentication and verify that the client in trust domain A is authorized to present the token used as a subject_token in the token exchange flow before issuing an authorization grant. By doing so, it minimizes the risk of an attacker making a lateral move by using a stolen token from trust domain A to obtain an authorization grant with which to authenticate to an authorization server in trust domain B and request an access token for a resource server in trust domain B.
Such authorization policy might not be present in all deployments, and is of reduced utility for public clients, but it is a recommended security measure for deployments that can support it.</t>
      </section>
      <section anchor="refresh-tokens">
        <name>Refresh Tokens</name>
        <t>The authorization server in trust domain B <bcp14>SHOULD NOT</bcp14> issue refresh tokens to the client in trust domain A within the scope of this specification. When the access token has expired, clients can re-submit the original JWT Authorization Grant (if not expired and reuse is allowed) to obtain a new Access Token. If the JWT Authorization Grant is unusable, the client can request a new grant from the authorization server in trust domain A before presenting it to the authorization server in trust domain B. The issuance of Refresh Tokens by the authorization server in trust domain B introduces a redundant credential requiring additional security measures, and creating unnecessary security risks. It also allows the client to obtain access tokens within trust domain B, even if the initial session in trust domain A has finished (e.g. the user has logged out or access has been revoked).
This is consistent with Section 4.1 of <xref target="RFC7521"/> which discourages but does not prohibit the issuance of refresh tokens in the context of assertion grants.</t>
        <t>The advice of this section is only applicable to refresh token issuance across domains in the context of an assertion grant. It does not relate to the issuance of refresh tokens by the authorization server in trust domain A to the client in trust domain A.</t>
      </section>
      <section anchor="replay-of-authorization-grant">
        <name>Replay of Authorization Grant</name>
        <t>The authorization grant obtained from the Token Exchange process is a bearer token. If an attacker obtains an authorization grant issued to a client in trust domain A, it could replay it to an authorization server in trust domain B to obtain an access token. Implementations must evaluate this risk and deploy appropriate mitigations based on their threat model and deployment environment. Mitigations include, but are not limited to:</t>
        <ul spacing="normal">
          <li>
            <t>Issuing short-lived authorization grants to minimize the window of exposure.</t>
          </li>
          <li>
            <t>Limiting authorization grants to a single use to prevent repeated replay.</t>
          </li>
          <li>
            <t>Requiring client authentication to ensure the client presenting the grant is known to the authorization server in trust domain B.</t>
          </li>
        </ul>
        <t>Authorization servers in trust domain B can enforce these mitigations.</t>
        <t>Implementations and profiles of this specification <bcp14>MAY</bcp14> define additional mitigations tailored to specific use cases and operational contexts.</t>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>In addition to the privacy considerations outlined in <xref target="RFC8693"/> and <xref target="RFC7523"/>, additional privacy considerations apply to this specification.</t>
      <t>This specification enables the exchange of tokens and claims between disparate trust domains.
If excessive or unnecessary user data is included in these tokens, it may lead to unintended privacy consequences.
As noted in <xref target="RFC8693"/> and <xref target="RFC7523"/>, deployments should determine the minimum amount of information necessary to complete the exchange and ensure that only that information is included in the token.</t>
      <t>Inconsistent user privacy practices can result from varying interpretations and implementations of the protocol across authorization servers in different trust domains.
This inconsistency can lead to a lack of transparency and user control over what data is shared and with whom.
To mitigate this, trust relationships between domains must be carefully established and maintained with user privacy in mind.
This includes verifying that privacy policies are aligned across trust domains and clearly define how user data is collected, used, and protected.</t>
    </section>
  </middle>
  <back>
    <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="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="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="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="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="RFC9700">
        <front>
          <title>Best Current Practice for OAuth 2.0 Security</title>
          <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
          <author fullname="J. Bradley" initials="J." surname="Bradley"/>
          <author fullname="A. Labunets" initials="A." surname="Labunets"/>
          <author fullname="D. Fett" initials="D." surname="Fett"/>
          <date month="January" year="2025"/>
          <abstract>
            <t>This document describes best current security practice for OAuth 2.0. It updates and extends the threat model and security advice given in RFCs 6749, 6750, and 6819 to incorporate practical experiences gathered since OAuth 2.0 was published and covers new threats relevant due to the broader application of OAuth 2.0. Further, it deprecates some modes of operation that are deemed less secure or even insecure.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="240"/>
        <seriesInfo name="RFC" value="9700"/>
        <seriesInfo name="DOI" value="10.17487/RFC9700"/>
      </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="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>
    <?line 377?>

<section anchor="use-cases">
      <name>Use cases</name>
      <t>This appendix outlines some use cases where the identity and authorization chaining described in this document can be applied. The use cases described are not exhaustive, but are representative of the type of use cases enabled by this specification. Other use cases may also be supported by this specification.</t>
      <section anchor="preserve-user-context-across-multi-cloud-multi-hybrid-environments">
        <name>Preserve User Context across Multi-cloud, Multi-Hybrid environments</name>
        <t>A user attempts to access a service that is implemented as a number of on-premise and cloud-based workloads. Both the on-premise and cloud-based services are segmented by multiple trust boundaries that span one or more on-premise or cloud service environments. Each workload can apply an authorization policy that takes the context of the original user, as well as intermediary services into account, irrespective of where the workloads are running and even when a workload in one trust domain calls another service in another trust domain.</t>
      </section>
      <section anchor="continuous-integration-accessing-external-resources">
        <name>Continuous Integration Accessing External Resources</name>
        <t>A continuous integration system needs to access external resources, for example to upload an artifact or to run tests. These resources are protected by different authorization servers. The identity information of the build, for example metadata such as commit hashes or repository, should be preserved and carried across the domain boundary. This not just prevents maintaining credentials it also allows fine-grained access control at the resource.</t>
      </section>
      <section anchor="api-security-use-case">
        <name>API Security Use Case</name>
        <t>A home devices company provides a "Camera API" to enable access to home cameras. Partner companies use this Camera API to integrate the camera feeds into their security dashboards. Using OAuth between the partner and the Camera API, a partner can request the feed from a home camera to be displayed in their dashboard. The user has an account with the camera provider. The user may be logged in to view the partner provided dashboard, or they may authorize emergency access to the camera. The home devices company must be able to independently verify that the request originated and was authorized by a user who is authorized to view the feed of the requested home camera.</t>
      </section>
      <section anchor="extend-single-sign-on-to-api-access">
        <name>Extend Single Sign-On to API Access</name>
        <t>A user that authenticated to an enterprise Identity Provider (IdP) does not have to sign in to multiple SaaS applications if the SaaS applications are configured to trust the enterprise IdP. It is possible to extend this SSO relationship to API access by allowing the Client to contact the enterprise IdP and exchange the identity assertion (ID Token or SAML Token) that it previously received from the enterprise IdP for an authorization grant. The authorization grant can be used to obtain an access token from the SaaS application's authorization server, provided that a trust relationship has been established between the enterprise IdP which issues the authorization grant and the SaaS authorization server. As a result SaaS servers that trust the enterprise IdP do not require the user to complete an interactive delegated OAuth 2.0 flow to obtain an access token to access the SaaS provider's APIs.</t>
      </section>
      <section anchor="cross-domain-api-authorization">
        <name>Cross-domain API authorization</name>
        <t>An email client can be used with arbitrary email servers, without requiring pre-established relationships between each email client and each email server. An email client obtains an identity assertion (ID Token or SAML token) from an IdP. When the email client needs access to a separate API, such as a third-party calendaring application, the email client exchanges the identity assertion for an authorization grant and uses this authorization grant to obtain an access token for the third-party calendaring application from the authorization server trusted by the third-party calendaring application. If the authorization server trusts the issuer of the authorization grant, the email client obtains an access token without any additional user interaction.</t>
      </section>
    </section>
    <section anchor="Examples">
      <name>Examples</name>
      <t>This appendix contains two examples, demonstrating how this specification may be used in different environments with specific requirements. The first example shows the resource server acting as the client and the second example shows the authorization server acting as the client.</t>
      <section anchor="resource-server-acting-as-client">
        <name>Resource server acting as client</name>
        <t>As part of completing a request, a resource server in trust domain A may need to access a resource server in trust domain B. This requires the resource server in trust domain A to obtain an Access Token from an authorization server in trust domain B, which it may then present to the resource server in trust domain B. A resource server in trust domain A may use the flows described in this specification by assuming the role of a client when attempting to access the resource server in trust domain B. Resource servers may act as clients if the following is true:</t>
        <ul spacing="normal">
          <li>
            <t>The resource server has the ability to determine the authorization server of the protected resource outside trust domain A.</t>
          </li>
          <li>
            <t>The authorization server in trust domain B is reachable by the resource server in trust domain A and is able to perform the appropriate client authentication (if required).</t>
          </li>
        </ul>
        <t>The flow would look like this:</t>
        <figure>
          <name>Resource server acting as client</name>
          <artwork><![CDATA[
+-------------+       +---------------+     +-------------+ +---------+
|Authorization|       |Resource Server|     |Authorization| |Protected|
|Server       |       |Trust Domain A |     |Server       | |Resource |
|Trust        |       |(acting as     |     |Trust        | |Trust    |
|Domain A     |       | a client)     |     |Domain B     | |Domain B |
+-------------+       +---------------+     +-------------+ +---------+
       |                     |                     |             |
       |                     |   (1) request protected resource  |
       |                     |      metadata                     |
       |                     | --------------------------------->|
       |                     | <- - - - - - - - - - - - - - - - -|
       |                     |                     |             |
       | (2) exchange token  |                     |             |
       |   [RFC 8693]        |                     |             |
       |<--------------------|                     |             |
       |                     |                     |             |
       | (3) <authorization  |                     |             |
       |        grant>       |                     |             |
       | - - - - - - - - -  >|                     |             |
       |                     |                     |             |
       |                     | (4) present         |             |
       |                     |  authorization      |             |
       |                     |  grant [RFC 7523]   |             |
       |                     |-------------------->|             |
       |                     |                     |             |
       |                     | (5) <access token>  |             |
       |                     |<- - - - - - - - - - |             |
       |                     |                     |             |
       |                     |               (6) access          |
       |                     | --------------------------------->|
       |                     |                     |             |
]]></artwork>
        </figure>
        <t>The flow contains the following steps:</t>
        <t>The resource server of trust domain A needs to access protected resource in trust domain B. It requires an access token to do so. In order to obtain the required access token, the resource server in trust domain A will act as a client.</t>
        <ol spacing="normal" type="1"><li>
            <t>The resource server (acting as a client) in trust domain A requests protected resource metadata from the resource server in trust domain B as described in <xref target="RFC9728"/>. It uses the resource metadata to discover information about the authorization server for trust domain B. This step <bcp14>MAY</bcp14> be skipped if discovery is not needed and other means of discovery <bcp14>MAY</bcp14> be used. The protected resource in trust domain B returns its metadata along with the authorization server information in trust domain A.</t>
          </li>
          <li>
            <t>Once the resource server (acting as a client) in trust domain A identified the authorization server for trust domain B, it requests a JWT authorization grant for the authorization server in trust domain B from the authorization server in trust domain A (its own authorization server). This happens via the token exchange protocol (See <xref target="token-exchange">Token Exchange</xref>).</t>
          </li>
          <li>
            <t>If successful, the authorization server in trust domain A returns a JWT authorization grant to the resource server (acting as client) in trust domain A.</t>
          </li>
          <li>
            <t>The resource server (acting as client) in trust domain A presents the JWT authorization grant to the authorization server in trust domain B.</t>
          </li>
          <li>
            <t>The authorization server in trust domain B uses claims from the JWT authorization grant to identify the user and establish additional authorization context. If access is granted, the authorization server in trust domain B returns an access token.</t>
          </li>
          <li>
            <t>The resource server (acting as a client) in trust domain A uses the access token to access the protected resource in trust domain B.</t>
          </li>
        </ol>
      </section>
      <section anchor="authorization-server-acting-as-client">
        <name>Authorization server acting as client</name>
        <t>Authorization servers may act as clients too. This can be necessary because of following reasons:</t>
        <ul spacing="normal">
          <li>
            <t>Clients in trust domain A may not have knowledge of authorization servers in trust domain B.</t>
          </li>
          <li>
            <t>Clients in trust domain A may not have network access to other authorization servers in trust domain B.</t>
          </li>
          <li>
            <t>Strict access control on resources in trust domain B is required. This access control is enforced by authorization servers in trust domain B.</t>
          </li>
          <li>
            <t>Authorization servers in trust domain B require client authentication, but are unable to manage clients outside of trust domain B.</t>
          </li>
        </ul>
        <t>Under these conditions, an authorization server in trust domain A may obtain an access token from an authorization server in trust domain B on-behalf-of any client in trust domain A. This enables clients in trust domain A to access a protected resource server in trust domain B. Resource servers in trust domain A may act as a client to the authorization server in trust domain A in order to obtain an access token to access a protected resource in trust domain B in order to complete a request.</t>
        <t>The authorization server in trust domain A may use the flows described in this specification by acting first as a client to itself to obtain an assertion grant and then act as a client to the authorization server in trust domain B to request an access token for a protected resource in trust domain B. The flow when authorization servers act as a client on-behalf of another client in its own trust domain is shown below:</t>
        <figure>
          <name>Authorization server acting as client</name>
          <artwork><![CDATA[
+--------+          +--------------+       +--------------+ +---------+
|Client  |          |Authorization |       |Authorization | |Protected|
|Trust   |          |Server        |       |Server        | |Resource |
|Domain A|          |Trust Domain A|       |Trust Domain B| |Trust    |
|        |          |(acting as    |       |              | |Domain   |
|        |          |client)       |       |              | |         |
+--------+          +--------------+       +--------------+ +---------+
    |                      |                       |             |
    | (1) request          |                       |             |
    | token for            |                       |             |
    | protected resource   |                       |             |
    | in trust domain B.   |                       |             |
    | -------------------->|                       |             |
    |                      |                       |             |
    |                      |----+                  |             |
    |                      |    | (2) determine    |             |
    |                      |<---+ authorization    |             |
    |                      |      server trust     |             |
    |                      |      domain B         |             |
    |                      |                       |             |
    |                      |----+                  |             |
    |                      |    | (3) generates    |             |
    |                      |<---+ authorization    |             |
    |                      |      grant            |             |
    |                      |                       |             |
    |                      | (4) present           |             |
    |                      |   authorization grant |             |
    |                      |   [RFC 7523]          |             |
    |                      | --------------------->|             |
    |                      |                       |             |
    |                      | (5) <access token>    |             |
    |                      | <- - - - - - - - - - -|             |
    |                      |                       |             |
    |  (6) <access token>  |                       |             |
    | <- - - - - - - - - - |                       |             |
    |                      |                       |             |
    |                      |           (7) access  |             |
    | ---------------------------------------------------------->|
    |                      |                       |             |
]]></artwork>
        </figure>
        <t>The flow contains the following steps:</t>
        <ol spacing="normal" type="1"><li>
            <t>The client in trust domain A requests a token for the protected resource in trust domain B from the authorization server in trust domain A. This specification does not define this step. A profile of Token Exchange <xref target="RFC8693"/> may be used.</t>
          </li>
          <li>
            <t>The authorization server for trust domain A determines the authorization server for trust domain B. This could have been passed by the client, is statically maintained or dynamically resolved.</t>
          </li>
          <li>
            <t>Once the authorization server in trust domain B is determined, the authorization server in domain A generates a JWT authorization grant suitable for presentations to the authorization server in trust domain B.</t>
          </li>
          <li>
            <t>The authorization server in trust domain A acts as a client and presents the JWT authorization grant to the authorization server for trust domain B. This presentation happens between the authorization servers. The authorization server in trust domain A may be required to perform client authentication while doing so. This reflects the <xref target="atr">Access Token Request</xref> in this specification.</t>
          </li>
          <li>
            <t>The authorization server of trust domain B returns an access token for the protected resource in trust domain B to the authorization server (acting as a client) in trust domain A.</t>
          </li>
          <li>
            <t>The authorization server of trust domain A returns the access token to the client in trust domain A.</t>
          </li>
          <li>
            <t>The client in trust domain A uses the received access token to access the protected resource in trust domain B.</t>
          </li>
        </ol>
      </section>
      <section anchor="delegated-key-binding">
        <name>Delegated Key Binding</name>
        <t>In some environments, there is a need to bind the access token issued by the authorization server in trust domain B to a private key held by the client in trust domain A. This is so that the resource server in trust domain B can verify the proof of possession of the private key of the client in trust domain A when the client in trust domain A presents the token to the resource server in trust domain B. Any application in trust domain A may act as a client, including applications that are resource servers in trust domain A and need to access resource servers in trust domain B in order to complete a request.</t>
        <t>In the case where the resource server in trust domain A is acting as the client, the access token may be constrained using existing techniques as described in Security Considerations (See <xref target="sender-constraining">Sender Constraining Tokens</xref>).</t>
        <t>The case where the authorization server in trust domain A is acting as a client is more complicated since the authorization server in trust domain A (acting as client) does not have access to the key material of the client on whose behalf the access token is being requested.</t>
        <t>However, the trust relationship between the authorization server in trust domain A and the authorization server in trust domain B can be leveraged to sender constrain the access token issued by the authorization server in trust domain B. This can be achieved as follows.</t>
        <ul spacing="normal">
          <li>
            <t>The authorization server in trust domain A verifies proof of possession of the key presented by the client.</t>
          </li>
          <li>
            <t>The authorization server in trust domain A then conveys the key of the client in trust domain A in the token request sent to the authorization server in trust domain B. This can, for example, be accomplished by including a "requested_cnf" claim that contains the "cnf" claim of the client in trust domain A, in the assertion authorization grant sent to the authorization server in trust domain B.</t>
          </li>
          <li>
            <t>The authorization server in trust domain B then includes a "cnf" claim that matches the value of the "requested_cnf" claim included in the authorization grant in the returned access token.</t>
          </li>
          <li>
            <t>The client in trust domain A that presents the access token must use the key matching the "cnf" claim to generate a DPoP proof or set up a MTLS session when presenting the access token to a resource server in trust domain B.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="Acknowledgements">
      <name>Acknowledgements</name>
      <t>The editors would like to thank Deb Cooley, Lars Eggert, Patrick Harding, Russ Housley, Joe Jubinski, Watson Ladd, Justin Richer, Adam Rusbridge, and Dean H. Saxe for their valuable input and general support of this work.</t>
    </section>
    <section anchor="document-history">
      <name>Document History</name>
      <t>[[ To be removed from the final specification ]]</t>
      <t>-14</t>
      <ul spacing="normal">
        <li>
          <t>Remove some extraneous text from IANA Considerations</t>
        </li>
      </ul>
      <t>-13</t>
      <ul spacing="normal">
        <li>
          <t>Expand the abstract somewhat to (hopefully) make it more informative</t>
        </li>
      </ul>
      <t>-12</t>
      <ul spacing="normal">
        <li>
          <t>GENART review comments addressed</t>
        </li>
      </ul>
      <t>-11</t>
      <ul spacing="normal">
        <li>
          <t>ARTART review comments addressed</t>
        </li>
      </ul>
      <t>-10</t>
      <ul spacing="normal">
        <li>
          <t>Move Aaron Parecki from contributors to authors in acknowledgement of significant contributions</t>
        </li>
      </ul>
      <t>-09</t>
      <ul spacing="normal">
        <li>
          <t>AD comments (hopefully) addressed</t>
        </li>
      </ul>
      <t>-08</t>
      <ul spacing="normal">
        <li>
          <t>Change some references from informative to normative and remove the unused OAuth 2.1 one</t>
        </li>
      </ul>
      <t>-07</t>
      <ul spacing="normal">
        <li>
          <t>Add a (hopefully helpful) sentence to the end of the first paragraph of the Overview</t>
        </li>
        <li>
          <t>Reword bullet (C) of the Overview (because you cannot use public keys to sign)</t>
        </li>
        <li>
          <t>Explicitly reference RFC8693 Section 2.2.2 for token exchange error</t>
        </li>
        <li>
          <t>Try and better explain that the access token request content is more desricption of Sec 2.1 RFC7523 and delete the empty scope parameter</t>
        </li>
        <li>
          <t>Explicitly reference RFC7523 Section 3.1 for authorization grant error</t>
        </li>
        <li>
          <t>Remove a seemingly nonsensical sentence about preventing injection of invalid claims</t>
        </li>
        <li>
          <t>Try and explain why ASs might not want to advertise some supported requested token types</t>
        </li>
        <li>
          <t>Endeavor to qualify the SHOULDs on client auth and sender constrained tokens</t>
        </li>
        <li>
          <t>Qualify the only <bcp14>SHOULD NOT</bcp14> on RTs from assertion grants being inline with historical decisions in RFC7521</t>
        </li>
        <li>
          <t>Quality the Authorized use of Subject Token security recommendations a bit</t>
        </li>
        <li>
          <t>Change Intended Status to Standards Track from Informational</t>
        </li>
      </ul>
      <t>-06</t>
      <ul spacing="normal">
        <li>
          <t>Use IANA.media-types so the tooling can find the media types registry without an explicit target</t>
        </li>
        <li>
          <t>Mention that the RFC8693 token exchange is not strictly necessary, if trust domain A's platform provides other means to obtain a JWT authorization grant</t>
        </li>
        <li>
          <t>Better describe the trust relationship necessary (domain B has to trusts domain A to issue JWT authz grants and trust its signing key(s)) and mention that AS Metadata's <tt>jwks_uri</tt> can be used to obtain the verification keys for trust domain A</t>
        </li>
        <li>
          <t>add a note about agreeing on semantics etc. when transcribing claims</t>
        </li>
        <li>
          <t>Editorial fixes</t>
        </li>
      </ul>
      <t>-05</t>
      <ul spacing="normal">
        <li>
          <t>Editorial pass on Appendix for consistency</t>
        </li>
        <li>
          <t>Clarified introduction</t>
        </li>
        <li>
          <t>Added security considerations for unconstrained authorization grants.</t>
        </li>
        <li>
          <t>Updated some contributors' affiliation and contact information</t>
        </li>
        <li>
          <t>Added examples in claims transcription text</t>
        </li>
        <li>
          <t>Simplify some text in the JWT Authorization Grant section</t>
        </li>
        <li>
          <t>Fix some toolchain complaints and other nitpicks</t>
        </li>
        <li>
          <t>Added some Privacy Considerations</t>
        </li>
        <li>
          <t>Move Mr. Parecki from acknowledgements to contributors in acknowledgement of his contributions</t>
        </li>
        <li>
          <t>Added Authorization Server Metadata registry to publish supported Token Exchange requested token types</t>
        </li>
      </ul>
      <t>-04</t>
      <ul spacing="normal">
        <li>
          <t>Clarified diagrams and description of authorization server acting as a client.</t>
        </li>
        <li>
          <t>Remove references to sd-jwt.</t>
        </li>
        <li>
          <t>Added text to recommend use of explicit typing.</t>
        </li>
        <li>
          <t>Added security consideration on preventing lateral moves.</t>
        </li>
        <li>
          <t>Editorial updates to be consistent about the trust domain for a client, authorization server or resource server.</t>
        </li>
        <li>
          <t>Added sender constraining of tokens to security considerations</t>
        </li>
      </ul>
      <t>-03</t>
      <ul spacing="normal">
        <li>
          <t>Editorial updates</t>
        </li>
      </ul>
      <t>-02</t>
      <ul spacing="normal">
        <li>
          <t>remove recommendation to not use RFC8693's requested_token_type</t>
        </li>
        <li>
          <t>Corrected discrepancy between alphabetic numbering of the diagram and text in the resource acting as client example</t>
        </li>
      </ul>
      <t>-01</t>
      <ul spacing="normal">
        <li>
          <t>limit the authorization grant format to RFC7523 JWT</t>
        </li>
        <li>
          <t>minor example fixes</t>
        </li>
        <li>
          <t>editorial fixes</t>
        </li>
        <li>
          <t>added Aaron Parecki to acknowledgements</t>
        </li>
        <li>
          <t>renamed section headers to be more explicit</t>
        </li>
        <li>
          <t>use more specific term "JWT authorization grant"</t>
        </li>
        <li>
          <t>changed name to "OAuth Identity and Authorization Chaining Across Domains"</t>
        </li>
        <li>
          <t>move use cases to appendix and add continuous integration use case</t>
        </li>
      </ul>
      <t>-00</t>
      <ul spacing="normal">
        <li>
          <t>initial working group version (previously draft-schwenkschuster-oauth-identity-chaining)</t>
        </li>
      </ul>
    </section>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact initials="A." surname="Tulshibagwale" fullname="Atul Tulshibagwale">
        <organization>SGNL</organization>
        <address>
          <email>atuls@sgnl.ai</email>
        </address>
      </contact>
      <contact initials="G." surname="Fletcher" fullname="George Fletcher">
        <organization>Practical Identity LLC</organization>
        <address>
          <email>george@practicalidentity.com</email>
        </address>
      </contact>
      <contact initials="R." surname="Shekh-Yusef" fullname="Rifaat Shekh-Yusef">
        <organization>Ciena</organization>
        <address>
          <email>rifaat.s.ietf@gmail.com</email>
        </address>
      </contact>
      <contact initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
        <organization/>
        <address>
          <email>hannes.tschofenig@gmx.net</email>
        </address>
      </contact>
    </section>
  </back>
  <!-- ##markdown-source:
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
rl90oaMS2Z+C7eNgXafg9g0IA+tNpSXVEmx1oQaNuaxEdaoyqKy1IG8qymfF
p9TOseqmdS4DrjgPG3yKFTetyjNwjTnfHWt9nNXHnptWu0jdcTx3rB2n+thz
02r3qjuO7+yt9wE/rrhpa4zUirP3y+obaj1qyMZxXE/vunHs36/tvGomqlnh
mudf1BCuT/cbh7Ak882rqPMmbzlEDWVuO0QLl9WmIVq8+m1DVHDmW1fB3mgb
BdtyCL52fMW9uD0s3Cj+N20ksHy88nyLITY8/6tO5M5eMBaZ4NZ0Ww5xbSfC
ovVPbGTj8w1D1Dm+t15FnVG55RBtb+9uHKLBtbrdKjY/3wTOGsf3lkPUB8r+
fRtBp/Z6X/2mIVr46jeu4ho2sunV3QfWe99eFLX78+O1bKTS87iNq2EbR/6m
60MdT6SfiNbKwNnS66jdymvvAS2157nPFy1jeajtP2Tqpd2aQSd/a4PXbMUf
O7Aiek2eVaOHnGuoySdCaa8ztKAqPfW6ZFDQ3aHqomRTvYbdOZZZOFW/IKRV
U2XXP90+38XsZYMbzmzeSsNmp6qcJ3zJIXUicfr6yX+rQ3OAeC89Y46r6f6k
o7XxLL2Whdr1vfEG7a12VG067SQY1ScULSaI/br9jsmbo+6ZDIJ1d0Q3tlDc
5rbzRi/tdqxi3ZG08+pufUu7XnedI7hcwxS3uXXZJPBfi6f5iUku/4dYBo8T
uouc6tGpFNRNRyUCL1QvZp2COUxUGmlDr9PtfDahewt6MBHpxmahCkER43K3
/GVTzBP94KZohgCWk8MGSztU0xWTLGhXpB41dxbSGeTtLm33cKNNBmi29NKy
W3klu6oiuZKCrQoVuLB2o7cT+WAl63bjVy28kScKWqF0+6RuDquTG341Ebm7
iomK/5kOb9RpjS71wds2KZ9VRJMswRXV3clS24KPo4/NPe2AGdb0tNsz90f5
223rLnb3bButSK66JfCqSirY3zZyfFAXb/SLrPxatUuqagO5jy2KfJLIa+6M
qHAGdXGEqSMDoDy3vfV0Bq5X47NJJDYg7Ba8R4XFdFNj7u1RaQ54PWzOj8OF
0SQRV1zYzaq0NHfTttwpcTEs4FzDw/DEGvovb3mXM/nmASRXYinN0JvYYuI0
rzAeSbm1V9+CzqsF7jIgmQK4/Gvp8jzsN647hEbZSF8hpm9wtrbMjvPrhi11
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

-->

</rfc>
