<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.30 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-oauth-identity-chaining-07" category="std" consensus="true" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title>OAuth Identity and Authorization Chaining Across Domains</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-identity-chaining-07"/>
    <author initials="A." surname="Schwenkschuster" fullname="Arndt Schwenkschuster">
      <organization>Defakto Security</organization>
      <address>
        <email>arndts.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="P." surname="Kasselmann" fullname="Pieter Kasselmann">
      <organization>Defakto Security</organization>
      <address>
        <email>pieter@defakto.security</email>
      </address>
    </author>
    <author initials="K." surname="Burgin" fullname="Kelley Burgin">
      <organization>MITRE</organization>
      <address>
        <email>kburgin@mitre.org</email>
      </address>
    </author>
    <author initials="M." surname="Jenkins" fullname="Mike Jenkins">
      <organization>NSA-CCSS</organization>
      <address>
        <email>mjjenki@cyber.nsa.gov</email>
      </address>
    </author>
    <author initials="B." surname="Campbell" fullname="Brian Campbell">
      <organization>Ping Identity</organization>
      <address>
        <email>bcampbell@pingidentity.com</email>
      </address>
    </author>
    <date year="2026" month="February" day="06"/>
    <area>sec</area>
    <workgroup>oauth</workgroup>
    <abstract>
      <?line 66?>

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

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

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

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

{
  "access_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJo
  dHRwczovL2FzLmEub3JnL2F1dGgiLCJleHAiOjE2OTUyODQwOTIsImlhdCI6MTY5N
  TI4NzY5Miwic3ViIjoiam9obl9kb2VAYS5vcmciLCJhdWQiOiJodHRwczovL2FzLm
  Iub3JnL2F1dGgifQ.304Pv9e6PnzcQPzz14z-k2ZyZvDtP5WIRkYPScwdHW4",
  "token_type":"N_A",
  "issued_token_type":"urn:ietf:params:oauth:token-type:jwt",
  "expires_in":60
}
]]></artwork>
          </figure>
        </section>
      </section>
      <section anchor="jwt-authorization-grant">
        <name>JWT Authorization Grant</name>
        <t>The client in trust domain A uses the JWT authorization grant obtained from the authorization server in trust domain A as an assertion to request an access token from the authorization server in trust domain B, as described in <xref target="RFC7523"/>.</t>
        <section anchor="atr">
          <name>Access Token Request</name>
          <t>The JWT authorization grant is used to request an access token as defined in Section 2.1 of <xref target="RFC7523"/>. The following parameters are required and described additionally here:</t>
          <dl newline="true">
            <dt>grant_type</dt>
            <dd>
              <t><bcp14>REQUIRED</bcp14>. As defined in Section 2.1 of <xref target="RFC7523"/> the value <tt>urn:ietf:params:oauth:grant-type:jwt-bearer</tt> indicates the request is a JWT bearer assertion authorization grant.</t>
            </dd>
            <dt>assertion</dt>
            <dd>
              <t><bcp14>REQUIRED</bcp14>. The JWT authorization grant returned by the authorization server for domain A (see <xref target="token-exchange">Token Exchange</xref> response).</t>
            </dd>
          </dl>
          <t>The client in trust domain A <bcp14>MAY</bcp14> indicate the protected resource it is trying to access through the <tt>scope</tt> parameter or the <tt>resource</tt> parameter defined in <xref target="RFC8707"/>.</t>
        </section>
        <section anchor="processing-rules-1">
          <name>Processing rules</name>
          <t>The authorization server in trust domain B <bcp14>MUST</bcp14> validate the JWT authorization grant as specified in Sections 3 and 3.1 of <xref target="RFC7523"/>. The following processing rules also apply:</t>
          <ul spacing="normal">
            <li>
              <t>The "aud" claim <bcp14>MUST</bcp14> identify the authorization server in trust domain B as a valid intended audience of the assertion using either the token endpoint as described Section 3 <xref target="RFC7523"/> or the issuer identifier as defined in Section 2 of <xref target="RFC8414"/>.</t>
            </li>
            <li>
              <t>The authorization server in trust domain B <bcp14>SHOULD</bcp14> deny the request if it is not able to identify the subject.</t>
            </li>
            <li>
              <t>Due to policy the request <bcp14>MAY</bcp14> be denied (for instance if federation with trust domain A is not established).</t>
            </li>
          </ul>
          <t>Section 3.1 of <xref target="RFC7523"/> describes the error response used in request denial cases.</t>
        </section>
        <section anchor="access-token-response">
          <name>Access Token Response</name>
          <t>The authorization server in trust domain B responds with an access token as described in section 5.1 of <xref target="RFC6749"/>.</t>
        </section>
        <section anchor="example-1">
          <name>Example</name>
          <t>The examples below show how the client in trust domain A presents an authorization grant to the authorization server in trust domain B (https://as.b.org/auth) to receive an access token for a protected resource in trust domain B.</t>
          <figure>
            <name>Assertion request</name>
            <artwork><![CDATA[
POST /auth/token HTTP/1.1
Host: as.b.org
Content-Type: application/x-www-form-urlencoded

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

{
  "access_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJo
  dHRwczovL2FzLmIub3JnL2F1dGgiLCJleHAiOjE2OTUyODQwOTIsImlhdCI6MTY5N
  TI4NzY5Miwic3ViIjoiam9obi5kb2UuMTIzIiwiYXVkIjoiaHR0cHM6Ly9iLm9yZy
  9hcGkifQ.CJBuv6sr6Snj9in5T8f7g1uB61Ql8btJiR0IXv5oeJg",
  "token_type":"Bearer",
  "expires_in":60
}
]]></artwork>
          </figure>
        </section>
      </section>
      <section anchor="claims-transcription">
        <name>Claims transcription</name>
        <t>Claims transcription is motivated by the need to propagate user and client identifiers, authorization context, and other relevant information across trust boundaries.
This enables the various entities involved to determine on whose behalf the request is being made, what authorization has been granted, and, potentially, which other resource servers were previously involved.</t>
        <t>Authorization servers <bcp14>MAY</bcp14> transcribe claims when either producing JWT authorization grants in the token exchange flow or access tokens in the assertion flow. Transcription of claims may be required for the following reasons:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Transcribing the subject identifier</strong>: The subject identifier can differ between the parties involved. For example, a user is identified in trust domain A as "johndoe@a.org" but in trust domain B they are identified as "doe.john@b.org". The mapping from one identifier to the other <bcp14>MAY</bcp14> either happen in the token exchange step and the updated identifier is reflected in the returned JWT authorization grant or in the assertion step where the updated identifier would be reflected in the access token. To support this both authorization servers <bcp14>MAY</bcp14> add, change or remove claims as described above.</t>
          </li>
          <li>
            <t><strong>Data Minimization</strong>: Authorization servers <bcp14>MAY</bcp14> remove or hide certain claims due to privacy requirements or reduced trust towards the targeting trust domain.
One example is a financial institution that integrates with a third-party payment gateway.
Domain A (the financial institution) includes detailed claims such as "account type: premium" and "transaction limit: $10,000" in the JWT authorization grant.
However, domain B (the payment gateway) only needs claims like "transaction limit" for its access control policies. Domain A transcribes the claims to exclude unnecessary information, ensuring that domain B receives only the claims relevant to its operations.</t>
          </li>
          <li>
            <t><strong>Controlling scope</strong>: Clients <bcp14>MAY</bcp14> use the scope parameter to control transcribed claims (e.g. downscoping). Authorization Servers <bcp14>SHOULD</bcp14> verify that the requested scopes are not higher privileged than the scopes of the presented subject_token.
For example, a cloud-based development platform that allows developers to access APIs across multiple trust domains where a developer in domain A requests access to an API in domain B but only needs limited permissions, such as "read-only" access.
The authorization server in domain A transcribes the claims into the JWT authorization grant to reflect the downscoped permissions, removing higher-privileged claims like "write" or "admin." This ensures that the access token issued by domain B aligns with the developer's intended scope of access.</t>
          </li>
          <li>
            <t><strong>Including JWT authorization grant claims</strong>: The authorization server in trust domain B which is performing the assertion flow <bcp14>MAY</bcp14> leverage claims from the JWT authorization grant presented by the client in trust domain A and include them in the returned access token.</t>
          </li>
        </ul>
        <t>The representation of transcribed claims and their format is not defined in this specification.</t>
        <t>When transcribing claims, it's
important that both the place where the claims are given and where they
are interpreted agree on the semantics and that the access controls are
consistent.</t>
      </section>
    </section>
    <section anchor="authorization-server-metadata">
      <name>Authorization Server Metadata</name>
      <t>The following authorization server metadata parameter is defined by this specification and is registered in the "OAuth Authorization Server Metadata" registry established in "OAuth 2.0 Authorization Server Metadata" <xref target="RFC8414"/>.</t>
      <dl newline="true">
        <dt>identity_chaining_requested_token_types_supported</dt>
        <dd>
          <t><bcp14>OPTIONAL</bcp14>. JSON array containing a list of Token Types that can be requested as a <tt>requested_token_type</tt> in the Token Exchange request when performing Identity and Authorization Chaining Across Domains. In situations where it might be an information disclosure concern, authorization servers <bcp14>MAY</bcp14> choose not to advertise some supported requested token types even when this parameter is used, and lack of a value does not necessarily mean that the token type is unsupported.</t>
        </dd>
      </dl>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <section anchor="oauth-authorization-server-metadata-registry">
        <name>OAuth Authorization Server Metadata Registry</name>
        <t>This specification defines the following parameter in the "OAuth Authorization Server Metadata" registry established in <xref target="RFC8414"/>.</t>
        <section anchor="registry-contents">
          <name>Registry Contents</name>
          <ul spacing="normal">
            <li>
              <t>Metadata Name: <tt>identity_chaining_requested_token_types_supported</tt></t>
            </li>
            <li>
              <t>Metadata Description: JSON array containing a list of Token Type Identifiers supported as a <tt>requested_token_type</tt> in an Identity and Authorization Chaining Token Exchange (<xref target="RFC8693"/>) request.</t>
            </li>
            <li>
              <t>Change Controller: IETF</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="authorization-server-metadata"/></t>
            </li>
          </ul>
          <t>The registry records the supported token types that can be requested in an <xref target="RFC8693"/> Token Exchange.</t>
        </section>
      </section>
      <section anchor="media-types">
        <name>Media Types</name>
        <t>This specification does not define any new media types.</t>
        <t>It is <bcp14>RECOMMENDED</bcp14> that any profile or deployment-specific implementation adopt explicit typing as defined in JSON Web Token Best Current Practices <xref target="RFC8725"/> and define a new media type <xref target="RFC2046"/> in the "Media Types" registry <xref target="IANA.media-types"/> in the manner described in <xref target="RFC6838"/>.</t>
      </section>
    </section>
    <section anchor="Security">
      <name>Security Considerations</name>
      <section anchor="client-authentication">
        <name>Client Authentication</name>
        <t>Authorization Servers <bcp14>SHOULD</bcp14> follow the Best Current Practice for OAuth 2.0 Security <xref target="RFC9700"/> for client authentication.
Client secrets remain widely deployed, and support for public clients may be necessary in some deployments.</t>
      </section>
      <section anchor="sender-constraining">
        <name>Sender Constraining Tokens</name>
        <t>Authorization Servers <bcp14>SHOULD</bcp14> follow the Best Current Practice for OAuth 2.0 Security <xref target="RFC9700"/> for sender constraining tokens,
acknowledging, however, that bearer tokens remain the predominantly deployed access token type.</t>
      </section>
      <section anchor="authorized-use-of-subject-token">
        <name>Authorized use of Subject Token</name>
        <t>The authorization server in trust domain A <bcp14>SHOULD</bcp14> perform client authentication and verify that the client in trust domain A is authorized to present the token used as a subject_token in the token exchange flow before issuing an authorization grant. By doing so, it minimizes the risk of an attacker making a lateral move by using a stolen token from trust domain A to obtain an authorization grant with which to authenticate to an authorization server in trust domain B and request an access token for a resource server in trust domain B.
Such authorization policy might not be present in all deployments, and is of reduced utility for public clients, but it is a recommended security measure for deployments that can support it.</t>
      </section>
      <section anchor="refresh-tokens">
        <name>Refresh Tokens</name>
        <t>The authorization server in trust domain B <bcp14>SHOULD NOT</bcp14> issue refresh tokens to the client within the scope of this specification. When the access token has expired, clients <bcp14>SHOULD</bcp14> re-submit the original JWT Authorization Grant to obtain a new Access Token. If the JWT Authorization Grant has expired, the client <bcp14>SHOULD</bcp14> request a new grant from the authorization server in trust domain A before presenting it to the authorization server in trust domain B. The issuance of Refresh Tokens by the authorization server in trust domain B introduces a redundant credential requiring additional security measures, and creating unnecessary security risks. It also allows the client to obtain access tokens within trust domain B, even if the initial session in trust domain A has finished (e.g. the user has logged out or access has been revoked).
This is consitent with Section 4.1 of <xref target="RFC7521"/> which discourages but does not prohibit the issuance of refresh tokens in the context of assertion grants.</t>
        <t>This paragraph does not relate to the issuance of refresh tokens by the authorization server in trust domain A.</t>
      </section>
      <section anchor="replay-of-authorization-grant">
        <name>Replay of Authorization Grant</name>
        <t>The authorization grant obtained from the Token Exchange process is a bearer token. If an attacker obtains an authorization grant issued to a client in trust domain A, it could replay it to an authorization server in trust domain B to obtain an access token. Implementations <bcp14>SHOULD</bcp14> evaluate this risk and deploy appropriate mitigations based on their threat model and deployment environment. Mitigations include, but are not limited to:</t>
        <ul spacing="normal">
          <li>
            <t>Issuing short-lived authorization grants to minimize the window of exposure.</t>
          </li>
          <li>
            <t>Limiting authorization grants to a single use to prevent repeated replay.</t>
          </li>
          <li>
            <t>Requiring client authentication to ensure the client presenting the grant is known to the authorization server in trust domain B.</t>
          </li>
        </ul>
        <t>Authorization servers in trust domain B <bcp14>MAY</bcp14> enforce these mitigations.</t>
        <t>Implementations and profiles of this specification <bcp14>MAY</bcp14> define additional mitigations tailored to specific use cases and operational contexts.</t>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>In addition to the privacy considerations outlined in <xref target="RFC8693"/> and <xref target="RFC7523"/>, the following items are relevant to this specification:</t>
      <t>OAuth federation involves the exchange of tokens and claims between disparate trust domains.
If excessive or unnecessary user data is included in these tokens, it may lead to unintended privacy consequences.
As noted in <xref target="RFC8693"/> and <xref target="RFC7523"/>, deployments should determine the minimum amount of information necessary to complete the exchange and ensure that only that information is included in the token.</t>
      <t>Inconsistent user privacy practices within OAuth federation can result from varying interpretations and implementations of the protocol across different domains.
This inconsistency can lead to a lack of transparency and user control over what data is shared and with whom.
To mitigate this, federation trust relationships between domains must be carefully established and maintained with user privacy in mind.
This includes verifying that privacy policies are aligned across trust domains and clearly define how user data is collected, used, and protected.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC6749">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6749"/>
          <seriesInfo name="DOI" value="10.17487/RFC6749"/>
        </reference>
        <reference anchor="RFC8693">
          <front>
            <title>OAuth 2.0 Token Exchange</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="A. Nadalin" initials="A." surname="Nadalin"/>
            <author fullname="B. Campbell" initials="B." role="editor" surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <date month="January" year="2020"/>
            <abstract>
              <t>This specification defines a protocol for an HTTP- and JSON-based Security Token Service (STS) by defining how to request and obtain security tokens from OAuth 2.0 authorization servers, including security tokens employing impersonation and delegation.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8693"/>
          <seriesInfo name="DOI" value="10.17487/RFC8693"/>
        </reference>
        <reference anchor="RFC7521">
          <front>
            <title>Assertion Framework for OAuth 2.0 Client Authentication and Authorization Grants</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="Y. Goland" initials="Y." surname="Goland"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification provides a framework for the use of assertions with OAuth 2.0 in the form of a new client authentication mechanism and a new authorization grant type. Mechanisms are specified for transporting assertions during interactions with a token endpoint; general processing rules are also specified.</t>
              <t>The intent of this specification is to provide a common framework for OAuth 2.0 to interwork with other identity systems using assertions and to provide alternative client authentication mechanisms.</t>
              <t>Note that this specification only defines abstract message flows and processing rules. In order to be implementable, companion specifications are necessary to provide the corresponding concrete instantiations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7521"/>
          <seriesInfo name="DOI" value="10.17487/RFC7521"/>
        </reference>
        <reference anchor="RFC7523">
          <front>
            <title>JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification defines the use of a JSON Web Token (JWT) Bearer Token as a means for requesting an OAuth 2.0 access token as well as for client authentication.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7523"/>
          <seriesInfo name="DOI" value="10.17487/RFC7523"/>
        </reference>
        <reference anchor="RFC8707">
          <front>
            <title>Resource Indicators for OAuth 2.0</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>This document specifies an extension to the OAuth 2.0 Authorization Framework defining request parameters that enable a client to explicitly signal to an authorization server about the identity of the protected resource(s) to which it is requesting access.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8707"/>
          <seriesInfo name="DOI" value="10.17487/RFC8707"/>
        </reference>
        <reference anchor="RFC8414">
          <front>
            <title>OAuth 2.0 Authorization Server Metadata</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <date month="June" year="2018"/>
            <abstract>
              <t>This specification defines a metadata format that an OAuth 2.0 client can use to obtain the information needed to interact with an OAuth 2.0 authorization server, including its endpoint locations and authorization server capabilities.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8414"/>
          <seriesInfo name="DOI" value="10.17487/RFC8414"/>
        </reference>
        <reference anchor="RFC8725">
          <front>
            <title>JSON Web Token Best Current Practices</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="D. Hardt" initials="D." surname="Hardt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>JSON Web Tokens, also known as JWTs, are URL-safe JSON-based security tokens that contain a set of claims that can be signed and/or encrypted. JWTs are being widely used and deployed as a simple security token format in numerous protocols and applications, both in the area of digital identity and in other application areas. This Best Current Practices document updates RFC 7519 to provide actionable guidance leading to secure implementation and deployment of JWTs.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="225"/>
          <seriesInfo name="RFC" value="8725"/>
          <seriesInfo name="DOI" value="10.17487/RFC8725"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.draft-ietf-oauth-v2-1">
          <front>
            <title>The OAuth 2.1 Authorization Framework</title>
            <author fullname="Dick Hardt" initials="D." surname="Hardt">
              <organization>Hellō</organization>
            </author>
            <author fullname="Aaron Parecki" initials="A." surname="Parecki">
              <organization>Okta</organization>
            </author>
            <author fullname="Torsten Lodderstedt" initials="T." surname="Lodderstedt">
              <organization>SPRIND</organization>
            </author>
            <date day="19" month="October" year="2025"/>
            <abstract>
              <t>   The OAuth 2.1 authorization framework enables an application to
   obtain limited access to a protected resource, either on behalf of a
   resource owner by orchestrating an approval interaction between the
   resource owner and an authorization service, or by allowing the
   application to obtain access on its own behalf.  This specification
   replaces and obsoletes the OAuth 2.0 Authorization Framework
   described in RFC 6749 and the Bearer Token Usage in RFC 6750.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-v2-1-14"/>
        </reference>
        <reference anchor="RFC2046">
          <front>
            <title>Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types</title>
            <author fullname="N. Freed" initials="N." surname="Freed"/>
            <author fullname="N. Borenstein" initials="N." surname="Borenstein"/>
            <date month="November" year="1996"/>
            <abstract>
              <t>This second document defines the general structure of the MIME media typing system and defines an initial set of media types. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2046"/>
          <seriesInfo name="DOI" value="10.17487/RFC2046"/>
        </reference>
        <reference anchor="RFC6838">
          <front>
            <title>Media Type Specifications and Registration Procedures</title>
            <author fullname="N. Freed" initials="N." surname="Freed"/>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <date month="January" year="2013"/>
            <abstract>
              <t>This document defines procedures for the specification and registration of media types for use in HTTP, MIME, and other Internet protocols. This memo documents an Internet Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="13"/>
          <seriesInfo name="RFC" value="6838"/>
          <seriesInfo name="DOI" value="10.17487/RFC6838"/>
        </reference>
        <reference anchor="RFC9700">
          <front>
            <title>Best Current Practice for OAuth 2.0 Security</title>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="A. Labunets" initials="A." surname="Labunets"/>
            <author fullname="D. Fett" initials="D." surname="Fett"/>
            <date month="January" year="2025"/>
            <abstract>
              <t>This document describes best current security practice for OAuth 2.0. It updates and extends the threat model and security advice given in RFCs 6749, 6750, and 6819 to incorporate practical experiences gathered since OAuth 2.0 was published and covers new threats relevant due to the broader application of OAuth 2.0. Further, it deprecates some modes of operation that are deemed less secure or even insecure.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="240"/>
          <seriesInfo name="RFC" value="9700"/>
          <seriesInfo name="DOI" value="10.17487/RFC9700"/>
        </reference>
        <reference anchor="RFC9728">
          <front>
            <title>OAuth 2.0 Protected Resource Metadata</title>
            <author fullname="M.B. Jones" initials="M.B." surname="Jones"/>
            <author fullname="P. Hunt" initials="P." surname="Hunt"/>
            <author fullname="A. Parecki" initials="A." surname="Parecki"/>
            <date month="April" year="2025"/>
            <abstract>
              <t>This specification defines a metadata format that an OAuth 2.0 client or authorization server can use to obtain the information needed to interact with an OAuth 2.0 protected resource.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9728"/>
          <seriesInfo name="DOI" value="10.17487/RFC9728"/>
        </reference>
        <reference anchor="IANA.media-types" target="https://www.iana.org/assignments/media-types">
          <front>
            <title>Media Types</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
      </references>
    </references>
    <?line 388?>

<section anchor="use-cases">
      <name>Use cases</name>
      <t>This sections outlines some use cases where the identity and authorization chaining described in this document can be applied. The use cases described are not exhaustive, but are representative of the type of use cases enabled by this specification. Other use cases may also be supported by this specification.</t>
      <section anchor="preserve-user-context-across-multi-cloud-multi-hybrid-environments">
        <name>Preserve User Context across Multi-cloud, Multi-Hybrid environments</name>
        <t>A user attempts to access a service that is implemented as a number of on-premise and cloud-based workloads. Both the on-premise and cloud-based services are segmented by multiple trust boundaries that span one or more on-premise or cloud service environments. Each workload can apply an authorization policy that takes the context of the original user, as well as intermediary services into account, irrespective of where the workloads are running and even when a workload in one trust domain calls another service in another trust domain.</t>
      </section>
      <section anchor="continuous-integration-accessing-external-resources">
        <name>Continuous Integration Accessing External Resources</name>
        <t>A continuous integration system needs to access external resources, for example to upload an artifact or to run tests. These resources are protected by different authorization servers. The identity information of the build, for example metadata such as commit hashes or repository, should be preserved and carried across the domain boundary. This not just prevents maintaining credentials it also allows fine grained access control at the resource.</t>
      </section>
      <section anchor="api-security-use-case">
        <name>API Security Use Case</name>
        <t>A home devices company provides a "Camera API" to enable access to home cameras. Partner companies use this Camera API to integrate the camera feeds into their security dashboards. Using OAuth between the partner and the Camera API, a partner can request the feed from a home camera to be displayed in their dashboard. The user has an account with the camera provider. The user may be logged in to view the partner provided dashboard, or they may authorize emergency access to the camera. The home devices company must be able to independently verify that the request originated and was authorized by a user who is authorized to view the feed of the requested home camera.</t>
      </section>
      <section anchor="extend-single-sign-on-to-api-access">
        <name>Extend Single Sign-On to API Access</name>
        <t>A user that authenticated to an enterprise Identity Provider (IdP) does not have to sign-in to multiple SaaS applications if the SaaS applications are configured to trust the enterprise IdP. It is possible to extend this SSO relationship to API access by allowing the Client to contact the enterprise IdP and exchange the identity assertion (ID Token or SAML Token) that it previously received from the enterprise IdP for an authorization grant. The authorization grant can be used to obtain an access token from the SaaS application's authorization server, provided that a trust relationship has been established between the enterprise IdP which issues the authorization grant and the SaaS authorization server. As a result SaaS servers that trust the enterprise IdP do not require the user to complete an interactive delegated OAuth 2.0 flow to obtain an access token to access the SaaS provider's APIs.</t>
      </section>
      <section anchor="cross-domain-api-authorization">
        <name>Cross-domain API authorization</name>
        <t>An e-mail client can be used with arbitrary email servers, without requiring pre-established relationships between each email client and each email server. An e-mail client obtains an identity assertion (ID Token or SAML token) from an IdP. When the e-mail client needs access to a separate API, such as a third-party calendaring application, the email client exchanges the identity assertion for an authorization grant and uses this authorization grant to obtain an access token for the third-party calendaring application from the authorization server trusted by the third-party calendaring application. If the authorization server trusts the issuer of the authorization grant, the e-mail client obtains an access token without any additional user interaction.</t>
      </section>
    </section>
    <section anchor="Examples">
      <name>Examples</name>
      <t>This section contains two examples, demonstrating how this specification may be used in different environments with specific requirements. The first example shows the resource server acting as the client and the second example shows the authorization server acting as the client.</t>
      <section anchor="resource-server-acting-as-client">
        <name>Resource server acting as client</name>
        <t>As part of completing a request, a resource server in trust domain A may need to access a resource server in trust domain B. This requires the resource server in trust domain A to obtain an Access Token from an authorization server in trust domain B, which it may then present to the resource server in trust domain B. A resource server in trust domain A may use the flows described in this specification by assuming the role of a client when attempting to access the resource server in trust domain B. Resource servers may act as clients if the following is true:</t>
        <ul spacing="normal">
          <li>
            <t>The resource server has the ability to determine the authorization server of the protected resource outside trust domain A.</t>
          </li>
          <li>
            <t>The authorization server in trust domain B is reachable by the resource server in trust domain A and is able to perform the appropriate client authentication (if required).</t>
          </li>
        </ul>
        <t>The flow would look like this:</t>
        <figure>
          <name>Resource server acting as client</name>
          <artwork><![CDATA[
+-------------+       +---------------+     +-------------+ +---------+
|Authorization|       |Resource Server|     |Authorization| |Protected|
|Server       |       |Trust Domain A |     |Server       | |Resource |
|Trust        |       |(acting as     |     |Trust        | |Trust    |
|Domain A     |       | a client)     |     |Domain B     | |Domain B |
+-------------+       +---------------+     +-------------+ +---------+
       |                     |                     |             |
       |                     |   (A) request protected resource  |
       |                     |      metadata                     |
       |                     | --------------------------------->|
       |                     | <- - - - - - - - - - - - - - - - -|
       |                     |                     |             |
       | (B) exchange token  |                     |             |
       |   [RFC 8693]        |                     |             |
       |<--------------------|                     |             |
       |                     |                     |             |
       | (C) <authorization  |                     |             |
       |        grant>       |                     |             |
       | - - - - - - - - -  >|                     |             |
       |                     |                     |             |
       |                     | (D) present         |             |
       |                     |  authorization      |             |
       |                     |  grant [RFC 7523]   |             |
       |                     |-------------------->|             |
       |                     |                     |             |
       |                     | (E) <access token>  |             |
       |                     |<- - - - - - - - - - |             |
       |                     |                     |             |
       |                     |               (F) access          |
       |                     | --------------------------------->|
       |                     |                     |             |
]]></artwork>
        </figure>
        <t>The flow contains the following steps:</t>
        <t>The resource server of trust domain A needs to access protected resource in trust domain B. It requires an access token to do so. In order to obtain the required access token, the resource server in trust domain A will act as a client.</t>
        <t>(A) The resource server (acting as a client) in trust domain A requests protected resource metadata from the resource server in trust domain B as described in <xref target="RFC9728"/>. It uses the resource metadata to discover information about the authorization server for trust domain B. This step <bcp14>MAY</bcp14> be skipped if discovery is not needed and other means of discovery <bcp14>MAY</bcp14> be used. The protected resource in trust domain B returns its metadata along with the authorization server information in trust domain A.</t>
        <t>(B) Once the resource server (acting as a client) in trust domain A identified the authorization server for trust domain B, it requests a JWT authorization grant for the authorization server in trust domain B from the authorization server in trust domain A (it's own authorization server). This happens via the token exchange protocol (See <xref target="token-exchange">Token Exchange</xref>).</t>
        <t>(C) If successful, the authorization server in trust domain A returns a JWT authorization grant to the resource server (acting as client) in trust domain A.</t>
        <t>(D) The resource server (acting as client) in trust domain A presents the JWT authorization grant to the authorization server in trust domain B.</t>
        <t>(E) The authorization server in trust domain B uses claims from the JWT authorization grant to identify the user and establish additional authorization context. If access is granted, the authorization server in trust domain B returns an access token.</t>
        <t>(F) The resource server (acting as a client) in trust domain A uses the access token to access the protected resource in trust domain B.</t>
      </section>
      <section anchor="authorization-server-acting-as-client">
        <name>Authorization server acting as client</name>
        <t>Authorization servers may act as clients too. This can be necessary because of following reasons:</t>
        <ul spacing="normal">
          <li>
            <t>Clients in trust domain A may not have knowledge of authorization servers in trust domain B.</t>
          </li>
          <li>
            <t>Clients in trust domain A may not have network access to other authorization servers in trust domain B.</t>
          </li>
          <li>
            <t>Strict access control on resources in trust domain B is required. This access control is enforced by authorization servers in trust domain B.</t>
          </li>
          <li>
            <t>Authorization servers in trust domain B require client authentication, but are unable to manage clients outside of trust domain B.</t>
          </li>
        </ul>
        <t>Under these conditions, an authorization server in trust domain A may obtain an access token from an authorization server in trust domain B on-behalf-of any client in trust domain A. This enables clients in trust domain A to access a protected resource server in trust domain B. Resource servers in trust domain A may act as a client to the authorization server in trust domain A in order to obtain an access token to access a protected resource in trust domain B in order to complete a request.</t>
        <t>The authorization server in trust domain A may use the flows described in this specification by acting first as a client to itself to obtain an assertion grant and then act as a client to the authorization server in trust domain B to request an access token for a protected resource in trust domain B. The flow when authorization servers act as a client on-behalf of another client in it's own trust domain is shown below:</t>
        <figure>
          <name>Authorization server acting as client</name>
          <artwork><![CDATA[
+--------+          +--------------+       +--------------+ +---------+
|Client  |          |Authorization |       |Authorization | |Protected|
|Trust   |          |Server        |       |Server        | |Resource |
|Domain A|          |Trust Domain A|       |Trust Domain B| |Trust    |
|        |          |(acting as    |       |              | |Domain   |
|        |          |client)       |       |              | |         |
+--------+          +--------------+       +--------------+ +---------+
    |                      |                       |             |
    | (A) request          |                       |             |
    | token for            |                       |             |
    | protected resource   |                       |             |
    | in trust domain B.   |                       |             |
    | -------------------->|                       |             |
    |                      |                       |             |
    |                      |----+                  |             |
    |                      |    | (B) determine    |             |
    |                      |<---+ authorization    |             |
    |                      |      server trust     |             |
    |                      |      domain B         |             |
    |                      |                       |             |
    |                      |----+                  |             |
    |                      |    | (C) generates    |             |
    |                      |<---+ authorization    |             |
    |                      |      grant            |             |
    |                      |                       |             |
    |                      | (D) present           |             |
    |                      |   authorization grant |             |
    |                      |   [RFC 7523]          |             |
    |                      | --------------------->|             |
    |                      |                       |             |
    |                      | (E) <access token>    |             |
    |                      | <- - - - - - - - - - -|             |
    |                      |                       |             |
    |  (F) <access token>  |                       |             |
    | <- - - - - - - - - - |                       |             |
    |                      |                       |             |
    |                      |           (G) access  |             |
    | ---------------------------------------------------------->|
    |                      |                       |             |
]]></artwork>
        </figure>
        <t>The flow contains the following steps:</t>
        <t>(A) The client in trust domain A requests a token for the protected resource in trust domain B from the authorization server in trust domain A. This specification does not define this step. A profile of Token Exchange <xref target="RFC8693"/> may be used.</t>
        <t>(B) The authorization server for trust domain A determines the authorization server for trust domain B. This could have been passed by the client, is statically maintained or dynamically resolved.</t>
        <t>(C) Once the authorization server in trust domain B is determined, the authorization server in domain A generates a JWT authorization grant suitable for presentations to the authorization server in trust domain B.</t>
        <t>(D) The authorization server in trust domain A acts as a client and presents the JWT authorization grant to the authorization server for trust domain B. This presentation happens between the authorization servers. The authorization server in trust domain A may be required to perform client authentication while doing so. This reflects the <xref target="atr">Access Token Request</xref> in this specification.</t>
        <t>(E) The authorization server of trust domain B returns an access token for the protected resource in trust domain B to the authorization server (acting as a client) in trust domain A.</t>
        <t>(F) The authorization server of trust domain A returns the access token to the client in trust domain A.</t>
        <t>(G) The client in trust domain A uses the received access token to access the protected resource in trust domain B.</t>
      </section>
      <section anchor="delegated-key-binding">
        <name>Delegated Key Binding</name>
        <t>In some environments, there is a need to bind the access token issued by the authorization server in trust domain B to a private key held by the client in trust domain A. This is so that the resource server in trust domain B can verify the proof of possession of the private key of the client in trust domain A when the client in trust domain A presents the token to the resource server in trust domain B. Any application in trust domain A may act as a client, including applications that are resource servers in trust domain A and need to access resource servers in trust domain B in order to complete a request.</t>
        <t>In the case where the resource server in trust domain A is acting as the client, the access token may be constrained using existing techniques as described in Security Considerations (See <xref target="sender-constraining">Sender Constraining Tokens</xref>).</t>
        <t>The case where the authorization server in trust domain A is acting as a client is more complicated since the authorization server in trust domain A (acting as client) does not have access to the key material of the client on whose behalf the access token is being requested.</t>
        <t>However, the trust relationship between the authorization server in trust domain A and the authorization server in trust domain B can be leveraged to sender constrain the access token issued by the authorization server in trust domain B. This can be achieved as follows.</t>
        <ul spacing="normal">
          <li>
            <t>The authorization server in trust domain A verifies proof of possession of the key presented by the client.</t>
          </li>
          <li>
            <t>The authorization server in trust domain A then conveys the key of the client in trust domain A in the token request sent to the authorization server in trust domain B. This can, for example, be accomplished by including a "requested_cnf" claim that contains the "cnf" claim of the client in trust domain A, in the assertion authorization grant sent to the authorization server in trust domain B.</t>
          </li>
          <li>
            <t>The authorization server in trust domain B then includes a "cnf" claim that matches the value of the "requested_cnf" claim included in the authorization grant in the returned access token.</t>
          </li>
          <li>
            <t>The client in trust domain A that presents the access token must use the key matching the "cnf" claim to generate a DPoP proof or setup a MTLS session when presenting the access token to a resource server in in trust domain B.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="Acknowledgements">
      <name>Acknowledgements</name>
      <t>The editors would like to thank Patrick Harding, Joe Jubinski, Watson Ladd, Justin Richer, Adam Rusbridge, Dean H. Saxe, and others (please let us know, if you've been mistakenly omitted) for their valuable input, feedback and general support of this work.</t>
    </section>
    <section anchor="document-history">
      <name>Document History</name>
      <t>[[ To be removed from the final specification ]]</t>
      <t>-07</t>
      <ul spacing="normal">
        <li>
          <t>Add a (hopefully helpful) sentence to the end of the first paragraph of the Overview</t>
        </li>
        <li>
          <t>Reword bullet (C) of the Overview (because you cannot use public keys to sign)</t>
        </li>
        <li>
          <t>Explicitly reference RFC8693 Section 2.2.2 for token exchange error</t>
        </li>
        <li>
          <t>Try and better explain that the access token request content is more desricption of Sec 2.1 RFC7523 and delete the empty scope parameter</t>
        </li>
        <li>
          <t>Explicitly reference RFC7523 Section 3.1 for authorization grant error</t>
        </li>
        <li>
          <t>Remove a seemingly nonsensical sentence about preventing injection of invalid claims</t>
        </li>
        <li>
          <t>Try and explain why ASs might not want to advertise some supported requested token types</t>
        </li>
        <li>
          <t>Endeavor to qualify the SHOULDs on client auth and sender constrained tokens</t>
        </li>
        <li>
          <t>Qualify the only <bcp14>SHOULD NOT</bcp14> on RTs from assertion grants being inline with historical decisions in RFC7521</t>
        </li>
        <li>
          <t>Quality the Authorized use of Subject Token security recommendations a bit</t>
        </li>
        <li>
          <t>Change Intended Status to Standards Track from Informational</t>
        </li>
      </ul>
      <t>-06</t>
      <ul spacing="normal">
        <li>
          <t>Use IANA.media-types so the tooling can find the media types registry without an explicit target</t>
        </li>
        <li>
          <t>Mention that the RFC8693 token exchange is not strictly necessary, if trust domain A's platform provides other means to obtain a JWT authorization grant</t>
        </li>
        <li>
          <t>Better describe the trust relationship necessary (domain B has to trusts domain A to issue JWT authz grants and trust its signing key(s)) and mention that AS Metadata's <tt>jwks_uri</tt> can be used to obtain the verification keys for trust domain A</t>
        </li>
        <li>
          <t>add a note about agreeing on semantics etc. when transcribing claims</t>
        </li>
        <li>
          <t>Editorial fixes</t>
        </li>
      </ul>
      <t>-05</t>
      <ul spacing="normal">
        <li>
          <t>Editorial pass on Appendix for consistency</t>
        </li>
        <li>
          <t>Clarified introduction</t>
        </li>
        <li>
          <t>Added security considerations for unconstrained authorization grants.</t>
        </li>
        <li>
          <t>Updated some contributors' affiliation and contact information</t>
        </li>
        <li>
          <t>Added examples in claims transcription text</t>
        </li>
        <li>
          <t>Simplify some text in the JWT Authorization Grant section</t>
        </li>
        <li>
          <t>Fix some toolchain complaints and other nitpicks</t>
        </li>
        <li>
          <t>Added some Privacy Considerations</t>
        </li>
        <li>
          <t>Move Mr. Parecki from acknowledgements to contributors in acknowledgement of his contributions</t>
        </li>
        <li>
          <t>Added Authorization Server Metadata registry to publish supported Token Exchange requested token types</t>
        </li>
      </ul>
      <t>-04</t>
      <ul spacing="normal">
        <li>
          <t>Clarified diagrams and description of authorization server acting as a client.</t>
        </li>
        <li>
          <t>Remove references to sd-jwt.</t>
        </li>
        <li>
          <t>Added text to recommend use of explicit typing.</t>
        </li>
        <li>
          <t>Added security consideration on preventing lateral moves.</t>
        </li>
        <li>
          <t>Editorial updates to be consistent about the trust domain for a client, authorization server or resource server.</t>
        </li>
        <li>
          <t>Added sender constraining of tokens to security considerations</t>
        </li>
      </ul>
      <t>-03</t>
      <ul spacing="normal">
        <li>
          <t>Editorial updates</t>
        </li>
      </ul>
      <t>-02</t>
      <ul spacing="normal">
        <li>
          <t>remove recommendation to not use RFC8693's requested_token_type</t>
        </li>
        <li>
          <t>Corrected discrepancy between alphabetic numbering of the diagram and text in the resource acting as client example</t>
        </li>
      </ul>
      <t>-01</t>
      <ul spacing="normal">
        <li>
          <t>limit the authorization grant format to RFC7523 JWT</t>
        </li>
        <li>
          <t>minor example fixes</t>
        </li>
        <li>
          <t>editorial fixes</t>
        </li>
        <li>
          <t>added Aaron Parecki to acknowledgements</t>
        </li>
        <li>
          <t>renamed section headers to be more explicit</t>
        </li>
        <li>
          <t>use more specific term "JWT authorization grant"</t>
        </li>
        <li>
          <t>changed name to "OAuth Identity and Authorization Chaining Across Domains"</t>
        </li>
        <li>
          <t>move use cases to appendix and add continuous integration use case</t>
        </li>
      </ul>
      <t>-00</t>
      <ul spacing="normal">
        <li>
          <t>initial working group version (previously draft-schwenkschuster-oauth-identity-chaining)</t>
        </li>
      </ul>
    </section>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact initials="A." surname="Tulshibagwale" fullname="Atul Tulshibagwale">
        <organization>SGNL</organization>
        <address>
          <email>atuls@sgnl.ai</email>
        </address>
      </contact>
      <contact initials="G." surname="Fletcher" fullname="George Fletcher">
        <organization>Practical Identity LLC</organization>
        <address>
          <email>george@practicalidentity.com</email>
        </address>
      </contact>
      <contact initials="R." surname="Shekh-Yusef" fullname="Rifaat Shekh-Yusef">
        <organization>Ciena</organization>
        <address>
          <email>rifaat.s.ietf@gmail.com</email>
        </address>
      </contact>
      <contact initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
        <organization/>
        <address>
          <email>hannes.tschofenig@gmx.net</email>
        </address>
      </contact>
      <contact initials="A." surname="Parecki" fullname="Aaron Parecki">
        <organization>Okta</organization>
        <address>
          <email>aaron@parecki.com</email>
        </address>
      </contact>
    </section>
  </back>
  <!-- ##markdown-source:
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
VHSwKZd0r/+ui/xtnuidZx3u2dWhAqlFY055V3ew4OZgUSMGrbnqbwvPZf2+
K/rdVvy2/lKXxojeZo0HvTFtZNFWCm9TmPd1LmVmUhygqMBGXQfib9cvtdDB
iexPwfY4WNVHefM2joF1qtKSagm2ulCDxlznx2zKorJRhby5KMsVn1JHzKq7
1rkZueJEbPAtVty1KuXANep8t6z1dVYfe+5a7Sp1x/Hcsnac6mPPXavdrO44
vtO33hd8XHHX1hirFafv5+U31HrUkI3juB7fVePYv9/aedVMVLPCFc8/qyFc
3+5XDmFp5qtXUedV3nKIGtLcdogNXFfrhtjg1a8booIzX7sK9krbaNiWQ/Ad
7Etuxu1h4Ubzv2ojgWXkledbDLHm+V91ImCCjkQmuN3flkPc2omwbP0TG1n7
fM0QdQ7wrVdRZ1ZuOcSmV5k3DtHgYt1uFeufrwNnjQN8yyHqA2b/vo2gfb3a
Z79uiA189mtXcQsbWffq7o/Wi7+5KNrszw+3spFK++hNfA3bOPTX3sjtOCT9
jLSNTJwtnY/avbyylVCpPdBdvm2a2wQNq5XTbg2hk8ilXLyNptWSX7ZnhfSK
jKtGVzmXU5NbhHJgp2hEVToVtsmkoBtR1UXQppQNm1wssnCifkFQqw7VKKyM
o3rz1BezmTW+OLN7KxCbfatylvBVj9TRw2mXKLd3a55u4dbsIe5Lz6Lj4ro/
6W9tPE2vFaT2ga+9SbwuK3ulJe/28HaSjeqTi+ZjJADdx8bk0FFXUgbBqiuw
G1tTrvQvL99D2+Cs3Y5drDqTzXy7jnN4o4XbyEGdP7hcwRlxph83vVDapPTf
isf51KSb/0MsguOELlyn6nQqDnWzU4nIC9XmWmdkDhKVVdrQRnY7303oXvUe
jEW6tg+rwlFEutwtiFkXAUV/uCmjIYDl5LjBYg/V8sTkDtoVqUeNhzTXGeWb
XUvvIccmCaHZwsvS3sg72VY1ypWMbFW6wKW2a72eyAorSbhrv9rAK9lX0Aql
24J2fZSd3PHLecntZUxULNA0TKPGZXTFEd47SumtIhpnCa5oKSze1C6PI5HN
LeKAH9a0iNszt2n5293Ubezu2TZekVyHS+BVtVWwv21kea8u8uiXXfnVa9dU
5wayHxsE+SSR19zCUeEM6ioOU1kGQHlhW9XphFyv6medVGxA2C14jwqP6X7R
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
9ujolol7rf8Lwftz7j64AAA=

-->

</rfc>
