<?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.5 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-oauth-identity-chaining-01" category="info" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.4 -->
  <front>
    <title>OAuth Identity and Authorization Chaining Across Domains</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-identity-chaining-01"/>
    <author initials="A." surname="Schwenkschuster" fullname="Arndt Schwenkschuster">
      <organization>Microsoft</organization>
      <address>
        <email>arndts@microsoft.com</email>
      </address>
    </author>
    <author initials="P." surname="Kasselmann" fullname="Pieter Kasselmann">
      <organization>Microsoft</organization>
      <address>
        <email>pieter.kasselman@microsoft.com</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="2024" month="February" day="19"/>
    <area>sec</area>
    <workgroup>oauth</workgroup>
    <abstract>
      <?line 59?>

<t>This specification defines a mechanism to preserve identity information and federate authorization 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 63?>

<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. As a result, developers are often faced with the situation that a protected resource is located in a different trust domain and thus protected by a different 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 referrers to this as "chaining" and defines a mechanism for preserving identity and authorization information across domains using a combination of OAuth 2.0 Token Exchange <xref target="RFC8693"/> and JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants <xref target="RFC7523"/>.</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 via a token exchange. The client in trust domain A presents the received grant as an assertion to the authorization server in domain B in order to obtain an access token for the protected resource in domain B. The client in domain A may be a resource server, or it may be the authorization server itself.</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. The appendix include two additional examples that describe how this flow is used. In one example, the resource server acts as the client and in the other, the authorization server acts as the client.</t>
        <figure>
          <name>Identity and Authorization Chaining Flow</name>
          <artwork><![CDATA[
+-------------+                            +-------------+ +---------+
|Authorization|         +--------+         |Authorization| |Protected|
|Server       |         |Client  |         |Server       | |Resource |
|Domain A     |         |Domain A|         |Domain B     | |Domain B |
+-------------+         +--------+         +-------------+ +---------+
       |                    |                     |             |
       |                    |----+                |             |
       |                    |    | (A) discover   |             |
       |                    |<---+ Authorization  |             |
       |                    |      Server         |             |
       |                    |      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 has a way to discover the authorization server in Domain B and a trust relationship exists between Domain A and Domain B (e.g., through federation). It includes the following:</t>
        <ul spacing="normal">
          <li>
            <t>(A) The client of Domain A needs to discover the authorization server of Domain B. See <xref target="authorization-server-discovery">Authorization Server Discovery</xref>.</t>
          </li>
          <li>
            <t>(B) The client exchanges its token at the authorization server of its own domain (Domain A) for a JWT authorization grant that can be used at the authorization server in Domain B. See <xref target="token-exchange">Token Exchange</xref>.</t>
          </li>
          <li>
            <t>(C) The authorization server of Domain A processes the request and returns a JWT authorization grant that the client can use with the authorization server of Domain B. This requires a trust relationship between Domain A and Domain B (e.g., through federation).</t>
          </li>
          <li>
            <t>(D) The client presents the authorization grant to the authorization server of Domain B. See <xref target="access-token-request">Access Token Request</xref>.</t>
          </li>
          <li>
            <t>(E) Authorization server of Domain B validates the JWT authorization grant and returns an access token.</t>
          </li>
          <li>
            <t>(F) The client now possesses an access token to access the protected resource in 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> maintain a static mapping or use other means to identify the authorization server. The <tt>authorization_servers</tt> property in <xref target="I-D.ietf-oauth-resource-metadata"/> <bcp14>MAY</bcp14> be used.</t>
      </section>
      <section anchor="token-exchange">
        <name>Token Exchange</name>
        <t>The client performs token exchange as defined in <xref target="RFC8693"/> with the authorization server for its own domain (e.g., Domain A) in order to obtain a JWT authorization grant that can be used with the authorization server of a different domain (e.g., 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>requested_token_type</dt>
            <dd>
              <t><bcp14>OPTIONAL</bcp14> according to <xref target="RFC8693"/>. In the context of this specification this parameter <bcp14>SHOULD NOT</bcp14> be used.</t>
            </dd>
            <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 of targeting domain (domain B).</t>
            </dd>
            <dt>audience</dt>
            <dd>
              <t><bcp14>REQUIRED</bcp14> if resource is not set. Well known/logical name of authorization server of targeting domain (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 <bcp14>MUST</bcp14> deny the request.</t>
            </li>
            <li>
              <t>The authorization server <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. 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 presenting access tokens as an authorization grant to an authorization server in a different domain.</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 to prevent an authorization server in one domain 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 Domain B from presenting the authorization grant it received from the client in Domain A to the authorization server for 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 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 presents the JWT authorization grant it received from the authorization server in its own domain as an authorization grant to the authorization server in the domain of the resource server it wants to access as defined in <xref target="RFC7523"/>.</t>
        <section anchor="access-token-request">
          <name>Access Token Request</name>
          <t>The authorization grant is a JWT bearer token, which the client uses to request an access token as described in the JWT Profile for OAuth 2.0 Client Authentication and Authorization Grants <xref target="RFC7523"/>. For the purpose of this specification the following descriptions apply:</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>. Authorization grant returned by the token exchange (<tt>access_token</tt> response).</t>
            </dd>
            <dt>scope</dt>
            <dd>
              <t><bcp14>OPTIONAL</bcp14>.</t>
            </dd>
          </dl>
          <t>The client <bcp14>MAY</bcp14> indicate the audience 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 <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 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 <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 the federation from domain A is not allowed).</t>
            </li>
          </ul>
        </section>
        <section anchor="access-token-response">
          <name>Access Token Response</name>
          <t>The authorization server 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 example belows shows 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>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.</t>
        <ul spacing="normal">
          <li>
            <t><strong>Transcribing the subject identifier</strong>: Subject identifier can differ between the parties involved. For instance: A user is known at domain A by "johndoe@a.org" but in domain B by "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 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>Selective disclosure</strong>: Authorization servers <bcp14>MAY</bcp14> remove or hide certain claims due to privacy requirements or reduced trust towards the targeting trust domain. To hide and enclose claims <xref target="I-D.ietf-oauth-selective-disclosure-jwt"/> <bcp14>MAY</bcp14> be used.</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 requested scopes are not higher privileged than the scopes of presented subject_token.</t>
          </li>
          <li>
            <t><strong>Including JWT authorization grant claims</strong>: The authorization server performing the assertion flow <bcp14>MAY</bcp14> leverage claims from the presented JWT authorization grant and include them in the returned access token. The populated claims <bcp14>SHOULD</bcp14> be namespaced or validated to prevent the injection of invalid claims.</t>
          </li>
        </ul>
        <t>The representation of transcribed claims and their format is not defined in this specification.</t>
      </section>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <t>To be added.</t>
    </section>
    <section anchor="Security">
      <name>Security Considerations</name>
      <section anchor="client-authentication">
        <name>Client Authentication</name>
        <t>Authorization Servers <bcp14>SHOULD</bcp14> follow the OAuth 2.0 Security Best Current Practice <xref target="I-D.ietf-oauth-security-topics"/> for client authentication.</t>
      </section>
    </section>
  </middle>
  <back>
    <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="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="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.ietf-oauth-selective-disclosure-jwt">
          <front>
            <title>Selective Disclosure for JWTs (SD-JWT)</title>
            <author fullname="Daniel Fett" initials="D." surname="Fett">
              <organization>Authlete</organization>
            </author>
            <author fullname="Kristina Yasuda" initials="K." surname="Yasuda">
              <organization>Microsoft</organization>
            </author>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <date day="11" month="December" year="2023"/>
            <abstract>
              <t>   This specification defines a mechanism for selective disclosure of
   individual elements of a JSON object used as the payload of a JSON
   Web Signature (JWS) structure.  It encompasses various applications,
   including but not limited to the selective disclosure of JSON Web
   Token (JWT) claims.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-selective-disclosure-jwt-07"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-security-topics">
          <front>
            <title>OAuth 2.0 Security Best Current Practice</title>
            <author fullname="Torsten Lodderstedt" initials="T." surname="Lodderstedt">
              <organization>SPRIND</organization>
            </author>
            <author fullname="John Bradley" initials="J." surname="Bradley">
              <organization>Yubico</organization>
            </author>
            <author fullname="Andrey Labunets" initials="A." surname="Labunets">
              <organization>Independent Researcher</organization>
            </author>
            <author fullname="Daniel Fett" initials="D." surname="Fett">
              <organization>Authlete</organization>
            </author>
            <date day="8" month="February" year="2024"/>
            <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
   [RFC6749], [RFC6750], and [RFC6819] 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.  It
   further deprecates some modes of operation that are deemed less
   secure or even insecure.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-security-topics-25"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-resource-metadata">
          <front>
            <title>OAuth 2.0 Protected Resource Metadata</title>
            <author fullname="Michael B. Jones" initials="M. B." surname="Jones">
              <organization>Self-Issued Consulting</organization>
            </author>
            <author fullname="Phil Hunt" initials="P." surname="Hunt">
              <organization>Independent Identity, Inc.</organization>
            </author>
            <author fullname="Aaron Parecki" initials="A." surname="Parecki">
              <organization>Okta</organization>
            </author>
            <date day="1" month="February" year="2024"/>
            <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="Internet-Draft" value="draft-ietf-oauth-resource-metadata-03"/>
        </reference>
      </references>
    </references>
    <?line 303?>

<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. This section is not complete and other use cases not mentioned here are also valid.</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 microservices. 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. Every microservice can apply an authorization policy that takes the context of the original user, as well as intermediary microservices into account, irrespective of where the microservices are running and even when a microservice 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>
    <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>Resources servers may act as clients if the following is true:</t>
        <ul spacing="normal">
          <li>
            <t>Authorization Server B is reachable by the resource server by network and is able to perform the appropriate client authentication (if required).</t>
          </li>
          <li>
            <t>The resource server has the ability to determine the authorization server of the protected resource outside its trust domain.</t>
          </li>
        </ul>
        <t>The flow would look like this:</t>
        <figure>
          <name>Resource server acting as client</name>
          <artwork><![CDATA[
+-------------+          +--------+         +-------------+ +---------+
|Authorization|          |Resource|         |Authorization| |Protected|
|Server       |          |Server  |         |Server       | |Resource |
|Domain A     |          |Domain A|         |Domain B     | |Domain B |
+-------------+          +--------+         +-------------+ +---------+
       |                     |                     |             |
       |                     |   (A) request protected resource  |
       |                     |      metadata                     |
       |                     | --------------------------------->|
       |                     | <- - - - - - - - - - - - - - - - -|
       |                     |                     |             |
       | (C) exchange token  |                     |             |
       |   [RFC 8693]        |                     |             |
       |<--------------------|                     |             |
       |                     |                     |             |
       | (D) <authorization  |                     |             |
       |        grant>       |                     |             |
       | - - - - - - - - - ->|                     |             |
       |                     |                     |             |
       |                     | (E) present         |             |
       |                     |  authorization      |             |
       |                     |  grant [RFC 7523]   |             |
       |                     | ------------------->|             |
       |                     |                     |             |
       |                     | (F) <access token>  |             |
       |                     | <- - - - - - - - - -|             |
       |                     |                     |             |
       |                     |               (G) access          |
       |                     | --------------------------------->|
       |                     |                     |             |
       |                     |                     |             |
]]></artwork>
        </figure>
        <t>The flow contains the following steps:</t>
        <t>(A) The resource server of domain A needs to access protected resource in Domain B. It requires an access token to do so which it does not possess. In this example <xref target="I-D.ietf-oauth-resource-metadata"/> is used to receive information about the authorization server which protects the resource in 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 returns its metadata along with the authorization server information.</t>
        <t>(B) Now, after the resource server has identified the authorization server for Domain B, the resource server requests a JWT authorization grant for the authorization server in Domain B from its own authorization server (Domain A). This happens via the token exchange protocol.</t>
        <t>(C) If successful, the authorization server returns a JWT authorization grant to the resource server.</t>
        <t>(D) The resource server presents the JWT authorization grant to the authorization server of Domain B.</t>
        <t>(E) The authorization server of Domain B uses claims from the JWT authorization grant to identify the user and its access. If access is granted an access token is returned.</t>
        <t>(F) The resource server uses the access token to access the protected resource at 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>Resource servers may not have knowledge of authorization servers.</t>
          </li>
          <li>
            <t>Resource servers may not have network access to other authorization servers.</t>
          </li>
          <li>
            <t>A strict access control on resources outside the trust domain is required and enforced by authorization servers.</t>
          </li>
          <li>
            <t>Authorization servers require client authentication. Managing clients for resource servers outside of the trust domain is not intended.</t>
          </li>
        </ul>
        <t>The flow when authorization servers act as client would look like this:</t>
        <figure>
          <name>Authorization server acting as client</name>
          <artwork><![CDATA[
+--------+          +-------------+         +-------------+ +---------+
|Resource|          |Authorization|         |Authorization| |Protected|
|Server  |          |Server       |         |Server       | |Resource |
|Domain A|          |Domain A     |         |Domain B     | |Domain B |
+--------+          +-------------+         +-------------+ +---------+
    |                      |                       |             |
    | (A) request or       |                       |             |
    | exchange token for   |                       |             |
    | protected resource   |                       |             |
    | in domain B.         |                       |             |
    | -------------------->|                       |             |
    |                      |                       |             |
    |                      |----+                  |             |
    |                      |    | (B) determine    |             |
    |                      |<---+ authorization    |             |
    |                      |      server B         |             |
    |                      |                       |             |
    |                      |                       |             |
    |                      |----+                  |             |
    |                      |    | (C) issue        |             |
    |                      |<---+ authorization    |             |
    |                      |      grant ("internal |             |
    |                      |      token exchange") |             |
    |                      |                       |             |
    |                      |                       |             |
    |                      | (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 resource server of Domain A requests a token for the protected resource in Domain B from the authorization server in Domain A. This specification does not cover this step. A profile of Token Exchange <xref target="RFC8693"/> may be used.</t>
        <t>(B) The authorization server (of Domain A) determines the authorization server (of Domain B). This could have been passed by the client, is statically maintained or dynamically resolved.</t>
        <t>(C) Once the authorization server is determined a JWT authorization grant is issued internally. This reflects to <xref target="token-exchange">Token exchange</xref> of this specification and can be seen as an "internal token exchange".</t>
        <t>(D) The issued JWT authorization grant is presented to the authorization server of Domain B. This presentation happens between the authorization servers and authorization server A may be required to perform client authentication while doing so.</t>
        <t>(E) The authorization server of Domain B returns an access token for access to the protected resource in Domain B to the authorization server in Domain A.</t>
        <t>(F) The authorization server of Domain A returns that access token to the resource server in Domain A.</t>
        <t>(G) The resource server in Domain A uses the received access token to access the protected resource in Domain B.</t>
      </section>
    </section>
    <section anchor="Acknowledgements">
      <name>Acknowledgements</name>
      <t>The editors would like to thank Joe Jubinski, Justin Richer, Aaron Parecki  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>-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>Capital One</organization>
        <address>
          <email>george.fletcher@capitalone.com</email>
        </address>
      </contact>
      <contact initials="R." surname="Shekh-Yusef" fullname="Rifaat Shekh-Yusef">
        <organization>EY</organization>
        <address>
          <email>rifaat.shekh-yusef@ca.ey.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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
N3g2lC8PXoTieVeefDzaO7l4PT85/HV2cgEwJ+EoAJjHF2/vvwIYF717rz6/
vX8sZ9K/+5vsfVSSTx6pfvho3N/7rfv2/P6lP/ER3Ch48yvN7E6L1YrOzINf
23d37p1ePhIPTqPP/q+nnz/v3vvcGu/9c/7Py8P09P6b3tn47em5Pwuev7m3
sY3EKLYUSPHq966+KpMkc0x2uAk73sH97ujd7tBed4qd7nycpfpp8WmK8Yjf
JZD3wY73bdWma6sGdx1kDZ7Wmkyy6wKW4xBNx7tWFjad9YoDuFRbL5UZo1zB
KGvbVkowsMqOcC+Cm4uea6mm6hari5NoetSu28ac+gLM4FgL121TgleSyFki
TJGnDVq5QQ1e8Q0trW+8cIw0JAVOsniKhYlNrl7ZdtWoTbW1Sr6p43YWQrPk
71A9aYnS5zXeri3VgcnA/8gE+1DP94WwRb5vaVp/yJ1INx5Y3ZKilqXOjwRf
zd53ka/Z7NzOM9q2okk3P5SF3Yf8rG3VucXOESP70HrEmuOtR0rrSeO5cdrz
yJe29XDsB4L9oeSYmx3+YE9D+d5C1ObhzsOc9xe9xmY/DJ0KG/1bHvyrxFIM
IyTsLnHs3QV+0OGugvumFawYDxOVs+Gieb7o79QGAClHod1eLEGMAnKHDN2N
PCl4R5eFCkmhu9LmR8GUPCDnAOf+kcPmZltI3MdF9U1cEUn5QSm8zHu793CP
lrjFJhZTdaXRm9cshD4+OefVgKMxNxD6YUa3tdfugDEhQ3gON3GTongRNkUh
i2pSFW6HVgC52Wgnx+0UwVa9mLW+duMCXVd0lfi0vvr9EnM58bpmIzsxVrYu
a1qniu6aymstg9cxrmvq6dZM1a1tNvf/SLO5kOXeX/OTZsxg14rp5ufwP9Rq
7d2o1Srvg9X6Oju+6H3uwb23//htTPeen+34z48fvJw/ki8nj+b/xK6xRyP/
2Rit1YMX+9nlgyR+cB59fCSj+xc/Dh4Od7P9B7u/hj/20xfybKf3j8v7SrwY
1lir+7RPa5mc5c1yrM26oJzn1eWYEpI4dmDfBvd0Z4ERwlPqr0Gp3KB5EmtI
VfS0LuWMKzEjM7aQ+DiMwj+3b19YRGw4wAjNkhC/fbvDzheuUmZCxyry3GCq
UwKpLLWRaLPMitQOSBfs/EDRSWFWzLrmcgeMj42PahQFSjwhL3eD9bNyqew+
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

-->

</rfc>
