<?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.35 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-oauth-identity-chaining-10" category="std" consensus="true" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title>OAuth Identity and Authorization Chaining Across Domains</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-identity-chaining-10"/>
    <author initials="A." surname="Schwenkschuster" fullname="Arndt Schwenkschuster">
      <organization>Defakto Security</organization>
      <address>
        <email>arndts.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="P." surname="Kasselmann" fullname="Pieter Kasselmann">
      <organization>Defakto Security</organization>
      <address>
        <email>pieter@defakto.security</email>
      </address>
    </author>
    <author initials="K." surname="Burgin" fullname="Kelley Burgin">
      <organization>MITRE</organization>
      <address>
        <email>kburgin@mitre.org</email>
      </address>
    </author>
    <author initials="M." surname="Jenkins" fullname="Mike Jenkins">
      <organization>NSA-CCSS</organization>
      <address>
        <email>mjjenki@cyber.nsa.gov</email>
      </address>
    </author>
    <author initials="B." surname="Campbell" fullname="Brian Campbell">
      <organization>Ping Identity</organization>
      <address>
        <email>bcampbell@pingidentity.com</email>
      </address>
    </author>
    <author initials="A." surname="Parecki" fullname="Aaron Parecki">
      <organization>Okta</organization>
      <address>
        <email>aaron@parecki.com</email>
      </address>
    </author>
    <date year="2026" month="April" day="24"/>
    <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 |
+-------------+         +--------+         +-------------+ +---------+
       |                    |                     |             |
       |                    |----+                |             |
       |      (1) discover  |    |                |             |
       |      Authorization |<---+                |             |
       |      Server        |                     |             |
       |      Trust Domain B|                     |             |
       |                    |                     |             |
       | (2) exchange token |                     |             |
       |   [RFC 8693]       |                     |             |
       |<-------------------|                     |             |
       |                    |                     |             |
       | (3) <authorization |                     |             |
       |       grant JWT>   |                     |             |
       | - - - - - - - - - >|                     |             |
       |                    |                     |             |
       |                    | (4) present         |             |
       |                    | authorization grant |             |
       |                    | [RFC 7523]          |             |
       |                    | ------------------->|             |
       |                    |                     |             |
       |                    | (5) <access token>  |             |
       |                    | <- - - - - - - - - -|             |
       |                    |                     |             |
       |                    |               (6) access          |
       |                    | --------------------------------->|
       |                    |                     |             |
]]></artwork>
        </figure>
        <t>The flow illustrated in Figure 1 shows the steps the client in trust domain A needs to perform to access a protected resource in trust domain B. In this flow, the client is in possession of a token that an authorization server will accept as part of a token exchange flow as defined in <xref target="token-exchange">Token Exchange</xref>. How the client obtained this token is out of scope of this specification. The client has a way to discover the authorization server in domain B and a trust relationship exists between domain A and domain B. It includes the following:</t>
        <ol spacing="normal" type="1"><li>
            <t>The client in trust domain A discovers the location of the authorization server of trust domain B. See <xref target="authorization-server-discovery">Authorization Server Discovery</xref>.</t>
          </li>
          <li>
            <t>The client in trust domain A exchanges a token it has in its possession with the authorization server in trust domain A for a JWT authorization grant that can be used at the authorization server in trust domain B. See <xref target="token-exchange">Token Exchange</xref>.</t>
          </li>
          <li>
            <t>The authorization server of trust domain A processes the request and returns a JWT authorization grant that the client can use with the authorization server of trust domain B. This requires a trust relationship between the authorization servers in trust domain A and trust domain B (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>The client in trust domain A presents the authorization grant to the authorization server of trust domain B. See <xref target="atr">Access Token Request</xref>.</t>
          </li>
          <li>
            <t>Authorization server of trust domain B validates the JWT authorization grant and returns an access token.
 Validating the JWT authorization grant requires trusting the public key(s) of domain A and its authority to issue authorization grants. This might take the form of configuration and policy in domain B that associates a set of public keys with domain A. Or might rely on the keys published at domain A's <tt>jwks_uri</tt> as listed in it's Authorization Server Metadata <xref target="RFC8414"/>.</t>
          </li>
          <li>
            <t>The client in trust domain A uses the access token received from the authorization server in trust domain B to access the protected resource in trust domain B.</t>
          </li>
        </ol>
      </section>
      <section anchor="authorization-server-discovery">
        <name>Authorization Server Discovery</name>
        <t>This specification does not define authorization server discovery. A client may use the <tt>authorization_servers</tt> property as defined in OAuth 2.0 Protected Resource Metadata <xref target="RFC9728"/>, maintain a static mapping or use other means to identify the authorization server.</t>
      </section>
      <section anchor="token-exchange">
        <name>Token Exchange</name>
        <t>The client in trust domain A performs token exchange as defined in <xref target="RFC8693"/> with the authorization server in trust domain A in order to obtain a JWT authorization grant that can be used with the authorization server of trust domain B as specified in 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.example/auth) to receive a JWT authorization grant for the authorization server in trust domain B (https://as.b.example/auth).</t>
          <figure>
            <name>Token exchange request</name>
            <artwork><![CDATA[
POST /auth/token HTTP/1.1
Host: as.a.example
Content-Type: application/x-www-form-urlencoded

grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Atoken-exchange
&resource=https%3A%2F%2Fas.b.example%2Fauth
&subject_token=ey...
&subject_token_type=
 urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Aaccess_token
]]></artwork>
          </figure>
          <figure>
            <name>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>When the authorization grant has been validated, 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.example/auth) to receive an access token for a protected resource in trust domain B.</t>
          <figure>
            <name>Assertion request</name>
            <artwork><![CDATA[
POST /auth/token HTTP/1.1
Host: as.b.example
Content-Type: application/x-www-form-urlencoded

grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer
&assertion=ey...
]]></artwork>
          </figure>
          <figure>
            <name>Assertion response</name>
            <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-cache, no-store

{
  "access_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJo
  dHRwczovL2FzLmIub3JnL2F1dGgiLCJleHAiOjE2OTUyODQwOTIsImlhdCI6MTY5N
  TI4NzY5Miwic3ViIjoiam9obi5kb2UuMTIzIiwiYXVkIjoiaHR0cHM6Ly9iLm9yZy
  9hcGkifQ.CJBuv6sr6Snj9in5T8f7g1uB61Ql8btJiR0IXv5oeJg",
  "token_type":"Bearer",
  "expires_in":60
}
]]></artwork>
          </figure>
        </section>
      </section>
      <section anchor="claims-transcription">
        <name>Claims transcription</name>
        <t>Claims transcription is motivated by the need to propagate user and client identifiers, authorization context, and other relevant information across trust boundaries.
This enables the various entities involved to determine on whose behalf the request is being made, what authorization has been granted, and, potentially, which other resource servers were previously involved.</t>
        <t>Authorization servers <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.example" but in trust domain B they are identified as "doe.john@b.example". 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 requests registration of the following parameter in the "OAuth Authorization Server Metadata" registry established in <xref target="RFC8414"/>.</t>
        <section anchor="registry-contents">
          <name>Registry Contents</name>
          <ul spacing="normal">
            <li>
              <t>Metadata Name: <tt>identity_chaining_requested_token_types_supported</tt></t>
            </li>
            <li>
              <t>Metadata Description: JSON array containing a list of Token Type Identifiers supported as a <tt>requested_token_type</tt> in an Identity and Authorization Chaining Token Exchange (<xref target="RFC8693"/>) request.</t>
            </li>
            <li>
              <t>Change Controller: IETF</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="authorization-server-metadata"/> of [[this document]]</t>
            </li>
          </ul>
          <t>The parameter indicates 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>Profiles or deployment-specific implementations can 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 should follow Section 2.5 of the Best Current Practice for OAuth 2.0 Security <xref target="RFC9700"/> for client authentication.</t>
      </section>
      <section anchor="sender-constraining">
        <name>Sender Constraining Tokens</name>
        <t>Authorization Servers should follow the Best Current Practice for OAuth 2.0 Security <xref target="RFC9700"/> for sender constraining tokens,
acknowledging, however, that bearer tokens remain the predominantly deployed access token type.</t>
      </section>
      <section anchor="authorized-use-of-subject-token">
        <name>Authorized use of Subject Token</name>
        <t>The authorization server in trust domain A can perform client authentication and verify that the client in trust domain A is authorized to present the token used as a subject_token in the token exchange flow before issuing an authorization grant. By doing so, it minimizes the risk of an attacker making a lateral move by using a stolen token from trust domain A to obtain an authorization grant with which to authenticate to an authorization server in trust domain B and request an access token for a resource server in trust domain B.
Such authorization policy might not be present in all deployments, and is of reduced utility for public clients, but it is a recommended security measure for deployments that can support it.</t>
      </section>
      <section anchor="refresh-tokens">
        <name>Refresh Tokens</name>
        <t>The authorization server in trust domain B <bcp14>SHOULD NOT</bcp14> issue refresh tokens to the client in trust domain A within the scope of this specification. When the access token has expired, clients can re-submit the original JWT Authorization Grant (if not expired and reuse is allowed) to obtain a new Access Token. If the JWT Authorization Grant is unusable, the client can request a new grant from the authorization server in trust domain A before presenting it to the authorization server in trust domain B. The issuance of Refresh Tokens by the authorization server in trust domain B introduces a redundant credential requiring additional security measures, and creating unnecessary security risks. It also allows the client to obtain access tokens within trust domain B, even if the initial session in trust domain A has finished (e.g. the user has logged out or access has been revoked).
This is consistent with 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>The advice of this section is only applicable to refresh token issuance across domains in the context of a assertion grant. It does not relate to the issuance of refresh tokens by the authorization server in trust domain A to the client in trust domain A.</t>
      </section>
      <section anchor="replay-of-authorization-grant">
        <name>Replay of Authorization Grant</name>
        <t>The authorization grant obtained from the Token Exchange process is a bearer token. If an attacker obtains an authorization grant issued to a client in trust domain A, it could replay it to an authorization server in trust domain B to obtain an access token. Implementations must evaluate this risk and deploy appropriate mitigations based on their threat model and deployment environment. Mitigations include, but are not limited to:</t>
        <ul spacing="normal">
          <li>
            <t>Issuing short-lived authorization grants to minimize the window of exposure.</t>
          </li>
          <li>
            <t>Limiting authorization grants to a single use to prevent repeated replay.</t>
          </li>
          <li>
            <t>Requiring client authentication to ensure the client presenting the grant is known to the authorization server in trust domain B.</t>
          </li>
        </ul>
        <t>Authorization servers in trust domain B <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 email client can be used with arbitrary email servers, without requiring pre-established relationships between each email client and each email server. An email client obtains an identity assertion (ID Token or SAML token) from an IdP. When the email client needs access to a separate API, such as a third-party calendaring application, the email client exchanges the identity assertion for an authorization grant and uses this authorization grant to obtain an access token for the third-party calendaring application from the authorization server trusted by the third-party calendaring application. If the authorization server trusts the issuer of the authorization grant, the email client obtains an access token without any additional user interaction.</t>
      </section>
    </section>
    <section anchor="Examples">
      <name>Examples</name>
      <t>This 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 |
+-------------+       +---------------+     +-------------+ +---------+
       |                     |                     |             |
       |                     |   (1) request protected resource  |
       |                     |      metadata                     |
       |                     | --------------------------------->|
       |                     | <- - - - - - - - - - - - - - - - -|
       |                     |                     |             |
       | (2) exchange token  |                     |             |
       |   [RFC 8693]        |                     |             |
       |<--------------------|                     |             |
       |                     |                     |             |
       | (3) <authorization  |                     |             |
       |        grant>       |                     |             |
       | - - - - - - - - -  >|                     |             |
       |                     |                     |             |
       |                     | (4) present         |             |
       |                     |  authorization      |             |
       |                     |  grant [RFC 7523]   |             |
       |                     |-------------------->|             |
       |                     |                     |             |
       |                     | (5) <access token>  |             |
       |                     |<- - - - - - - - - - |             |
       |                     |                     |             |
       |                     |               (6) access          |
       |                     | --------------------------------->|
       |                     |                     |             |
]]></artwork>
        </figure>
        <t>The flow contains the following steps:</t>
        <t>The resource server of trust domain A needs to access protected resource in trust domain B. It requires an access token to do so. In order to obtain the required access token, the resource server in trust domain A will act as a client.</t>
        <ol spacing="normal" type="1"><li>
            <t>The resource server (acting as a client) in trust domain A requests protected resource metadata from the resource server in trust domain B as described in <xref target="RFC9728"/>. It uses the resource metadata to discover information about the authorization server for trust domain B. This step <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>
          </li>
          <li>
            <t>Once the resource server (acting as a client) in trust domain A identified the authorization server for trust domain B, it requests a JWT authorization grant for the authorization server in trust domain B from the authorization server in trust domain A (it's own authorization server). This happens via the token exchange protocol (See <xref target="token-exchange">Token Exchange</xref>).</t>
          </li>
          <li>
            <t>If successful, the authorization server in trust domain A returns a JWT authorization grant to the resource server (acting as client) in trust domain A.</t>
          </li>
          <li>
            <t>The resource server (acting as client) in trust domain A presents the JWT authorization grant to the authorization server in trust domain B.</t>
          </li>
          <li>
            <t>The authorization server in trust domain B uses claims from the JWT authorization grant to identify the user and establish additional authorization context. If access is granted, the authorization server in trust domain B returns an access token.</t>
          </li>
          <li>
            <t>The resource server (acting as a client) in trust domain A uses the access token to access the protected resource in trust domain B.</t>
          </li>
        </ol>
      </section>
      <section anchor="authorization-server-acting-as-client">
        <name>Authorization server acting as client</name>
        <t>Authorization servers may act as clients too. This can be necessary because of following reasons:</t>
        <ul spacing="normal">
          <li>
            <t>Clients in trust domain A may not have knowledge of authorization servers in trust domain B.</t>
          </li>
          <li>
            <t>Clients in trust domain A may not have network access to other authorization servers in trust domain B.</t>
          </li>
          <li>
            <t>Strict access control on resources in trust domain B is required. This access control is enforced by authorization servers in trust domain B.</t>
          </li>
          <li>
            <t>Authorization servers in trust domain B require client authentication, but are unable to manage clients outside of trust domain B.</t>
          </li>
        </ul>
        <t>Under these conditions, an authorization server in trust domain A may obtain an access token from an authorization server in trust domain B on-behalf-of any client in trust domain A. This enables clients in trust domain A to access a protected resource server in trust domain B. Resource servers in trust domain A may act as a client to the authorization server in trust domain A in order to obtain an access token to access a protected resource in trust domain B in order to complete a request.</t>
        <t>The authorization server in trust domain A may use the flows described in this specification by acting first as a client to itself to obtain an assertion grant and then act as a client to the authorization server in trust domain B to request an access token for a protected resource in trust domain B. The flow when authorization servers act as a client on-behalf of another client in 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)       |       |              | |         |
+--------+          +--------------+       +--------------+ +---------+
    |                      |                       |             |
    | (1) request          |                       |             |
    | token for            |                       |             |
    | protected resource   |                       |             |
    | in trust domain B.   |                       |             |
    | -------------------->|                       |             |
    |                      |                       |             |
    |                      |----+                  |             |
    |                      |    | (2) determine    |             |
    |                      |<---+ authorization    |             |
    |                      |      server trust     |             |
    |                      |      domain B         |             |
    |                      |                       |             |
    |                      |----+                  |             |
    |                      |    | (3) generates    |             |
    |                      |<---+ authorization    |             |
    |                      |      grant            |             |
    |                      |                       |             |
    |                      | (4) present           |             |
    |                      |   authorization grant |             |
    |                      |   [RFC 7523]          |             |
    |                      | --------------------->|             |
    |                      |                       |             |
    |                      | (5) <access token>    |             |
    |                      | <- - - - - - - - - - -|             |
    |                      |                       |             |
    |  (6) <access token>  |                       |             |
    | <- - - - - - - - - - |                       |             |
    |                      |                       |             |
    |                      |           (7) access  |             |
    | ---------------------------------------------------------->|
    |                      |                       |             |
]]></artwork>
        </figure>
        <t>The flow contains the following steps:</t>
        <ol spacing="normal" type="1"><li>
            <t>The client in trust domain A requests a token for the protected resource in trust domain B from the authorization server in trust domain A. This specification does not define this step. A profile of Token Exchange <xref target="RFC8693"/> may be used.</t>
          </li>
          <li>
            <t>The authorization server for trust domain A determines the authorization server for trust domain B. This could have been passed by the client, is statically maintained or dynamically resolved.</t>
          </li>
          <li>
            <t>Once the authorization server in trust domain B is determined, the authorization server in domain A generates a JWT authorization grant suitable for presentations to the authorization server in trust domain B.</t>
          </li>
          <li>
            <t>The authorization server in trust domain A acts as a client and presents the JWT authorization grant to the authorization server for trust domain B. This presentation happens between the authorization servers. The authorization server in trust domain A may be required to perform client authentication while doing so. This reflects the <xref target="atr">Access Token Request</xref> in this specification.</t>
          </li>
          <li>
            <t>The authorization server of trust domain B returns an access token for the protected resource in trust domain B to the authorization server (acting as a client) in trust domain A.</t>
          </li>
          <li>
            <t>The authorization server of trust domain A returns the access token to the client in trust domain A.</t>
          </li>
          <li>
            <t>The client in trust domain A uses the received access token to access the protected resource in trust domain B.</t>
          </li>
        </ol>
      </section>
      <section anchor="delegated-key-binding">
        <name>Delegated Key Binding</name>
        <t>In some environments, there is a need to bind the access token issued by the authorization server in trust domain B to a private key held by the client in trust domain A. This is so that the resource server in trust domain B can verify the proof of possession of the private key of the client in trust domain A when the client in trust domain A presents the token to the resource server in trust domain B. Any application in trust domain A may act as a client, including applications that are resource servers in trust domain A and need to access resource servers in trust domain B in order to complete a request.</t>
        <t>In the case where the resource server in trust domain A is acting as the client, the access token may be constrained using existing techniques as described in Security Considerations (See <xref target="sender-constraining">Sender Constraining Tokens</xref>).</t>
        <t>The case where the authorization server in trust domain A is acting as a client is more complicated since the authorization server in trust domain A (acting as client) does not have access to the key material of the client on whose behalf the access token is being requested.</t>
        <t>However, the trust relationship between the authorization server in trust domain A and the authorization server in trust domain B can be leveraged to sender constrain the access token issued by the authorization server in trust domain B. This can be achieved as follows.</t>
        <ul spacing="normal">
          <li>
            <t>The authorization server in trust domain A verifies proof of possession of the key presented by the client.</t>
          </li>
          <li>
            <t>The authorization server in trust domain A then conveys the key of the client in trust domain A in the token request sent to the authorization server in trust domain B. This can, for example, be accomplished by including a "requested_cnf" claim that contains the "cnf" claim of the client in trust domain A, in the assertion authorization grant sent to the authorization server in trust domain B.</t>
          </li>
          <li>
            <t>The authorization server in trust domain B then includes a "cnf" claim that matches the value of the "requested_cnf" claim included in the authorization grant in the returned access token.</t>
          </li>
          <li>
            <t>The client in trust domain A that presents the access token must use the key matching the "cnf" claim to generate a DPoP proof or 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 Deb Cooley, Patrick Harding, Joe Jubinski, Watson Ladd, Justin Richer, Adam Rusbridge, and Dean H. Saxe for their valuable input and general support of this work.</t>
    </section>
    <section anchor="document-history">
      <name>Document History</name>
      <t>[[ To be removed from the final specification ]]</t>
      <t>-10</t>
      <ul spacing="normal">
        <li>
          <t>Move Aaron Parecki from contributors to authors in acknowledgement of significant contributions</t>
        </li>
      </ul>
      <t>-09</t>
      <ul spacing="normal">
        <li>
          <t>AD comments (hopefully) addressed</t>
        </li>
      </ul>
      <t>-08</t>
      <ul spacing="normal">
        <li>
          <t>Change some references from informative to normative and remove the unused OAuth 2.1 one</t>
        </li>
      </ul>
      <t>-07</t>
      <ul spacing="normal">
        <li>
          <t>Add a (hopefully helpful) sentence to the end of the first paragraph of the Overview</t>
        </li>
        <li>
          <t>Reword bullet (C) of the Overview (because you cannot use public keys to sign)</t>
        </li>
        <li>
          <t>Explicitly reference RFC8693 Section 2.2.2 for token exchange error</t>
        </li>
        <li>
          <t>Try and better explain that the access token request content is more desricption of Sec 2.1 RFC7523 and delete the empty scope parameter</t>
        </li>
        <li>
          <t>Explicitly reference RFC7523 Section 3.1 for authorization grant error</t>
        </li>
        <li>
          <t>Remove a seemingly nonsensical sentence about preventing injection of invalid claims</t>
        </li>
        <li>
          <t>Try and explain why ASs might not want to advertise some supported requested token types</t>
        </li>
        <li>
          <t>Endeavor to qualify the SHOULDs on client auth and sender constrained tokens</t>
        </li>
        <li>
          <t>Qualify the only <bcp14>SHOULD NOT</bcp14> on RTs from assertion grants being inline with historical decisions in RFC7521</t>
        </li>
        <li>
          <t>Quality the Authorized use of Subject Token security recommendations a bit</t>
        </li>
        <li>
          <t>Change Intended Status to Standards Track from Informational</t>
        </li>
      </ul>
      <t>-06</t>
      <ul spacing="normal">
        <li>
          <t>Use IANA.media-types so the tooling can find the media types registry without an explicit target</t>
        </li>
        <li>
          <t>Mention that the RFC8693 token exchange is not strictly necessary, if trust domain A's platform provides other means to obtain a JWT authorization grant</t>
        </li>
        <li>
          <t>Better describe the trust relationship necessary (domain B has to trusts domain A to issue JWT authz grants and trust its signing key(s)) and mention that AS Metadata's <tt>jwks_uri</tt> can be used to obtain the verification keys for trust domain A</t>
        </li>
        <li>
          <t>add a note about agreeing on semantics etc. when transcribing claims</t>
        </li>
        <li>
          <t>Editorial fixes</t>
        </li>
      </ul>
      <t>-05</t>
      <ul spacing="normal">
        <li>
          <t>Editorial pass on Appendix for consistency</t>
        </li>
        <li>
          <t>Clarified introduction</t>
        </li>
        <li>
          <t>Added security considerations for unconstrained authorization grants.</t>
        </li>
        <li>
          <t>Updated some contributors' affiliation and contact information</t>
        </li>
        <li>
          <t>Added examples in claims transcription text</t>
        </li>
        <li>
          <t>Simplify some text in the JWT Authorization Grant section</t>
        </li>
        <li>
          <t>Fix some toolchain complaints and other nitpicks</t>
        </li>
        <li>
          <t>Added some Privacy Considerations</t>
        </li>
        <li>
          <t>Move Mr. Parecki from acknowledgements to contributors in acknowledgement of his contributions</t>
        </li>
        <li>
          <t>Added Authorization Server Metadata registry to publish supported Token Exchange requested token types</t>
        </li>
      </ul>
      <t>-04</t>
      <ul spacing="normal">
        <li>
          <t>Clarified diagrams and description of authorization server acting as a client.</t>
        </li>
        <li>
          <t>Remove references to sd-jwt.</t>
        </li>
        <li>
          <t>Added text to recommend use of explicit typing.</t>
        </li>
        <li>
          <t>Added security consideration on preventing lateral moves.</t>
        </li>
        <li>
          <t>Editorial updates to be consistent about the trust domain for a client, authorization server or resource server.</t>
        </li>
        <li>
          <t>Added sender constraining of tokens to security considerations</t>
        </li>
      </ul>
      <t>-03</t>
      <ul spacing="normal">
        <li>
          <t>Editorial updates</t>
        </li>
      </ul>
      <t>-02</t>
      <ul spacing="normal">
        <li>
          <t>remove recommendation to not use RFC8693's requested_token_type</t>
        </li>
        <li>
          <t>Corrected discrepancy between alphabetic numbering of the diagram and text in the resource acting as client example</t>
        </li>
      </ul>
      <t>-01</t>
      <ul spacing="normal">
        <li>
          <t>limit the authorization grant format to RFC7523 JWT</t>
        </li>
        <li>
          <t>minor example fixes</t>
        </li>
        <li>
          <t>editorial fixes</t>
        </li>
        <li>
          <t>added Aaron Parecki to acknowledgements</t>
        </li>
        <li>
          <t>renamed section headers to be more explicit</t>
        </li>
        <li>
          <t>use more specific term "JWT authorization grant"</t>
        </li>
        <li>
          <t>changed name to "OAuth Identity and Authorization Chaining Across Domains"</t>
        </li>
        <li>
          <t>move use cases to appendix and add continuous integration use case</t>
        </li>
      </ul>
      <t>-00</t>
      <ul spacing="normal">
        <li>
          <t>initial working group version (previously draft-schwenkschuster-oauth-identity-chaining)</t>
        </li>
      </ul>
    </section>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact initials="A." surname="Tulshibagwale" fullname="Atul Tulshibagwale">
        <organization>SGNL</organization>
        <address>
          <email>atuls@sgnl.ai</email>
        </address>
      </contact>
      <contact initials="G." surname="Fletcher" fullname="George Fletcher">
        <organization>Practical Identity LLC</organization>
        <address>
          <email>george@practicalidentity.com</email>
        </address>
      </contact>
      <contact initials="R." surname="Shekh-Yusef" fullname="Rifaat Shekh-Yusef">
        <organization>Ciena</organization>
        <address>
          <email>rifaat.s.ietf@gmail.com</email>
        </address>
      </contact>
      <contact initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
        <organization/>
        <address>
          <email>hannes.tschofenig@gmx.net</email>
        </address>
      </contact>
    </section>
  </back>
  <!-- ##markdown-source:
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
tand5KwiUJTFkvQQx7XFSh95kMhKf2+RIFAy9b0exf1txd3ycP+hwe1Vg7W1
FfeETRLtqF3vp614TxRWyeAuYezdzfheWWcQpjJnp8hRnea+ai21T/ALlVVu
0siMCa4DYgY1OWFTJMpS0Qkq8NmM7CePuRjryqMidXTE7QubKFc0sQZrtSp3
6xaG95NAJY6vWPrJSCEeOiXIm1D1CyoNBOd7OqeflaPaHQYRfIgJphke9O6I
ElexxBcRe+RYLErvrHj0eHoYKFQeaqQoA7ZVDmSzIil6UxR5YYiRWW+SmbXh
osKUExLrObt2FfwyqQ1TMSpjoHGIcSyN+PEWjpYngW9614qDGofgfWfvnpex
zlqQjrlA6aJrTQMTBWo2om9GXffMg5r065Z5Bq2V/uFfrfRbGdf5m2ERSoH3
tS9bbvr/qbZ9cqPadnIftO2389PLk08n8Nuv//z5in578WY/enH64NXyUfJq
+mj5L6zFfDSJfrxCLfv45ZP59QNZPLjIPjxKsvuX340ejg/mTx4c/JR+Nyxf
Jm/2T/55fT8XL8c1WvYTOqdWqrJ7WJ6WXOed7HTqniJnm+YlxWeN+qGrATHu
E45RgmJNH8lDTaxGGGDpkZ8sjojxsVTVS6qgLxXXnP7cUP45zOdZHBbo4+To
lsiQ1UulyRVJPsdnsO/ELWTETBbUJKYY8lpXtpgg50GBOA1jUVubaJinKlCk
9XdBkiCWJ5wRvrlIER08uFYqjeRFYtFNbU4BSiR9FkPtXuY6RCW2OaEcl90Y
eFfuv7q0I2RcnjtSvWt1BHwN1BkPHzDwyyvByODQUeC1e8SN7YSSwzq3g9u3
9ThD7aZSctlBltu3j0glWP2FImDsTfPSMTCzyj3yimstZMxM3Dz+eitt50M+
yeJcPDYelx2qFqnxI07EkkwXZ0gcAD7u4yCPDfveYV1QhzDJwMOCUWdbSkYx
zuCJq6OdYB1f1nB8mBVnajzns5gT6Oyg5CodpSyQ2jqA82IVAWgiLmlumGqR
z9OY0aAyoZfRAIoKHOpslhcluzuHOeoQjXhPERad0VLoWItCPE/VCIfwS58Q
7CmGk0+TLJmqIRGdmmnLBnAmsKEggj3jAatJYqUpYmoKqIqFW3RKK8KQgE7x
KfNFiFWndFZhMRbsinVdvp2zzDpFyWIEBRm0S1TsUNFMyjk7CJD1oP4+LsjQ
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
0jfOrUQ/MJEfVT60ZZHuVeV18b72yd151uM2YT2q61o2Z8TrZhncjyxqxKAN
1xJu4bOs33dFs9uK29ZfSdMYx2vX79Ab08YTbQ3yNsWEX+dMZibFoYkKbNRl
Jv52/YILHZbI/hRsnwTrej637x4ZWHcqLamWYKsLNWjM5YnMpiwqGzXIm4ty
W/EpNeOsOmqdW5wr7sMGr2LFUasSDVxzznfIWi9n9bHnqNVOUncczyFrx6k+
9hy12sHqjuO7e+u9wE8qjtoaM7Xi7v28+oZajxqycRzX17tuHPv3Gzuvmolq
Vrjm+Wc1hOvV/cohLM189Srq/MlbDlFDmtsO0cJptWmIFq9+3RAVnPnaVbA/
2sbBthyC74tfcTBuDws3jP9VGwksI68832KIDc//qhO5uxeMRSa4s+CWQ9zY
ibBs/RMb2fh8wxB1ru+tV1FnVW45RNtr1xuHaHCubreKzc83gbPG9b3lEPWh
sn/fRtCtvd5bv2mIFt76jau4gY1senX3ofXftxdF7f78cCMbqXSsbuNr2MaV
v+lCV8cX6WeitbJwtvQ7asfy2l5EpfY99/mGbKwNte2jTLG0WzjoZHBtcJut
eGQHVkSvybRq9JFzATU5RSjvdYYmVKUlYpcMCrrNVd1dbcrXsDPHMgun6heE
tGqJ7Xqo22e8mL1s8MOZzVtp2OxVlfOEb6mkLiROW0b5b/VoDhDvpWfNcTnd
n/S0Np6l13FS+743Xn2+1Y6qLcOdFKP6lKLFBLFft94xmXPU/JRBsO7a7sYO
mNtcU9/opt2OVaw7knZu3S3XbQMGdZ7gcg1T3OYebJPBfyOu5qcmu/wfYhk8
Seh6eCpGp1pQNyGVCLxQrbR1EuYwUYmkDa1qt3PahO7F9MFEpBt7vSoERYzL
3fqXTVFPdISbqhkCWE4eG6ztUA1XTLqgXZF61NxVSKeQb75BxYa3tsgBzZZe
XnYrt2RXlSRXcrBVpQJX1m50dyIfrOTdbvyqhTvyREErlG6b282BdfLDr6Yi
d1cxUfE/092NuqzRPUx4XSpltIpokiW4opVQeFP7PQ4/NvezA2ZY089uz1z5
5W+3rb/Y3bPtsiK57JbAq0qpYH/byPFBXcDRr7Lyi9WuqKwN5D62J/JJIq+5
8aPCGdS1H6aQDIDywvbV0zm4XpHPJpHYgLBb8B4VF9M9qbmxR6Ux4M2wOT8Q
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
qe7pBiQ93dZxr/N/ARGa5JZ6uQAA

-->

</rfc>
