<?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-16" 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-16"/>
    <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="Kasselman" fullname="Pieter Kasselman">
      <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="26"/>
    <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:
H4sIAAAAAAAAA9V963rbRrLgfz4FVt4zkRKSkXyN9WVyTMtOLI9tKZaSTCYn
n90EmiQsEOBBg6JpO/ss+yz7ZFuXvoIAL44m366SL5GARl+qq+te1b1er6Mq
kSdvRFbk8jiqyrnspLOSflPV7cPDh4e3O7GojiNVJR01H05TpdIir5YzaH76
9PL7jiilgNcy7izGx1Eh5tWk00mKOBdTaJKUYlT1UlmNevSqlyYyr9Jq2Ysn
Is3TfNw7ut/pwJMMWp8NoEl0qptEMLMInxRl+kFUMGx0oj+KBnFZKBU9Kabw
QHXEcFjK6+NOJnKYhMw7V4vj6LffO7eiRFTQ8e3D27d7h/hv1OvRsyhV0SjN
MplEaR7B1KCnKo1Fli2j4TJ6P81ul6M4SkdRXlTROL2GTgXN5bjTi3hxgzJP
quginixkfqXiCYBMlp0oKkqYxBM5EldVEV3IeF7CauC5hMlmx5HAz1QfgfJo
jI/6cTG1nZ7Dc1lG/xBKyWwq8s39zeiLRwk36CvTwPT4DwnLXEaP5+U4td29
PL18/dT1cTWkt4+maVXKPrSwX79Mr2T0HBaIcNYfv7oY9E5OLi7c99N377DJ
o3g5lGU/V6I/Lq5tH4/LVMDmielsCHMxvZzjRprNdl0NY93u0QwaGHwJYDQQ
JSDDOaBefJWa7s6uKuEBGZs8mnET+jgGtC3TIey0v4XVPIsu55mapEMxXohM
mu4ufnj1wusO2qlHapxnfZHar3+Q0FRG32eyiidu689LERMuOVR+8eLEdTam
zx7NTLPGNb5OR0IAdk3k1aT361zJken+JJW5t9KSGvZbEeqZyHOpoktA0GIk
83TsPp3Qq35lX8Hn7/u5rDqdvCjxQFzLY2j++vuT+w/uPjyObukjert/WDuZ
35cw2KIor7j5N/cf3gmbXxZXMo+evodzn48lt3pw7/YRthoArpdhN9GoKL2v
TzJYdEVjIqxiHnSVQPxQirxStneaw/OLs1fRL3Kop7D//JfLA9ijAo6/vIFh
vnlw+ACHeS1VMS9jGZ3mCX5ZlCrsXTe/e3R3HSAvZHkN5/+lrATQKcEfPXxw
eIgfPZaqik7mZYmz1GhWX4NHIOjL29+Ew8HKKxlXQPjsjO1gnTQfuY3v9IBY
iqGqcKBO53ICNFPNZJyODGQSqWI4U4BeIppK3NpUTWk+s1LCnl7jEU99ei6C
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
YWVonL4iYbWXxr1p6sq4LfSgOiZpYFsyn+ugRc4U+XVXwrlrzbpbOMP5ZhYT
0b39fTz1EqZNUGp017jDE+SeGrqxbbUCzXX0rXrejTtMUbaY/2BL2JhweuIQ
jras2mZChBwSxZnbWGHQTzhc2aAL67lsr6hnvW+GJSzgdT05jATjmPKvjWNd
y2guCo6y7OfSpo/Xx5loRBRDDmYIkt9akdgzd9YSWIE+oMl8xS+3U+42IRqw
LK7ittwS2XSEhpHvbZ2giQy8V81Omn2vKKCpcBBggE5ayoriiuPfEQeOOY21
+bKOr2rF0b9qeLrNhSifaoSBn+9+I8qn4NKKgX6++5Uon/YdDXPPd78T5ZM9
Gwd+PztfirI7nHcoR9/8dH2Ze3qK95wYJbLhnGzTBfxYK01jm01d/Nl6/S0X
F9SuMbhRcDbcbHIDV5vcwN0mN3C5yQ3cbvKZ2EmS3nefN4vVLb+JC05u5pj9
2StO8GkNwJ/TBWsKwV0nu3XRfDZ3nMXGp5vB+SfvOcGT04Avf/1Cwp/drzq5
Gdq5zULC2gubVIBo37vpxAQmHQTXnTilKpAD6Y6TY5MkFopSq3cm1B0dW95w
4lWUbzCoJEWkCkqhqVfANmZRDuz0PutuKfrpm1D4qk2nVOl67PXvPfnFSSCr
ndpEk4bVW75sFfvNN5o2Flzj6ucEu7mq61V2FP+ylKDcxdDcBL9dXU6jxlGK
vjZGqat0hjmgIADba0ZMRiDigbZ8+9XXC7+pZ9NicG+DLJG5uwAznu0yRYaV
cTdV8vQCPhri/2DPz3IOb/rcjfdKNOwA2i4XVN18a22x/sKbpmquO0RI7puL
6pvaH+j950IRKrpOhQuTcXKXDWPZ3+pKFn2/xSldr6qp007Ftre4iKXYtKGt
27kVHWhHhuCukA3T2zpeb90NNqsoQIRh2/ziej0zW2TH2o59211jlR2OZ41N
sKutXbMD1rZeTfInaXLzDRo3ehFGg9mttdJOzfpSFYWpKc5E0YW2DWUsdM5S
c6kbU9GhxWBnvHUmyar1loCGsM/+9t3nssJADM9az3R/h5EuqCB33VVfuCL+
TYGpzrSYaAjWvqe6AhS4yl7X7eezbWys8Sg12odcENU8Nwamqcg58Z8hayxf
q/cDdTo/Ud4ch2OisZiOH6VNbEsi/fu0m7yC28eFF3mPa1n1KIx/2R5Mb8o5
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
2WtRUA86/xfNK7wHB7sAAA==

-->

</rfc>
