<?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.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-oauth-identity-chaining-06" category="info" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.30.1 -->
  <front>
    <title>OAuth Identity and Authorization Chaining Across Domains</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-identity-chaining-06"/>
    <author initials="A." surname="Schwenkschuster" fullname="Arndt Schwenkschuster">
      <organization>SPIRL</organization>
      <address>
        <email>arndts.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="P." surname="Kasselmann" fullname="Pieter Kasselmann">
      <organization>SPIRL</organization>
      <address>
        <email>pieter@spirl.com</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>
    <date year="2025" month="September" day="12"/>
    <area>sec</area>
    <workgroup>oauth</workgroup>
    <abstract>
      <?line 65?>

<t>This specification defines a mechanism to preserve identity and authorization information across trust domains that use the OAuth 2.0 Framework.</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 69?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Applications often require access to resources that are distributed across multiple trust domains where each trust domain has its own OAuth 2.0 authorization server. A request may transverse multiple resource servers in multiple trust domains before completing. All protected resources involved in such a request need to know on whose behalf the request was originally initiated (i.e. the user), what authorization was granted and optionally which other resource servers were called prior to making an authorization decision. This information needs to be preserved, even when a request crosses one or more trust domains. This document refers to this as "chaining" and defines a common pattern for combining OAuth 2.0 Token Exchange <xref target="RFC8693"/> and the JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants <xref target="RFC7523"/> to access resources across multiple trust domains while preserving identity and authorization information.</t>
      <section anchor="requirements-language">
        <name>Requirements Language</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

</section>
    </section>
    <section anchor="identity-and-authorization-chaining-across-domains">
      <name>Identity and Authorization Chaining Across Domains</name>
      <t>This specification describes a combination of OAuth 2.0 Token Exchange <xref target="RFC8693"/> and JWT Profile for OAuth 2.0 Client Authentication and Authorization Grants <xref target="RFC7523"/> to achieve identity and authorization chaining across domains.</t>
      <t>A client in trust domain A that needs to access a resource server in trust domain B requests a JWT authorization grant from the authorization server for trust domain A using a profile of OAuth 2.0 Token Exchange <xref target="RFC8693"/>. The client in trust domain A then presents the received grant as an assertion to the authorization server in trust domain B, using the JWT authorization grant feature of <xref target="RFC7523"/>, to obtain an access token for the protected resource in trust domain B.</t>
      <t>In some deployments, the client in trust domain A may obtain a JWT authorization grant using a proprietary API or interface other than the OAuth 2.0 Token Exchange protocol <xref target="RFC8693"/>. The details of such an interface are out of scope for this document but an alternative means of acquiring the JWT authorization grant is not precluded by this document. A JWT authorization grant, regardless of how it was obtained, <bcp14>MUST</bcp14> be used to request an access token from the authorization server in trust domain B as described in Section 2.4 in 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.</t>
        <figure>
          <name>Identity and Authorization Chaining Flow</name>
          <artwork><![CDATA[
+-------------+         +--------+         +-------------+ +---------+
|Authorization|         | Client |         |Authorization| |Protected|
|Server       |         | Trust  |         |Server       | |Resource |
|Trust        |         |Domain A|         |Trust        | |Trust    |
|Domain A     |         |        |         |Domain B     | |Domain B |
+-------------+         +--------+         +-------------+ +---------+
       |                    |                     |             |
       |                    |----+                |             |
       |      (A) discover  |    |                |             |
       |      Authorization |<---+                |             |
       |      Server        |                     |             |
       |      Trust Domain B|                     |             |
       |                    |                     |             |
       | (B) exchange token |                     |             |
       |   [RFC 8693]       |                     |             |
       |<-------------------|                     |             |
       |                    |                     |             |
       | (C) <authorization |                     |             |
       |       grant JWT>   |                     |             |
       | - - - - - - - - - >|                     |             |
       |                    |                     |             |
       |                    | (D) present         |             |
       |                    | authorization grant |             |
       |                    | [RFC 7523]          |             |
       |                    | ------------------->|             |
       |                    |                     |             |
       |                    | (E) <access token>  |             |
       |                    | <- - - - - - - - - -|             |
       |                    |                     |             |
       |                    |               (F) 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>
        <ul spacing="normal">
          <li>
            <t>(A) 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>(B) 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>(C) 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 (sometimes called federation, such a trust relationship typically manifests in the exchange of key material where domain B's authorization server trusts the public key(s) of domain A to sign JWT authorization grants).</t>
          </li>
          <li>
            <t>(D) 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>(E) 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 it's Authorization Server Metadata <xref target="RFC8414"/>.</t>
          </li>
          <li>
            <t>(F) 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>
        </ul>
      </section>
      <section anchor="authorization-server-discovery">
        <name>Authorization Server Discovery</name>
        <t>This specification does not define authorization server discovery. A client <bcp14>MAY</bcp14> use the <tt>authorization_servers</tt> property as defined in OAuth 2.0 Protected Resource Metadata <xref target="RFC9728"/>, maintain a static mapping or use other means to identify the authorization server.</t>
      </section>
      <section anchor="token-exchange">
        <name>Token Exchange</name>
        <t>The client in trust domain A performs token exchange as defined in <xref target="RFC8693"/> with the authorization server in trust domain A in order to obtain a JWT authorization grant that can be used with the authorization server of trust domain B as specified in section 1.3 of <xref target="RFC6749"/>.</t>
        <section anchor="token-exchange-request">
          <name>Token Exchange Request</name>
          <t>The parameters described in section 2.1 of <xref target="RFC8693"/> apply here with the following restrictions:</t>
          <dl newline="true">
            <dt>scope</dt>
            <dd>
              <t><bcp14>OPTIONAL</bcp14>. Additional scopes to indicate scopes included in the returned JWT authorization grant. See <xref target="claims-transcription">Claims transcription</xref>.</t>
            </dd>
            <dt>resource</dt>
            <dd>
              <t><bcp14>REQUIRED</bcp14> if audience is not set. URI of authorization server for trust domain B.</t>
            </dd>
            <dt>audience</dt>
            <dd>
              <t><bcp14>REQUIRED</bcp14> if resource is not set. Well known/logical name of authorization server for trust domain B.</t>
            </dd>
          </dl>
        </section>
        <section anchor="processing-rules">
          <name>Processing rules</name>
          <ul spacing="normal">
            <li>
              <t>If the request itself is not valid or if the given resource or audience are unknown, or are unacceptable based on policy, the authorization server in trust domain A <bcp14>MUST</bcp14> deny the request.</t>
            </li>
            <li>
              <t>The authorization server in trust domain A <bcp14>MAY</bcp14> add, remove or change claims. See <xref target="claims-transcription">Claims transcription</xref>.</t>
            </li>
          </ul>
        </section>
        <section anchor="token-exchange-response">
          <name>Token Exchange Response</name>
          <t>All of section 2.2 of <xref target="RFC8693"/> applies. In addition, the following applies to implementations that conform to this specification.</t>
          <ul spacing="normal">
            <li>
              <t>The "aud" claim in the returned JWT authorization grant <bcp14>MUST</bcp14> identify the requested authorization server in trust domain B. This corresponds with <eref target="https://datatracker.ietf.org/doc/html/rfc7523#section-3">RFC 7523 Section 3, Point 3</eref> and is there to reduce misuse and to prevent clients from, among other things, presenting access tokens as an authorization grant to an authorization server in trust domain B.</t>
            </li>
            <li>
              <t>The "aud" claim included in the returned JWT authorization grant <bcp14>MAY</bcp14> identify multiple authorization servers, provided that trust relationships exist with them (e.g. through federation). It is <bcp14>RECOMMENDED</bcp14> that the "aud" claim is restricted to a single authorization server in trust domain B to prevent an authorization server from presenting the client's authorization grant to an authorization server in a different trust domain. For example, this will prevent the authorization server in trust domain B from presenting the authorization grant it received from the client in trust domain A to the authorization server for trust domain C.</t>
            </li>
          </ul>
        </section>
        <section anchor="example">
          <name>Example</name>
          <t>The example below shows the message invoked by the client in trust domain A to perform token exchange with the authorization server in trust domain A (https://as.a.org/auth) to receive a JWT authorization grant for the authorization server in trust domain B (https://as.b.org/auth).</t>
          <figure>
            <name>Token exchange request</name>
            <artwork><![CDATA[
POST /auth/token HTTP/1.1
Host: as.a.org
Content-Type: application/x-www-form-urlencoded

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

{
  "access_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJo
  dHRwczovL2FzLmEub3JnL2F1dGgiLCJleHAiOjE2OTUyODQwOTIsImlhdCI6MTY5N
  TI4NzY5Miwic3ViIjoiam9obl9kb2VAYS5vcmciLCJhdWQiOiJodHRwczovL2FzLm
  Iub3JnL2F1dGgifQ.304Pv9e6PnzcQPzz14z-k2ZyZvDtP5WIRkYPScwdHW4",
  "token_type":"N_A",
  "issued_token_type":"urn:ietf:params:oauth:token-type:jwt",
  "expires_in":60
}
]]></artwork>
          </figure>
        </section>
      </section>
      <section anchor="jwt-authorization-grant">
        <name>JWT Authorization Grant</name>
        <t>The client in trust domain A uses the JWT authorization grant obtained from the authorization server in trust domain A as an assertion to request an access token from the authorization server in trust domain B, as described in <xref target="RFC7523"/>.</t>
        <section anchor="atr">
          <name>Access Token Request</name>
          <t>In the context of this specification the following descriptions apply:</t>
          <dl newline="true">
            <dt>grant_type</dt>
            <dd>
              <t><bcp14>REQUIRED</bcp14>. As defined in Section 2.1 of <xref target="RFC7523"/> the value <tt>urn:ietf:params:oauth:grant-type:jwt-bearer</tt> indicates the request is a JWT bearer assertion authorization grant.</t>
            </dd>
            <dt>assertion</dt>
            <dd>
              <t><bcp14>REQUIRED</bcp14>. Authorization grant returned by the authorization server for domain A (see <xref target="token-exchange">Token Exchange</xref> response).</t>
            </dd>
            <dt>scope</dt>
            <dd>
              <t><bcp14>OPTIONAL</bcp14>.</t>
            </dd>
          </dl>
          <t>The client in trust domain A <bcp14>MAY</bcp14> indicate the protected resource it is trying to access through the <tt>scope</tt> parameter or the <tt>resource</tt> parameter defined in <xref target="RFC8707"/>.</t>
        </section>
        <section anchor="processing-rules-1">
          <name>Processing rules</name>
          <t>The authorization server in trust domain B <bcp14>MUST</bcp14> validate the JWT authorization grant as specified in Sections 3 and 3.1 of <xref target="RFC7523"/>. The following processing rules also apply:</t>
          <ul spacing="normal">
            <li>
              <t>The "aud" claim <bcp14>MUST</bcp14> identify the authorization server in trust domain B as a valid intended audience of the assertion using either the token endpoint as described Section 3 <xref target="RFC7523"/> or the issuer identifier as defined in Section 2 of <xref target="RFC8414"/>.</t>
            </li>
            <li>
              <t>The authorization server in trust domain B <bcp14>SHOULD</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 federation with trust domain A is not established).</t>
            </li>
          </ul>
        </section>
        <section anchor="access-token-response">
          <name>Access Token Response</name>
          <t>The authorization server in trust domain B responds with an access token as described in section 5.1 of <xref target="RFC6749"/>.</t>
        </section>
        <section anchor="example-1">
          <name>Example</name>
          <t>The examples below show how the client in trust domain A presents an authorization grant to the authorization server in trust domain B (https://as.b.org/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.org
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 <bcp14>MAY</bcp14> 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.org" but in trust domain B they are identified as "doe.john@b.org". The mapping from one identifier to the other <bcp14>MAY</bcp14> 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 <bcp14>MAY</bcp14> add, change or remove claims as described above.</t>
          </li>
          <li>
            <t><strong>Data Minimization</strong>: Authorization servers <bcp14>MAY</bcp14> 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 <bcp14>MAY</bcp14> use the scope parameter to control transcribed claims (e.g. downscoping). Authorization Servers <bcp14>SHOULD</bcp14> verify that the requested scopes are not higher privileged than the scopes of the presented subject_token.
For example, a cloud-based development platform that allows developers to access APIs across multiple trust domains where a developer in domain A requests access to an API in domain B but only needs limited permissions, such as "read-only" access.
The authorization server in domain A transcribes the claims in 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 <bcp14>MAY</bcp14> leverage claims from the JWT authorization grant presented by the client in trust domain A and include them in the returned access token. The populated claims <bcp14>SHOULD</bcp14> be namespaced or validated to prevent the injection of invalid claims.</t>
          </li>
        </ul>
        <t>The representation of transcribed claims and their format is not defined in this specification.</t>
        <t>When transcribing claims, it's
important that both the place where the claims are given and where they
are interpreted agree on the semantics and that the access controls are
consistent.</t>
      </section>
    </section>
    <section anchor="authorization-server-metadata">
      <name>Authorization Server Metadata</name>
      <t>The following authorization server metadata parameter is defined by this specification and is registered in the "OAuth Authorization Server Metadata" registry established in "OAuth 2.0 Authorization Server Metadata" <xref target="RFC8414"/>.</t>
      <dl newline="true">
        <dt>identity_chaining_requested_token_types_supported</dt>
        <dd>
          <t><bcp14>OPTIONAL</bcp14>. JSON array containing a list of Token Types that can be requested as a <tt>requested_token_type</tt> in the Token Exchange request when performing Identity and Authorization Chaining Across Domains. Authorization servers <bcp14>MAY</bcp14> choose not to advertise some supported requested token types even when this parameter is used, and lack of a value does not necessarily mean that the token type is unsupported.</t>
        </dd>
      </dl>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <section anchor="oauth-authorization-server-metadata-registry">
        <name>OAuth Authorization Server Metadata Registry</name>
        <t>This specification defines 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"/></t>
            </li>
          </ul>
          <t>The registry records the supported token types that can be requested in an <xref target="RFC8693"/> Token Exchange.</t>
        </section>
      </section>
      <section anchor="media-types">
        <name>Media Types</name>
        <t>This specification does not define any new media types.</t>
        <t>It is <bcp14>RECOMMENDED</bcp14> that any profile or deployment-specific implementation adopt explicit typing as defined in JSON Web Token Best Current Practices <xref target="RFC8725"/> and define a new media type <xref target="RFC2046"/> in the "Media Types" registry <xref target="IANA.media-types"/> in the manner described in <xref target="RFC6838"/>.</t>
      </section>
    </section>
    <section anchor="Security">
      <name>Security Considerations</name>
      <section anchor="client-authentication">
        <name>Client Authentication</name>
        <t>Authorization Servers <bcp14>SHOULD</bcp14> follow 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 <bcp14>SHOULD</bcp14> follow the The OAuth 2.1 Authorization Framework <xref target="I-D.draft-ietf-oauth-v2-1"/> for sender constraining tokens.</t>
      </section>
      <section anchor="authorized-use-of-subject-token">
        <name>Authorized use of Subject Token</name>
        <t>The authorization server in trust domain A <bcp14>SHOULD</bcp14> 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.</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 within the scope of this specification. When the access token has expired, clients <bcp14>SHOULD</bcp14> re-submit the original JWT Authorization Grant to obtain a new Access Token. If the JWT Authorization Grant has expired, the client <bcp14>SHOULD</bcp14> 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 paragraph does not relate to the issuance of refresh tokens by the authorization server 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 <bcp14>SHOULD</bcp14> 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 <bcp14>MAY</bcp14> 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"/>, the following items are relevant to this specification:</t>
      <t>OAuth federation involves 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 within OAuth federation can result from varying interpretations and implementations of the protocol across different domains.
This inconsistency can lead to a lack of transparency and user control over what data is shared and with whom.
To mitigate this, federation 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-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC6749">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6749"/>
          <seriesInfo name="DOI" value="10.17487/RFC6749"/>
        </reference>
        <reference anchor="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="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="RFC8725">
          <front>
            <title>JSON Web Token Best Current Practices</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="D. Hardt" initials="D." surname="Hardt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>JSON Web Tokens, also known as JWTs, are URL-safe JSON-based security tokens that contain a set of claims that can be signed and/or encrypted. JWTs are being widely used and deployed as a simple security token format in numerous protocols and applications, both in the area of digital identity and in other application areas. This Best Current Practices document updates RFC 7519 to provide actionable guidance leading to secure implementation and deployment of JWTs.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="225"/>
          <seriesInfo name="RFC" value="8725"/>
          <seriesInfo name="DOI" value="10.17487/RFC8725"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.draft-ietf-oauth-v2-1">
          <front>
            <title>The OAuth 2.1 Authorization Framework</title>
            <author fullname="Dick Hardt" initials="D." surname="Hardt">
              <organization>Hellō</organization>
            </author>
            <author fullname="Aaron Parecki" initials="A." surname="Parecki">
              <organization>Okta</organization>
            </author>
            <author fullname="Torsten Lodderstedt" initials="T." surname="Lodderstedt">
              <organization>SPRIND</organization>
            </author>
            <date day="28" month="May" year="2025"/>
            <abstract>
              <t>   The OAuth 2.1 authorization framework enables an application to
   obtain limited access to a protected resource, either on behalf of a
   resource owner by orchestrating an approval interaction between the
   resource owner and an authorization service, or by allowing the
   application to obtain access on its own behalf.  This specification
   replaces and obsoletes the OAuth 2.0 Authorization Framework
   described in RFC 6749 and the Bearer Token Usage in RFC 6750.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-v2-1-13"/>
        </reference>
        <reference anchor="RFC2046">
          <front>
            <title>Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types</title>
            <author fullname="N. Freed" initials="N." surname="Freed"/>
            <author fullname="N. Borenstein" initials="N." surname="Borenstein"/>
            <date month="November" year="1996"/>
            <abstract>
              <t>This second document defines the general structure of the MIME media typing system and defines an initial set of media types. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2046"/>
          <seriesInfo name="DOI" value="10.17487/RFC2046"/>
        </reference>
        <reference anchor="RFC6838">
          <front>
            <title>Media Type Specifications and Registration Procedures</title>
            <author fullname="N. Freed" initials="N." surname="Freed"/>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <date month="January" year="2013"/>
            <abstract>
              <t>This document defines procedures for the specification and registration of media types for use in HTTP, MIME, and other Internet protocols. This memo documents an Internet Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="13"/>
          <seriesInfo name="RFC" value="6838"/>
          <seriesInfo name="DOI" value="10.17487/RFC6838"/>
        </reference>
        <reference anchor="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="IANA.media-types" target="https://www.iana.org/assignments/media-types">
          <front>
            <title>Media Types</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
      </references>
    </references>
    <?line 381?>

<section anchor="use-cases">
      <name>Use cases</name>
      <t>This sections 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 e-mail client can be used with arbitrary email servers, without requiring pre-established relationships between each email client and each email server. An e-mail client obtains an identity assertion (ID Token or SAML token) from an IdP. When the e-mail 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 e-mail client obtains an access token without any additional user interaction.</t>
      </section>
    </section>
    <section anchor="Examples">
      <name>Examples</name>
      <t>This section contains two examples, demonstrating how this specification may be used in different environments with specific requirements. The first example shows the resource server acting as the client and the second example shows the authorization server acting as the client.</t>
      <section anchor="resource-server-acting-as-client">
        <name>Resource server acting as client</name>
        <t>As part of completing a request, a resource server in trust domain A may need to access a resource server in trust domain B. This requires the resource server in trust domain A to obtain an Access Token from an authorization server in trust domain B, which it may then present to the resource server in trust domain B. A resource server in trust domain A may use the flows described in this specification by assuming the role of a client when attempting to access the resource server in trust domain B. Resource servers may act as clients if the following is true:</t>
        <ul spacing="normal">
          <li>
            <t>The resource server has the ability to determine the authorization server of the protected resource outside trust domain A.</t>
          </li>
          <li>
            <t>The authorization server in trust domain B is reachable by the resource server in trust domain A and is able to perform the appropriate client authentication (if required).</t>
          </li>
        </ul>
        <t>The flow would look like this:</t>
        <figure>
          <name>Resource server acting as client</name>
          <artwork><![CDATA[
+-------------+       +---------------+     +-------------+ +---------+
|Authorization|       |Resource Server|     |Authorization| |Protected|
|Server       |       |Trust Domain A |     |Server       | |Resource |
|Trust        |       |(acting as     |     |Trust        | |Trust    |
|Domain A     |       | a client)     |     |Domain B     | |Domain B |
+-------------+       +---------------+     +-------------+ +---------+
       |                     |                     |             |
       |                     |   (A) request protected resource  |
       |                     |      metadata                     |
       |                     | --------------------------------->|
       |                     | <- - - - - - - - - - - - - - - - -|
       |                     |                     |             |
       | (B) exchange token  |                     |             |
       |   [RFC 8693]        |                     |             |
       |<--------------------|                     |             |
       |                     |                     |             |
       | (C) <authorization  |                     |             |
       |        grant>       |                     |             |
       | - - - - - - - - -  >|                     |             |
       |                     |                     |             |
       |                     | (D) present         |             |
       |                     |  authorization      |             |
       |                     |  grant [RFC 7523]   |             |
       |                     |-------------------->|             |
       |                     |                     |             |
       |                     | (E) <access token>  |             |
       |                     |<- - - - - - - - - - |             |
       |                     |                     |             |
       |                     |               (F) 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>
        <t>(A) The resource server (acting as a client) in trust domain A requests protected resource metadata from the resource server in trust domain B as described in <xref target="RFC9728"/>. It uses the resource metadata to discover information about the authorization server for trust domain B. This step <bcp14>MAY</bcp14> be skipped if discovery is not needed and other means of discovery <bcp14>MAY</bcp14> be used. The protected resource in trust domain B returns its metadata along with the authorization server information in trust domain A.</t>
        <t>(B) 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 (it's own authorization server). This happens via the token exchange protocol (See <xref target="token-exchange">Token Exchange</xref>).</t>
        <t>(C) 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>
        <t>(D) The resource server (acting as client) in trust domain A presents the JWT authorization grant to the authorization server in trust domain B.</t>
        <t>(E) 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>
        <t>(F) 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>
      </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 it's own trust domain is shown below:</t>
        <figure>
          <name>Authorization server acting as client</name>
          <artwork><![CDATA[
+--------+          +--------------+       +--------------+ +---------+
|Client  |          |Authorization |       |Authorization | |Protected|
|Trust   |          |Server        |       |Server        | |Resource |
|Domain A|          |Trust Domain A|       |Trust Domain B| |Trust    |
|        |          |(acting as    |       |              | |Domain   |
|        |          |client)       |       |              | |         |
+--------+          +--------------+       +--------------+ +---------+
    |                      |                       |             |
    | (A) request          |                       |             |
    | token for            |                       |             |
    | protected resource   |                       |             |
    | in trust domain B.   |                       |             |
    | -------------------->|                       |             |
    |                      |                       |             |
    |                      |----+                  |             |
    |                      |    | (B) determine    |             |
    |                      |<---+ authorization    |             |
    |                      |      server trust     |             |
    |                      |      domain B         |             |
    |                      |                       |             |
    |                      |----+                  |             |
    |                      |    | (C) generates    |             |
    |                      |<---+ authorization    |             |
    |                      |      grant            |             |
    |                      |                       |             |
    |                      | (D) present           |             |
    |                      |   authorization grant |             |
    |                      |   [RFC 7523]          |             |
    |                      | --------------------->|             |
    |                      |                       |             |
    |                      | (E) <access token>    |             |
    |                      | <- - - - - - - - - - -|             |
    |                      |                       |             |
    |  (F) <access token>  |                       |             |
    | <- - - - - - - - - - |                       |             |
    |                      |                       |             |
    |                      |           (G) access  |             |
    | ---------------------------------------------------------->|
    |                      |                       |             |
]]></artwork>
        </figure>
        <t>The flow contains the following steps:</t>
        <t>(A) 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>
        <t>(B) 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>
        <t>(C) 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>
        <t>(D) 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>
        <t>(E) 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>
        <t>(F) The authorization server of trust domain A returns the access token to the client in trust domain A.</t>
        <t>(G) The client in trust domain A uses the received access token to access the protected resource in trust domain B.</t>
      </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 setup a MTLS session when presenting the access token to a resource server in in trust domain B.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="Acknowledgements">
      <name>Acknowledgements</name>
      <t>The editors would like to thank Patrick Harding, Joe Jubinski, Watson Ladd, Justin Richer, Adam Rusbridge, Dean H. Saxe, and others (please let us know, if you've been mistakenly omitted) for their valuable input, feedback 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>-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>gffletch@gmail.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>
      <contact initials="A." surname="Parecki" fullname="Aaron Parecki">
        <organization>Okta</organization>
        <address>
          <email>aaron@parecki.com</email>
        </address>
      </contact>
    </section>
  </back>
  <!-- ##markdown-source:
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
aEtJYZdixA0b+mw8kvZmkhjUWAqehfOFynpU3oGEVHNsiuvtxNQHmzm7qjph
yfJF+0kDYOTFmNUdczJ2ATxv7VFrHcVUGIC2O0OVNyuBZTak+mimqC9UwE7D
js8WaFMlTIIiterPNdsk0OdeBi08cA6BUZduQYmDSzYyL0Gz6Z0TvBCVmHNp
wVfqhFvtII2VK0CwIorSw8S9LtSpBLun8cWe9bhMwhuhmyf1+GSMsLoMw0s3
C11qR9HqDyFdj8E9e3gdKtkPtXZ3ORe6dhsbiSXqHARvmijn8vK80liK966O
GsGtbTHCe+P1otBhVDclCxrT7NTTxEx+y+7piXLtANJdDs5e8r/2lApRumnI
q0XRlQnJwdzgdW/yNLk9WNZ0KtczVs+goXtWte6+tneX8dC5KrvLbSrb09lC
cq7bFdUVXSnOxAut652DZX+hNqXoNe2hcFoE1Ewf58pZyLfOGA+kay7qpuYh
ayMxGOtjIhEbDqNQSTOk/eZJtDzN2r7i3DqlZaDY62kPHWKqu9fOAKDaw2uq
3B5wXq+dsBgmYMRhZJ7eMx0T8Fd0pVrvMeBgzz2jepOMbs4R7pxEAPapgX91
bY6LshWJlEwiLFEyJm8Tn/CHZsXJSSSEVSjXBgktrYP46bug9QlSlXUzkkjl
m9IE7vi2cWEDgTfTpLaaJXOghkTCDVcHtFj1hkgH4bvNkmsxoInGNI8njSdd
NW+qp9ZuzYm5/mp3xxotUaI6rj0uGtA0x4aeLlTDYLH+62ffcNYpHzD6Ije1
bOhEmnJEl3yhXM+24mRUigXRUpI5SrJrJDGVGQ+jm52u6jyTQpZGK7ZtJ6oB
QtwXpyU4DlvN5mA7OYmZ6ii1Z1M3lA5TNE3Kb3XQD6d7ttobqey1St0WoU2+
kEKXJLW/hqTaiLIOSqtzecTj1VJqxtG2nl0JHnWpl3PRiFYBW+xg0BI6OsF8
pBKsq34ZHxOHxGrmJnEWbBPO3TXhXbJx2VdRra1ute7X1eIoUoqj0qKG0c8c
dzX5w4QpUq7OM1EYGA6TVLVs9F21tSfjeDErxZvAF9DJvhKA26pKmDAMpBX3
7lq2xDKV86l1e9MAZiK8IFV9LGaXGqBxUdZe32kDzTU7aZ5fcw44Hv0RV2/W
X7DwdaWh9dc1T9tcYmEvluAUGn6+/S0Wn7yLBgbq+fbXWHzatZzIPt/+HotP
hiT23HG2vshiezhv0UK8/un61uT0FBtCa7uxhjzaDAF/jGOm9p1NQ/zZHusN
zeYrredvFZw1t1HcwnUUt3AfxS1cSHELN1J8IXaSZvfDl61i9chv41KK2yGz
P3stBT6tAPhLhmDLwLufYrsh6mlzy1VsfLoZnH/ybgqknBp8+es34v/Z/nqK
2+GdbTbitxzYpPJ791JYc8lT9OgyiiOdQ+6Pt9rTvhrFaHkVhdMUvMZbEueB
zKmdaLX7sPZ5Usm7+1m3pW6nrqzguwOtuaSvX6gO4KgqVtlYHdWUN9Zs34hg
Y7NvvqOxttsWt54m4M1l1WQys7jXWngNHYZoaTcq4jXtdtlCo2J01Q5HXicz
LHkEFdd04NbVaYgIyq/ttr7O3VfVMGhkq5q7Fthi+s9jca/ZZphip9NNTRid
DI6aVD7UFc4zTlT60pN3OhFsAdsuN8TcfBHndn0ft81/3aXO85gOVveBzq7k
pggyuMGKh9U8cZOBstvq4gy0iVAxOaU7I5GAR/N0qz7KLS7LqDfhd6vssOZA
cXUnG3lBMz541z5sWF/r5DuUq1tYvcQd2tbUVttjmV4yxjvsuuZqm8lwfmqk
k1dNi5YtMLfxjomOvungC+mz/h6E27nOoNmvVpssWeNlKfNcN5dmX77NWBuK
KFRVJvUtXXQLgwaPnI7IYbpnKuJxY6f1mizOfvvhM1FSdY11xzP332KmS+qq
XA3H57ZFe12eqfUdxgqCle+pmJ7yUDmy2n49bVNdddSo1g9kE6XmmXYkTcOM
q90ZstrDtXrZS6fzhiqROMsSvcFEf5TW35ZLuvcE10X+2id651mPezb1qIZn
2ZhT3tc9DLg5VNSIQRvuLtvCc1m/74p+txW/rb/0ojGi167xnDemjSzaWtBt
ase+zKXMTIoDFBXYqOsS/O2aaJcXg83+FGyfBOta0rZv4xdYpyotqZZgqws1
aMylaMymLCobVcibi7Jc8Sl1RKy6a52rXitOxAbfYsVdq1IOXKPOd8taX2f1
seeu1a5SdxzPLWvHqT723LXazeqO4zt9633BTyru2hpjteL0/bT6hlqPGrJx
HNfju24c+/dbO6+aiWpWuOb5JzWE69v9wiEszXzxKuq8ylsOUUOa2w7RwnW1
aYgWr37ZEBWc+dJVsFfaRsO2HIIvlV5xM24PCzea/0UbCSwjrzzfYogNz/+q
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
Ov8XUhQuWCGwAAA=

-->

</rfc>
