<?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.36 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-oauth-identity-chaining-12" 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-12"/>
    <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="11"/>
    <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>Additional scopes to indicate scopes included in the returned JWT authorization grant, if required. See <xref target="claims-transcription">Claims transcription</xref>.</t>
            </dd>
            <dt>resource</dt>
            <dd>
              <t>URI of authorization server for trust domain B.</t>
            </dd>
            <dt>audience</dt>
            <dd>
              <t>Well known/logical name of authorization server for trust domain B.</t>
            </dd>
          </dl>
          <t>One of <tt>resource</tt> or <tt>audience</tt> is <bcp14>REQUIRED</bcp14> to indicate the intended authorization server in trust domain B.</t>
        </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 can 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 can identify multiple authorization servers, provided that trust relationships exist with them. However, 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 required parameters are described additionally here:</t>
          <dl newline="true">
            <dt>grant_type</dt>
            <dd>
              <t>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>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 can 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>MUST</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 may 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 can 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 can add, change or remove claims as described above.</t>
          </li>
          <li>
            <t><strong>Data Minimization</strong>: Authorization servers can 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 can 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 can 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 an 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 can 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 388?>

<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 set up a MTLS session when presenting the access token to a resource server in trust domain B.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="Acknowledgements">
      <name>Acknowledgements</name>
      <t>The editors would like to thank Deb Cooley, Lars Eggert, 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>-12</t>
      <ul spacing="normal">
        <li>
          <t>GENART review comments addressed</t>
        </li>
      </ul>
      <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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
8vmYpfU7Mujf2TMOlFh1bFv724o/5uH+Q4PDqyZqa7vtMRsh2pG73o9b716R
wV1S/e9uxOtZZZ1BmMqcvSZHdbr6qn3UPtUvVHa4Y/Qro1uHwgxCcuqmSJRt
olNT4LMZWUweEzH2VJV81OkRzy9sllzRxAWsqapcsltY248bjPtkpDAP/RDk
QKh6DpUWgrM9mdPPypPtDnM6+A19cPAdnvTuiHJYsdoXMXtUH7BhLbTi/eOF
wJChcmYjcRkIrrIgmxpJgZ6iyAtDl8xtk8ysEpcXppyVWM/MtZ/g10ltrIqx
GqONQwxmaRqIt/CyPA58u7tWAtQ4D+87e/c8knW2g3SMB8oZXWsomIBRswV9
M8q7ZyzU5GS3TDZobQIM/2oTwAq5zt8Mt1DqvK+L2RrU/09175Mb1b2T+6B7
v5mfXp58PIHffvvnL1f02/PX+9Hz0wcvl4+Sl9NHy39hgeajSfTTFercxy8e
z68fyOLBRfb+UZLdv/xu9HB8MH/84ODn9Lth+SJ5vX/yz+v7uXgxrtG5H9M5
tVKc3cPydOY612SnU/cUOds0LymUazQRXSKIMaJwjMIUC/1INGpiNUIB65H8
jHFEjA+lKmlSVX6puOYc6Iaa0GE+z+KwQAcnR8JEhkxfKlWuSPI5PoN9J251
I6azoFIxxfDYulrGBDkPysZpGIvagkXDPFXVIq2/CzIFsTzhtPDNlYvo7sG1
Ur0kLxIrcWoTC0xFKDFV5Vvm4kQlwTmrHJfdGKNXvr+63CNkXJ4vUr1r1QV8
DTQbDx8wRswrwfUNhVXhtbPE1e5DySGgO8GdO3qcoXZaKQntIMudO6wSr/5C
uij71rycDEyvco+84mgLGTMTN5m/3jDbeZ9PsjgXPxr/yw6VkNR4FSdiSUaK
MyQOAB/3cZAfDfveYbVQhzvJpsMqUmdbSkYxzuAe1dFOsLgvazg+TI0zhZ/z
WcxZdHZQcpyOUhZIbb2/ebGKADQR1zk3TLXI52nMaFCZ0Et+AEUFDnU2y4uS
nJ9doGhUImoR38RXdPZLoSMtCvM8XSMcwi99wrAnGHs+TbJkqoZEfKonLpzD
hm8msKMggk3jCatJYqU0YhoLaI2FW4pKK8KAgE70KfNFiLWodFhhMRbsmXU9
wBTQ0z5SshlBUwZFEzU71DmTcs5OAeQ9qMuPCzI1WdtCqBVxD9F9CUhP1VwB
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

-->

</rfc>
