<?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-15" category="std" consensus="true" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title>OAuth Identity and Authorization Chaining Across Domains</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-identity-chaining-15"/>
    <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="19"/>
    <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>
      <t><xref target="sec-use-cases"/> provides sample use cases that may make use of the cross-domain framework defined in this document.</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 in <xref target="sec-use-cases"/>.
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 Successful 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>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 <xref section="1.3" sectionFormat="of" target="RFC6749"/>.</t>
        <section anchor="token-exchange-request">
          <name>Token Exchange Request</name>
          <t>The parameters described in <xref section="2.1" sectionFormat="of" 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>
          <t>The following processing rules also apply:</t>
          <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 <xref section="2.2.2" sectionFormat="of" 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 <xref section="2.2" sectionFormat="of" 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 Point 3 in <xref section="3" sectionFormat="of" target="RFC7523"/> 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 a message invoked by a 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 an authorization server in trust domain B (https://as.b.example/auth).</t>
          <figure>
            <name>Example of 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>Example of 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 <xref section="2.1" sectionFormat="of" target="RFC7523"/>. The following required parameters are described additionally here:</t>
          <dl newline="true">
            <dt>grant_type</dt>
            <dd>
              <t>As defined in <xref section="2.1" sectionFormat="of" target="RFC7523"/> the value <tt>urn:ietf:params:oauth:grant-type:jwt-bearer</tt> indicates that 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 <xref target="RFC7523" section="3" sectionFormat="bare"/> and <xref target="RFC7523" section="3.1" sectionFormat="bare"/> 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  <xref section="3" sectionFormat="of" target="RFC7523"/> or the issuer identifier as defined in <xref section="2" sectionFormat="of" 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><xref section="3.1" sectionFormat="of" 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 <xref section="5.1" sectionFormat="of" target="RFC6749"/>.</t>
        </section>
        <section anchor="example-1">
          <name>Example</name>
          <t>The examples below show how a 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 need to 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 is
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"/>. See <xref target="sec-meta-reg"/>.</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="sec-meta-reg">
        <name>OAuth Authorization Server Metadata Registry</name>
        <t>This specification requests IANA to register 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 <xref section="4.1" sectionFormat="of" 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 381?>

<section anchor="sec-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 a resource server in trust domain B. A resource server in trust domain A may use the flow exchanges 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 exchange would look like this:</t>
        <figure>
          <name>Resource Server Acting as Client (Successful Exchange)</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 can be skipped if discovery is not needed and other means of discovery can 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 (Successful Exchange)</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>-15</t>
      <ul spacing="normal">
        <li>
          <t>Include suggestions from Mohamed Boucadair (see https://github.com/oauth-wg/oauth-identity-chaining/issues/195)</t>
        </li>
      </ul>
      <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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
KXstCupB5/8CwttNkwi7AAA=

-->

</rfc>
