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

<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 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 refers 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 is in posession 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 (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 a token it has in its posession 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 in Domain A uses the access token received from the authorization server in Domain B 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>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 the requested scopes are not higher privileged than the scopes of the 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 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="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>Keio University</organization>
            </author>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <date day="15" month="November" year="2024"/>
            <abstract>
              <t>   This specification defines a mechanism for the selective disclosure
   of individual elements of a JSON-encoded data structure used as the
   payload of a JSON Web Signature (JWS).  The primary use case is the
   selective disclosure of JSON Web Token (JWT) claims.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-selective-disclosure-jwt-14"/>
        </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="3" month="June" 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
   RFC 6749, RFC 6750, and RFC 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="Internet-Draft" value="draft-ietf-oauth-security-topics-29"/>
        </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="15" month="October" 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-13"/>
        </reference>
      </references>
    </references>
    <?line 300?>

<section anchor="use-cases">
      <name>Use cases</name>
      <t>This sections outlines some use cases where the identity and authorization chaining described in this document can be applied. The use cases described are not exhaustive, but are representative of the type of use cases enabled by this specification. Other use cases may also be supported by this specification.</t>
      <section anchor="preserve-user-context-across-multi-cloud-multi-hybrid-environments">
        <name>Preserve User Context across Multi-cloud, Multi-Hybrid environments</name>
        <t>A user attempts to access a service that is implemented as a number of on-premise and cloud-based 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 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 enteprise 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 enteprise IdP for an authorization grant. The authorization grant can be used to obtain an access token from the SaaS application's authorization server, provided that a trust relationship has been established between the enterprise IdP which issues the authorization grant and the SaaS authorization server. As a result SaaS servers that trust the enterprise IdP do not require the user to complete an interactive delegated OAuth 2.0 flow to obtain an access token to access the SaaS provider's APIs.</t>
      </section>
      <section anchor="cross-domain-api-authorization">
        <name>Cross-domain API authorization</name>
        <t>An e-mail client can be used with arbitrary email servers, without requiring pre-established relationships between each email client and each email server. An e-mail client obtains an identity assertion (ID Token or SAML token) from an IdP. When the e-mail client needs access to a separate API, such as a third-party calendaring application, the email client exchanges the identity assertion for an authorization grant and uses this authorization grant to obtain an access token for the third-party calendaring application from the authorization server trusted by the third-party calendaring application. If the authorization server trusts the issuer of the authorization grant, the e-mail client obtains an access token without any additional user interaction.</t>
      </section>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <t>This section contains two examples, demonstrating how this specification may be used in different environments with specific requirements. The first example shows the resource server acting as the client and the second example shows the authorization server acting as the client.</t>
      <section anchor="resource-server-acting-as-client">
        <name>Resource server acting as client</name>
        <t>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                     |
       |                     | --------------------------------->|
       |                     | <- - - - - - - - - - - - - - - - -|
       |                     |                     |             |
       | (B) exchange token  |                     |             |
       |   [RFC 8693]        |                     |             |
       |<--------------------|                     |             |
       |                     |                     |             |
       | (C) <authorization  |                     |             |
       |        grant>       |                     |             |
       | - - - - - - - - - ->|                     |             |
       |                     |                     |             |
       |                     | (D) present         |             |
       |                     |  authorization      |             |
       |                     |  grant [RFC 7523]   |             |
       |                     | ------------------->|             |
       |                     |                     |             |
       |                     | (E) <access token>  |             |
       |                     | <- - - - - - - - - -|             |
       |                     |                     |             |
       |                     |               (F) access          |
       |                     | --------------------------------->|
       |                     |                     |             |
       |                     |                     |             |
]]></artwork>
        </figure>
        <t>The flow contains the following steps:</t>
        <t>(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, Dean H. Saxe, and others (please let us know, if you've been mistakenly omitted) for their valuable input, feedback and general support of this work.</t>
    </section>
    <section anchor="document-history">
      <name>Document History</name>
      <t>[[ To be removed from the final specification ]]
-latest
* Added two more use cases
* Editorial updates</t>
      <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>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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
Fy6vV8py9dfTKv8bXNu+qXYj+H8GNSOyMncAAA==

-->

</rfc>
