<?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.30 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-oauth-identity-chaining-08" category="std" consensus="true" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title>OAuth Identity and Authorization Chaining Across Domains</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-identity-chaining-08"/>
    <author initials="A." surname="Schwenkschuster" fullname="Arndt Schwenkschuster">
      <organization>Defakto Security</organization>
      <address>
        <email>arndts.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="P." surname="Kasselmann" fullname="Pieter Kasselmann">
      <organization>Defakto Security</organization>
      <address>
        <email>pieter@defakto.security</email>
      </address>
    </author>
    <author initials="K." surname="Burgin" fullname="Kelley Burgin">
      <organization>MITRE</organization>
      <address>
        <email>kburgin@mitre.org</email>
      </address>
    </author>
    <author initials="M." surname="Jenkins" fullname="Mike Jenkins">
      <organization>NSA-CCSS</organization>
      <address>
        <email>mjjenki@cyber.nsa.gov</email>
      </address>
    </author>
    <author initials="B." surname="Campbell" fullname="Brian Campbell">
      <organization>Ping Identity</organization>
      <address>
        <email>bcampbell@pingidentity.com</email>
      </address>
    </author>
    <date year="2026" month="February" day="09"/>
    <area>sec</area>
    <workgroup>oauth</workgroup>
    <abstract>
      <?line 64?>

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

<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.
Conceptually, this is an exchange within the first domain that produces a JWT authorization grant intended for use in acquiring an access token from the second domain.</t>
        <figure>
          <name>Identity and Authorization Chaining Flow</name>
          <artwork><![CDATA[
+-------------+         +--------+         +-------------+ +---------+
|Authorization|         | Client |         |Authorization| |Protected|
|Server       |         | Trust  |         |Server       | |Resource |
|Trust        |         |Domain A|         |Trust        | |Trust    |
|Domain A     |         |        |         |Domain B     | |Domain B |
+-------------+         +--------+         +-------------+ +---------+
       |                    |                     |             |
       |                    |----+                |             |
       |      (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 referred to as federation). Such a trust relationship typically manifests as the exchange of key material, whereby the authorization server in domain B trusts the public key(s) of domain A, which are used to verify JWT authorization grants signed with the corresponding private key(s).</t>
          </li>
          <li>
            <t>(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 as defined in Section 2.2.2 of <xref target="RFC8693"/>.</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>The JWT authorization grant is used to request an access token as defined in Section 2.1 of <xref target="RFC7523"/>. The following parameters are required and described additionally here:</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>. The JWT authorization grant returned by the authorization server for domain A (see <xref target="token-exchange">Token Exchange</xref> response).</t>
            </dd>
          </dl>
          <t>The client in trust domain A <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>
          <t>Section 3.1 of <xref target="RFC7523"/> describes the error response used in request denial cases.</t>
        </section>
        <section anchor="access-token-response">
          <name>Access Token Response</name>
          <t>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 into the JWT authorization grant to reflect the downscoped permissions, removing higher-privileged claims like "write" or "admin." This ensures that the access token issued by domain B aligns with the developer's intended scope of access.</t>
          </li>
          <li>
            <t><strong>Including JWT authorization grant claims</strong>: The authorization server in trust domain B which is performing the assertion flow <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.</t>
          </li>
        </ul>
        <t>The representation of transcribed claims and their format is not defined in this specification.</t>
        <t>When transcribing claims, it's
important that both the place where the claims are given and where they
are interpreted agree on the semantics and that the access controls are
consistent.</t>
      </section>
    </section>
    <section anchor="authorization-server-metadata">
      <name>Authorization Server Metadata</name>
      <t>The following authorization server metadata parameter is defined by this specification and is registered in the "OAuth Authorization Server Metadata" registry established in "OAuth 2.0 Authorization Server Metadata" <xref target="RFC8414"/>.</t>
      <dl newline="true">
        <dt>identity_chaining_requested_token_types_supported</dt>
        <dd>
          <t><bcp14>OPTIONAL</bcp14>. JSON array containing a list of Token Types that can be requested as a <tt>requested_token_type</tt> in the Token Exchange request when performing Identity and Authorization Chaining Across Domains. In situations where it might be an information disclosure concern, authorization servers <bcp14>MAY</bcp14> choose not to advertise some supported requested token types even when this parameter is used, and lack of a value does not necessarily mean that the token type is unsupported.</t>
        </dd>
      </dl>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <section anchor="oauth-authorization-server-metadata-registry">
        <name>OAuth Authorization Server Metadata Registry</name>
        <t>This specification 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.
Client secrets remain widely deployed, and support for public clients may be necessary in some deployments.</t>
      </section>
      <section anchor="sender-constraining">
        <name>Sender Constraining Tokens</name>
        <t>Authorization Servers <bcp14>SHOULD</bcp14> follow the Best Current Practice for OAuth 2.0 Security <xref target="RFC9700"/> for sender constraining tokens,
acknowledging, however, that bearer tokens remain the predominantly deployed access token type.</t>
      </section>
      <section anchor="authorized-use-of-subject-token">
        <name>Authorized use of Subject Token</name>
        <t>The authorization server in trust domain A <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.
Such authorization policy might not be present in all deployments, and is of reduced utility for public clients, but it is a recommended security measure for deployments that can support it.</t>
      </section>
      <section anchor="refresh-tokens">
        <name>Refresh Tokens</name>
        <t>The authorization server in trust domain B <bcp14>SHOULD NOT</bcp14> issue refresh tokens to the client 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 is consitent with Section 4.1 of <xref target="RFC7521"/> which discourages but does not prohibit the issuance of refresh tokens in the context of assertion grants.</t>
        <t>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="RFC7521">
          <front>
            <title>Assertion Framework for OAuth 2.0 Client Authentication and Authorization Grants</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="Y. Goland" initials="Y." surname="Goland"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification provides a framework for the use of assertions with OAuth 2.0 in the form of a new client authentication mechanism and a new authorization grant type. Mechanisms are specified for transporting assertions during interactions with a token endpoint; general processing rules are also specified.</t>
              <t>The intent of this specification is to provide a common framework for OAuth 2.0 to interwork with other identity systems using assertions and to provide alternative client authentication mechanisms.</t>
              <t>Note that this specification only defines abstract message flows and processing rules. In order to be implementable, companion specifications are necessary to provide the corresponding concrete instantiations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7521"/>
          <seriesInfo name="DOI" value="10.17487/RFC7521"/>
        </reference>
        <reference anchor="RFC7523">
          <front>
            <title>JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification defines the use of a JSON Web Token (JWT) Bearer Token as a means for requesting an OAuth 2.0 access token as well as for client authentication.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7523"/>
          <seriesInfo name="DOI" value="10.17487/RFC7523"/>
        </reference>
        <reference anchor="RFC8707">
          <front>
            <title>Resource Indicators for OAuth 2.0</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>This document specifies an extension to the OAuth 2.0 Authorization Framework defining request parameters that enable a client to explicitly signal to an authorization server about the identity of the protected resource(s) to which it is requesting access.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8707"/>
          <seriesInfo name="DOI" value="10.17487/RFC8707"/>
        </reference>
        <reference anchor="RFC8414">
          <front>
            <title>OAuth 2.0 Authorization Server Metadata</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <date month="June" year="2018"/>
            <abstract>
              <t>This specification defines a metadata format that an OAuth 2.0 client can use to obtain the information needed to interact with an OAuth 2.0 authorization server, including its endpoint locations and authorization server capabilities.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8414"/>
          <seriesInfo name="DOI" value="10.17487/RFC8414"/>
        </reference>
        <reference anchor="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="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="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="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 386?>

<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>-08</t>
      <ul spacing="normal">
        <li>
          <t>Change some references from informative to normative and remove the unused OAuth 2.1 one</t>
        </li>
      </ul>
      <t>-07</t>
      <ul spacing="normal">
        <li>
          <t>Add a (hopefully helpful) sentence to the end of the first paragraph of the Overview</t>
        </li>
        <li>
          <t>Reword bullet (C) of the Overview (because you cannot use public keys to sign)</t>
        </li>
        <li>
          <t>Explicitly reference RFC8693 Section 2.2.2 for token exchange error</t>
        </li>
        <li>
          <t>Try and better explain that the access token request content is more desricption of Sec 2.1 RFC7523 and delete the empty scope parameter</t>
        </li>
        <li>
          <t>Explicitly reference RFC7523 Section 3.1 for authorization grant error</t>
        </li>
        <li>
          <t>Remove a seemingly nonsensical sentence about preventing injection of invalid claims</t>
        </li>
        <li>
          <t>Try and explain why ASs might not want to advertise some supported requested token types</t>
        </li>
        <li>
          <t>Endeavor to qualify the SHOULDs on client auth and sender constrained tokens</t>
        </li>
        <li>
          <t>Qualify the only <bcp14>SHOULD NOT</bcp14> on RTs from assertion grants being inline with historical decisions in RFC7521</t>
        </li>
        <li>
          <t>Quality the Authorized use of Subject Token security recommendations a bit</t>
        </li>
        <li>
          <t>Change Intended Status to Standards Track from Informational</t>
        </li>
      </ul>
      <t>-06</t>
      <ul spacing="normal">
        <li>
          <t>Use IANA.media-types so the tooling can find the media types registry without an explicit target</t>
        </li>
        <li>
          <t>Mention that the RFC8693 token exchange is not strictly necessary, if trust domain A's platform provides other means to obtain a JWT authorization grant</t>
        </li>
        <li>
          <t>Better describe the trust relationship necessary (domain B has to trusts domain A to issue JWT authz grants and trust its signing key(s)) and mention that AS Metadata's <tt>jwks_uri</tt> can be used to obtain the verification keys for trust domain A</t>
        </li>
        <li>
          <t>add a note about agreeing on semantics etc. when transcribing claims</t>
        </li>
        <li>
          <t>Editorial fixes</t>
        </li>
      </ul>
      <t>-05</t>
      <ul spacing="normal">
        <li>
          <t>Editorial pass on Appendix for consistency</t>
        </li>
        <li>
          <t>Clarified introduction</t>
        </li>
        <li>
          <t>Added security considerations for unconstrained authorization grants.</t>
        </li>
        <li>
          <t>Updated some contributors' affiliation and contact information</t>
        </li>
        <li>
          <t>Added examples in claims transcription text</t>
        </li>
        <li>
          <t>Simplify some text in the JWT Authorization Grant section</t>
        </li>
        <li>
          <t>Fix some toolchain complaints and other nitpicks</t>
        </li>
        <li>
          <t>Added some Privacy Considerations</t>
        </li>
        <li>
          <t>Move Mr. Parecki from acknowledgements to contributors in acknowledgement of his contributions</t>
        </li>
        <li>
          <t>Added Authorization Server Metadata registry to publish supported Token Exchange requested token types</t>
        </li>
      </ul>
      <t>-04</t>
      <ul spacing="normal">
        <li>
          <t>Clarified diagrams and description of authorization server acting as a client.</t>
        </li>
        <li>
          <t>Remove references to sd-jwt.</t>
        </li>
        <li>
          <t>Added text to recommend use of explicit typing.</t>
        </li>
        <li>
          <t>Added security consideration on preventing lateral moves.</t>
        </li>
        <li>
          <t>Editorial updates to be consistent about the trust domain for a client, authorization server or resource server.</t>
        </li>
        <li>
          <t>Added sender constraining of tokens to security considerations</t>
        </li>
      </ul>
      <t>-03</t>
      <ul spacing="normal">
        <li>
          <t>Editorial updates</t>
        </li>
      </ul>
      <t>-02</t>
      <ul spacing="normal">
        <li>
          <t>remove recommendation to not use RFC8693's requested_token_type</t>
        </li>
        <li>
          <t>Corrected discrepancy between alphabetic numbering of the diagram and text in the resource acting as client example</t>
        </li>
      </ul>
      <t>-01</t>
      <ul spacing="normal">
        <li>
          <t>limit the authorization grant format to RFC7523 JWT</t>
        </li>
        <li>
          <t>minor example fixes</t>
        </li>
        <li>
          <t>editorial fixes</t>
        </li>
        <li>
          <t>added Aaron Parecki to acknowledgements</t>
        </li>
        <li>
          <t>renamed section headers to be more explicit</t>
        </li>
        <li>
          <t>use more specific term "JWT authorization grant"</t>
        </li>
        <li>
          <t>changed name to "OAuth Identity and Authorization Chaining Across Domains"</t>
        </li>
        <li>
          <t>move use cases to appendix and add continuous integration use case</t>
        </li>
      </ul>
      <t>-00</t>
      <ul spacing="normal">
        <li>
          <t>initial working group version (previously draft-schwenkschuster-oauth-identity-chaining)</t>
        </li>
      </ul>
    </section>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact initials="A." surname="Tulshibagwale" fullname="Atul Tulshibagwale">
        <organization>SGNL</organization>
        <address>
          <email>atuls@sgnl.ai</email>
        </address>
      </contact>
      <contact initials="G." surname="Fletcher" fullname="George Fletcher">
        <organization>Practical Identity LLC</organization>
        <address>
          <email>george@practicalidentity.com</email>
        </address>
      </contact>
      <contact initials="R." surname="Shekh-Yusef" fullname="Rifaat Shekh-Yusef">
        <organization>Ciena</organization>
        <address>
          <email>rifaat.s.ietf@gmail.com</email>
        </address>
      </contact>
      <contact initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
        <organization/>
        <address>
          <email>hannes.tschofenig@gmx.net</email>
        </address>
      </contact>
      <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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
6gRVPkyXR2it2PZKqUZfcV+ctOI4bDWbU7dCrI5SezZ1Q+kwRdOk/FYH/XC6
xbG9aM7eltZtETfme2Z0SVr724WqfVvroLQ6l0c8Xi2tZhxtmzAowaPu6nPu
D9IqYIsdDFpCRxcYjFSCfdUv42PikFjN3KRNg23Cmdsm+Ew2LvsqqiX7rdb9
plocR0pxVFrUMPqZ464mf5gwte/VeSYKA8MhB/y94r9G7HW8mJXiXeAL6GRf
CcBtVXxOGAbSinvTLVtimcpi0Lq96Vo0EV6Qqj4Ws0sN/rgoT7dnIP2Aa7bS
PL/iCgA8+kOu3q2/j+SbSv/3b2qetrnzxd7DwklP/Hz7S18+e/dyDNTz7W99
+bxrOZF9vv21L58NSey542x978v2cN6i43790/Wd/Okp9k/XdmMNebQZAv4Y
x0ztO5uG+LNXEjTczVC5qeFGwVlzecsN3N5yA9e33MD9LTdwgctXYidpdj98
3SpWj/wm7nC5GTL7s7e44NMKgL9mCLYMvOtcthuinja3XMXGp5vB+SevckHK
qcGXv34j/p/tb3O5Gd7ZZiN+y4lNKr93jYs1lzxFj+5uOdQVBv54q1dAVKMY
LW9ucZre13hL4jyQOVURVbtra58ntx5zPuu21O3UDS98Jag1l/RtJdUBHFXF
Khuro5ry1prtGxFsbPbNV6/Wtojj1uoEvLmsmkxmFvcWGK+hxxAt7UZFvKad
NFto1IxAdVmSV8kMC15BxTUd5nX5IyKC8mu7rd1z91U1DBrZbC+3wZZA36+A
xd1mm2GK7Xk3dQ51MjhqUvlQVzjLOFHpa0/e6USxBWy73MV18/262zUr3TY7
d5duVsB0sLoP9hQGcFMMGVxjPcxqEr7JQNltdc8M2kSomJzQVbBIwKN5ulWf
8BZ3y9Sb8LtVdlhzoLi64428oBkfvGtNNqyvdfIdytUtrF7iDm0rqqtd10wv
IeMddl1ztc2EOD810smrpkXPFpjbeIdKR9/k8ZX0WX/Px81c19HsV6tNlqzx
spR5rjuisy/fZqwNRRSqEp76lj66hUWDR05H5HTNUeNNAjVZnP32w2eixGQL
xx3P3H+LmS6oFXg1HJ/bKwjq8kyt7zBWEKx8T60UKA+VI6vt19M21VVHjWr9
QDZRap5pR9I0zLjXAUNWe7hWLzPqdN5SGRlnWaI3mOiPig7ackn3+u+6yF/7
RO8863HPrh4VSC0bc8r7uoMFNweLGjFow1V/W3gu6/dd0e+24rf1l7o0RvTa
NR70xrSRRVspvE1h3te5lJlJcYCiAht1HYi/Xb/UQgcnsj8F26fBuj7K7ds4
BtapSkuqJdjqQg0ac50fsymLykYV8uaiLFd8Sh0xq+5a52bkihOxwbdYcdeq
lAPXqPPdstbXWX3suWu1q9Qdx3PL2nGqjz13rXazuuP4Tt96X/DTiru2xlit
OH0/r76h1qOGbBzH9fiuG8f+/cbOq2aimhWuef5ZDeH6dr9yCEszX72KOq/y
lkPUkOa2Q7RwXW0aosWrXzdEBWe+dhXslbbRsC2H4DvYV9yM28PCjeZ/1UYC
y8grz7cYYsPzv+pEwAQdi0xwu78th7ixE2HZ+ic2svH5hiHqHOBbr6LOrNxy
iLZXmTcO0eBi3W4Vm59vAmeNA3zLIeoDZv++jaB9vd5nv2mIFj77jau4gY1s
enX3R+vFby+K2v354UY2Umkf3cbXsI1Df+ON3I5D0s9Ia2XibOl81O7lta2E
Su2B7vNt09wmaFStnHZrCJ1ELuXibTStVvyyAyuk12RcNbrKuZya3CKUAztD
I6rSqbBLJgXdiKougjalbNjkYpmFU/ULglp1qEZhZRzV7VNfzGY2+OLM7q1A
bPatynnCVz1SRw+nXaLc3q15vIVbc4C4Lz2Ljovr/qS/tfE0vVaQ2ge+8Sbx
uqzstZa828PbSTaqTy5aTJAAdB8bk0NHXUkZBOuuwG5sTbnWv7x6D22Ds3Y7
drHuTNr5dh3ncKuF28hBnT+4XMMZcaYf214obVL6b8TjfGzSzf8hlsHThC5c
p+p0Kg51s1OJyAvV5lpnZA4TlVXa0EZ2O99N6F71HkxEurEPq8JRRLrcLYjZ
FAFFf7gpoyGA5eS4wWIP1fLE5A7aFalHjYe00Bnl7a6l95CjTUJotvSytFt5
J7uqRrmSka1KF7jUdqPXE1lhJQl341ctvJInClqhdFvQbo6ykzt+NS+5u4qJ
igWahmnUuIyuOMJ7Rym9VUSTLMEVrYTFm9rlcSSyuUUc8MOaFnF75jYtf7tt
3cbunm3jFcl1uAReVVsF+9tGlg/qIo9+2ZVfvXZFdW4g+7FBkE8Sec0tHBXO
oK7iMJVlAJQXtlWdTsj1qn42ScUGhN2C96jwmO4XzZ0+Kr32bobN+fG4MJok
4ppLvVmjluaW3pY7JS6GJZ1reBieWENr6y1vtSYfPYDkWiylGXoTW0zc7nra
MSm39u5b0HnVwV0GJFMAF4QtXZ6Hrdx1N9YoG+kL1fRd1tak2XF+3bClrt7T
2kv9vmaP2yWg03GYHhShtwXaINBpNDE36WCvYbWzeqBUu5DUtn/SaVK1jc7v
rFdjVHMMRwj67Bpf1sEnxWeiiS5V8HaXG3MC9n18np9rAsD65HI+g6enl68u
TAezhVOEYVrGV1WoOtlTqzkFA9NtU10f8set6qMvfOlZjGXpUufnU2o+qSrZ
VXAeYmz6KngRFjE17XyZg5UxB6VKXiXd4JewlLDyV3RvykvskAEqdwLnCaxy
EIfT4M1cYreJMdDAMXaLftEPLsKPwrl9CYQVkAgKHBC+AFmK13cxw2qZz29r
S3IKsjAEGIBZmE+TEpBiT2vbSUF4QyZZks3mZZcKhLHJCM3Ch5CaVom6xxJG
7QlQuvVw8CLBq7+Wnc5//fZfv+HVMWSaYNNLpzx1RE0dfKv99987nd7+o47t
d0y6KdglWEKF8Xv63KRjcZ1wZv7B3SupuyZloGRUhaXLKw+wgwNO8B1OMIgB
oYPdST5TvWFACZ3B3/aIlunOREXPWAesaImjnrZLnHp8do29H8SCOmwBPIAx
wZBwDGhvV94JdnVCBpwLsjiUvfhP1dTyivgtVz/vwYDPVH9iMuQVHALlpXCu
OIX/8UH6OVV0sSCSasEtXkDAYg9vbHrMgq7ubgjNuCPuxG1UD+A8gMTm/iiY
nKCq2iypHmq2M9J0BgpV5S6UNRuiMdwbEymOW8OW9J7e8Elj1abAIie87gO7
Q4EGF1FDQ3WMnLCoOjxwV6QPahpq88RXZnKakwMqDaPFZBkMLqTTu3Sh73nf
qmM8bh30jPCaO2389xymVUYJt7XDG2lcc517HFd0Ez0mDveTMwS1m3J6j8JQ
by4VvVS7HSrFLMmwORCnPk6IZAluMVCk5NL6TJ3LgZ6s5Mk2NAd2GlfqZqy6
Jh/MyNJS94nu7nVRhuWc0B7+hlWlscT7yoDz0AZObP5lmCIFP0QKxi4a1S7Z
bBwi6eZ0Tw9qXyNtuTp9xG2nbVs66rQCpzugqHV8RnAzdKIJr0JmKnVVUgIS
XTujsq+IAfuS8ba09+WYRh9upqvbirXBEQVLe8qUrM2YJo3a5oHtGl2CKuxy
XYzrJtNwx1o96SeNL6Rj09iYOoucCWELnGpX7u1xIy0XUIML03MfNvv+w+JK
vgN8eN/QT4A0FtJtlRggFrjqU4VNh8S0seWbomq6lAQXQ7qTvpNElFFfmeir
16QgHZKkRqNmlHzEtlm9/Qcd7zl6XHHMAXrr4uQjdyy3jc8ory0s9EV03AqW
iutJsri9hytN/kbUGc+l57q+jqhevVXXtRFzoWy0ZDhHDeN2EI5GSZqofGxs
eKMaTTiJymYh5i7WxFyO5l8NiZmXmD2HDamQndB81IJJHU5T219VLg3fPgcI
8WdAd9Q4jO1U9ElLJ5U7S8oZqEHSQgk/auicCOSH/P20oLY2IrpKFDurKmT6
fi0FHurA5L+DLIod6+o1NQEvwt/bReWyDMMp0Kk650RWy+rr7z6pcH7Ar/sd
D2WAEY3xJlfn1nMjVzdUZ4eOPadEoKMgoeYQ9z4s6GfeHh0lX3vLzFgz7crV
B/0NuIv04EhRt5k54aulHr5oUKoePk5bQ1s74JE2Z2xp1069D3blKk53uau9
8m0LSzLwa2kRz+Vep27l+Mtd/KXQAHblGCudrLUpgXBb2qN3bgLBM8+Lgj20
WL5QiFmIXYK0oyNMZ5MQ/gGKH7d/02ufCI0jzH0dcjRwqDpzNKl3cPkHuHzq
TNto36lrp2A3Wv0CSoevQJlyWnIxi7yjzBvLNIkbI/WEBYyoKZTchj59Ehgz
0P9i02BhIsJYXQwHCELKpUZGeBvhSs9MgwQMPwU7DcJwBz5h8osDnAZHVbfT
bH/lEA5GR247CZZ0WzuLAWqTGMdNHdn0R3gA+3gAurs2Gkk42bjIwWBFLyqV
eDsNfOIiHJU9GU0WIruC/2DjjaJH1zz3dOuQnu7JuNf5v7WoL+GBuAAA

-->

</rfc>
