<?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-05" category="info" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.29.0 -->
  <front>
    <title>OAuth Identity and Authorization Chaining Across Domains</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-identity-chaining-05"/>
    <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="July" day="03"/>
    <area>sec</area>
    <workgroup>oauth</workgroup>
    <abstract>
      <?line 67?>

<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 71?>

<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 to obtain an access token for the protected resource in trust domain B using a profile of JWT Profile for OAuth 2.0 Client Authentication and Authorization Grants <xref target="RFC7523"/>.</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 posession 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 (e.g., through federation). 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 posession 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 (e.g., through federation).</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.</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 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 audience 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 example belows shows 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>Selective disclosure</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 doman 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>
      </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-MediaTypes"/> 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-MediaTypes" target="https://www.iana.org/assignments/media-types/">
          <front>
            <title>IANA Media Types Registry</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
    <?line 377?>

<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 microservices. 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. Every microservice can apply an authorization policy that takes the context of the original user, as well as intermediary microservices into account, irrespective of where the microservices are running and even when a microservice 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 enteprise 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 enteprise 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 authroization 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 authroization server in trust domain B.</t>
        <t>(E) The authroization 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 authroization 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 acccess 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) issue        |             |
    |                      |<---+ authorization    |             |
    |                      |      grant ("internal |             |
    |                      |      token exchange") |             |
    |                      |                       |             |
    |                      |                       |             |
    |                      | (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 issues a JWT authorization grant to itself. This reflects <xref target="token-exchange">Token Exchange</xref> of this specification and can be seen as an "internal token exchange".</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 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 Joe Jubinski, Justin Richer, 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>-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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
AA==

-->

</rfc>
