<?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-11" 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-11"/>
    <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="May" day="01"/>
    <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 <xref target="jwt-authorization-grant"/> of this document.</t>
      <section anchor="overview">
        <name>Overview</name>
        <t>The identity and authorization chaining flow outlined below describes how a combination of OAuth 2.0 Token Exchange <xref target="RFC8693"/> and JWT Profile for OAuth 2.0 Client Authentication and Authorization Grants <xref target="RFC7523"/> are used to address the use cases identified.
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. Such a trust relationship typically manifests as the exchange of key material, whereby the authorization server in domain B trusts the public key(s) of domain A, which are used to verify JWT authorization grants signed with the corresponding private key(s).</t>
          </li>
          <li>
            <t>The client in trust domain A presents the authorization grant to the authorization server of trust domain B. See <xref target="atr">Access Token Request</xref>.</t>
          </li>
          <li>
            <t>Authorization server of trust domain B validates the JWT authorization grant and returns an access token.
 Validating the JWT authorization grant requires trusting the public key(s) of domain A and its authority to issue authorization grants. This might take the form of configuration and policy in domain B that associates a set of public keys with domain A. Or might rely on the keys published at domain A's <tt>jwks_uri</tt> as listed in its Authorization Server Metadata <xref target="RFC8414"/>.</t>
          </li>
          <li>
            <t>The client in trust domain A uses the access token received from the authorization server in trust domain B to access the protected resource in trust domain B.</t>
          </li>
        </ol>
      </section>
      <section anchor="authorization-server-discovery">
        <name>Authorization Server Discovery</name>
        <t>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. 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 of <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 a trust relationship 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"/>, additional privacy considerations apply to this specification.</t>
      <t>This specification enables the exchange of tokens and claims between disparate trust domains.
If excessive or unnecessary user data is included in these tokens, it may lead to unintended privacy consequences.
As noted in <xref target="RFC8693"/> and <xref target="RFC7523"/>, deployments should determine the minimum amount of information necessary to complete the exchange and ensure that only that information is included in the token.</t>
      <t>Inconsistent user privacy practices can result from varying interpretations and implementations of the protocol across authorization servers in different trust domains.
This inconsistency can lead to a lack of transparency and user control over what data is shared and with whom.
To mitigate this, trust relationships between domains must be carefully established and maintained with user privacy in mind.
This includes verifying that privacy policies are aligned across trust domains and clearly define how user data is collected, used, and protected.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-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 appendix outlines some use cases where the identity and authorization chaining described in this document can be applied. The use cases described are not exhaustive, but are representative of the type of use cases enabled by this specification. Other use cases may also be supported by this specification.</t>
      <section anchor="preserve-user-context-across-multi-cloud-multi-hybrid-environments">
        <name>Preserve User Context across Multi-cloud, Multi-Hybrid environments</name>
        <t>A user attempts to access a service that is implemented as a number of on-premise and cloud-based workloads. Both the on-premise and cloud-based services are segmented by multiple trust boundaries that span one or more on-premise or cloud service environments. Each workload can apply an authorization policy that takes the context of the original user, as well as intermediary services into account, irrespective of where the workloads are running and even when a workload in one trust domain calls another service in another trust domain.</t>
      </section>
      <section anchor="continuous-integration-accessing-external-resources">
        <name>Continuous Integration Accessing External Resources</name>
        <t>A continuous integration system needs to access external resources, for example to upload an artifact or to run tests. These resources are protected by different authorization servers. The identity information of the build, for example metadata such as commit hashes or repository, should be preserved and carried across the domain boundary. This not just prevents maintaining credentials it also allows fine grained access control at the resource.</t>
      </section>
      <section anchor="api-security-use-case">
        <name>API Security Use Case</name>
        <t>A home devices company provides a "Camera API" to enable access to home cameras. Partner companies use this Camera API to integrate the camera feeds into their security dashboards. Using OAuth between the partner and the Camera API, a partner can request the feed from a home camera to be displayed in their dashboard. The user has an account with the camera provider. The user may be logged in to view the partner provided dashboard, or they may authorize emergency access to the camera. The home devices company must be able to independently verify that the request originated and was authorized by a user who is authorized to view the feed of the requested home camera.</t>
      </section>
      <section anchor="extend-single-sign-on-to-api-access">
        <name>Extend Single Sign-On to API Access</name>
        <t>A user that authenticated to an enterprise Identity Provider (IdP) does not have to sign-in to multiple SaaS applications if the SaaS applications are configured to trust the enterprise IdP. It is possible to extend this SSO relationship to API access by allowing the Client to contact the enterprise IdP and exchange the identity assertion (ID Token or SAML Token) that it previously received from the enterprise IdP for an authorization grant. The authorization grant can be used to obtain an access token from the SaaS application's authorization server, provided that a trust relationship has been established between the enterprise IdP which issues the authorization grant and the SaaS authorization server. As a result SaaS servers that trust the enterprise IdP do not require the user to complete an interactive delegated OAuth 2.0 flow to obtain an access token to access the SaaS provider's APIs.</t>
      </section>
      <section anchor="cross-domain-api-authorization">
        <name>Cross-domain API authorization</name>
        <t>An email client can be used with arbitrary email servers, without requiring pre-established relationships between each email client and each email server. An email client obtains an identity assertion (ID Token or SAML token) from an IdP. When the email client needs access to a separate API, such as a third-party calendaring application, the email client exchanges the identity assertion for an authorization grant and uses this authorization grant to obtain an access token for the third-party calendaring application from the authorization server trusted by the third-party calendaring application. If the authorization server trusts the issuer of the authorization grant, the email client obtains an access token without any additional user interaction.</t>
      </section>
    </section>
    <section anchor="Examples">
      <name>Examples</name>
      <t>This appendix contains two examples, demonstrating how this specification may be used in different environments with specific requirements. The first example shows the resource server acting as the client and the second example shows the authorization server acting as the client.</t>
      <section anchor="resource-server-acting-as-client">
        <name>Resource server acting as client</name>
        <t>As part of completing a request, a resource server in trust domain A may need to access a resource server in trust domain B. This requires the resource server in trust domain A to obtain an Access Token from an authorization server in trust domain B, which it may then present to 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 (its own authorization server). This happens via the token exchange protocol (See <xref target="token-exchange">Token Exchange</xref>).</t>
          </li>
          <li>
            <t>If successful, the authorization server in trust domain A returns a JWT authorization grant to the resource server (acting as client) in trust domain A.</t>
          </li>
          <li>
            <t>The resource server (acting as client) in trust domain A presents the JWT authorization grant to the authorization server in trust domain B.</t>
          </li>
          <li>
            <t>The authorization server in trust domain B uses claims from the JWT authorization grant to identify the user and establish additional authorization context. If access is granted, the authorization server in trust domain B returns an access token.</t>
          </li>
          <li>
            <t>The resource server (acting as a client) in trust domain A uses the access token to access the protected resource in trust domain B.</t>
          </li>
        </ol>
      </section>
      <section anchor="authorization-server-acting-as-client">
        <name>Authorization server acting as client</name>
        <t>Authorization servers may act as clients too. This can be necessary because of following reasons:</t>
        <ul spacing="normal">
          <li>
            <t>Clients in trust domain A may not have knowledge of authorization servers in trust domain B.</t>
          </li>
          <li>
            <t>Clients in trust domain A may not have network access to other authorization servers in trust domain B.</t>
          </li>
          <li>
            <t>Strict access control on resources in trust domain B is required. This access control is enforced by authorization servers in trust domain B.</t>
          </li>
          <li>
            <t>Authorization servers in trust domain B require client authentication, but are unable to manage clients outside of trust domain B.</t>
          </li>
        </ul>
        <t>Under these conditions, an authorization server in trust domain A may obtain an access token from an authorization server in trust domain B on-behalf-of any client in trust domain A. This enables clients in trust domain A to access a protected resource server in trust domain B. Resource servers in trust domain A may act as a client to the authorization server in trust domain A in order to obtain an access token to access a protected resource in trust domain B in order to complete a request.</t>
        <t>The authorization server in trust domain A may use the flows described in this specification by acting first as a client to itself to obtain an assertion grant and then act as a client to the authorization server in trust domain B to request an access token for a protected resource in trust domain B. The flow when authorization servers act as a client on-behalf of another client in its own trust domain is shown below:</t>
        <figure>
          <name>Authorization server acting as client</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, Russ Housley, Joe Jubinski, Watson Ladd, Justin Richer, Adam Rusbridge, and Dean H. Saxe for their valuable input and general support of this work.</t>
    </section>
    <section anchor="document-history">
      <name>Document History</name>
      <t>[[ To be removed from the final specification ]]</t>
      <t>-11</t>
      <ul spacing="normal">
        <li>
          <t>ARTART review comments addressed</t>
        </li>
      </ul>
      <t>-10</t>
      <ul spacing="normal">
        <li>
          <t>Move Aaron Parecki from contributors to authors in acknowledgement of significant contributions</t>
        </li>
      </ul>
      <t>-09</t>
      <ul spacing="normal">
        <li>
          <t>AD comments (hopefully) addressed</t>
        </li>
      </ul>
      <t>-08</t>
      <ul spacing="normal">
        <li>
          <t>Change some references from informative to normative and remove the unused OAuth 2.1 one</t>
        </li>
      </ul>
      <t>-07</t>
      <ul spacing="normal">
        <li>
          <t>Add a (hopefully helpful) sentence to the end of the first paragraph of the Overview</t>
        </li>
        <li>
          <t>Reword bullet (C) of the Overview (because you cannot use public keys to sign)</t>
        </li>
        <li>
          <t>Explicitly reference RFC8693 Section 2.2.2 for token exchange error</t>
        </li>
        <li>
          <t>Try and better explain that the access token request content is more desricption of Sec 2.1 RFC7523 and delete the empty scope parameter</t>
        </li>
        <li>
          <t>Explicitly reference RFC7523 Section 3.1 for authorization grant error</t>
        </li>
        <li>
          <t>Remove a seemingly nonsensical sentence about preventing injection of invalid claims</t>
        </li>
        <li>
          <t>Try and explain why ASs might not want to advertise some supported requested token types</t>
        </li>
        <li>
          <t>Endeavor to qualify the SHOULDs on client auth and sender constrained tokens</t>
        </li>
        <li>
          <t>Qualify the only <bcp14>SHOULD NOT</bcp14> on RTs from assertion grants being inline with historical decisions in RFC7521</t>
        </li>
        <li>
          <t>Quality the Authorized use of Subject Token security recommendations a bit</t>
        </li>
        <li>
          <t>Change Intended Status to Standards Track from Informational</t>
        </li>
      </ul>
      <t>-06</t>
      <ul spacing="normal">
        <li>
          <t>Use IANA.media-types so the tooling can find the media types registry without an explicit target</t>
        </li>
        <li>
          <t>Mention that the RFC8693 token exchange is not strictly necessary, if trust domain A's platform provides other means to obtain a JWT authorization grant</t>
        </li>
        <li>
          <t>Better describe the trust relationship necessary (domain B has to trusts domain A to issue JWT authz grants and trust its signing key(s)) and mention that AS Metadata's <tt>jwks_uri</tt> can be used to obtain the verification keys for trust domain A</t>
        </li>
        <li>
          <t>add a note about agreeing on semantics etc. when transcribing claims</t>
        </li>
        <li>
          <t>Editorial fixes</t>
        </li>
      </ul>
      <t>-05</t>
      <ul spacing="normal">
        <li>
          <t>Editorial pass on Appendix for consistency</t>
        </li>
        <li>
          <t>Clarified introduction</t>
        </li>
        <li>
          <t>Added security considerations for unconstrained authorization grants.</t>
        </li>
        <li>
          <t>Updated some contributors' affiliation and contact information</t>
        </li>
        <li>
          <t>Added examples in claims transcription text</t>
        </li>
        <li>
          <t>Simplify some text in the JWT Authorization Grant section</t>
        </li>
        <li>
          <t>Fix some toolchain complaints and other nitpicks</t>
        </li>
        <li>
          <t>Added some Privacy Considerations</t>
        </li>
        <li>
          <t>Move Mr. Parecki from acknowledgements to contributors in acknowledgement of his contributions</t>
        </li>
        <li>
          <t>Added Authorization Server Metadata registry to publish supported Token Exchange requested token types</t>
        </li>
      </ul>
      <t>-04</t>
      <ul spacing="normal">
        <li>
          <t>Clarified diagrams and description of authorization server acting as a client.</t>
        </li>
        <li>
          <t>Remove references to sd-jwt.</t>
        </li>
        <li>
          <t>Added text to recommend use of explicit typing.</t>
        </li>
        <li>
          <t>Added security consideration on preventing lateral moves.</t>
        </li>
        <li>
          <t>Editorial updates to be consistent about the trust domain for a client, authorization server or resource server.</t>
        </li>
        <li>
          <t>Added sender constraining of tokens to security considerations</t>
        </li>
      </ul>
      <t>-03</t>
      <ul spacing="normal">
        <li>
          <t>Editorial updates</t>
        </li>
      </ul>
      <t>-02</t>
      <ul spacing="normal">
        <li>
          <t>remove recommendation to not use RFC8693's requested_token_type</t>
        </li>
        <li>
          <t>Corrected discrepancy between alphabetic numbering of the diagram and text in the resource acting as client example</t>
        </li>
      </ul>
      <t>-01</t>
      <ul spacing="normal">
        <li>
          <t>limit the authorization grant format to RFC7523 JWT</t>
        </li>
        <li>
          <t>minor example fixes</t>
        </li>
        <li>
          <t>editorial fixes</t>
        </li>
        <li>
          <t>added Aaron Parecki to acknowledgements</t>
        </li>
        <li>
          <t>renamed section headers to be more explicit</t>
        </li>
        <li>
          <t>use more specific term "JWT authorization grant"</t>
        </li>
        <li>
          <t>changed name to "OAuth Identity and Authorization Chaining Across Domains"</t>
        </li>
        <li>
          <t>move use cases to appendix and add continuous integration use case</t>
        </li>
      </ul>
      <t>-00</t>
      <ul spacing="normal">
        <li>
          <t>initial working group version (previously draft-schwenkschuster-oauth-identity-chaining)</t>
        </li>
      </ul>
    </section>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact initials="A." surname="Tulshibagwale" fullname="Atul Tulshibagwale">
        <organization>SGNL</organization>
        <address>
          <email>atuls@sgnl.ai</email>
        </address>
      </contact>
      <contact initials="G." surname="Fletcher" fullname="George Fletcher">
        <organization>Practical Identity LLC</organization>
        <address>
          <email>george@practicalidentity.com</email>
        </address>
      </contact>
      <contact initials="R." surname="Shekh-Yusef" fullname="Rifaat Shekh-Yusef">
        <organization>Ciena</organization>
        <address>
          <email>rifaat.s.ietf@gmail.com</email>
        </address>
      </contact>
      <contact initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
        <organization/>
        <address>
          <email>hannes.tschofenig@gmx.net</email>
        </address>
      </contact>
    </section>
  </back>
  <!-- ##markdown-source:
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
5F7r/wIOgesUrLkAAA==

-->

</rfc>
