<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.3 (Ruby 3.1.3) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-oauth-identity-chaining-00" category="info" submissionType="IETF" xml:lang="en">
  <front>
    <title>Identity Chaining across Trust Domains</title>

    <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="2023" month="November" day="30"/>

    <area>sec</area>
    <workgroup>oauth</workgroup>
    

    <abstract>


<?line 60?>

<t>This specification defines a mechanism to preserve identity and call chain information across trust domains that use the OAuth 2.0 Framework.</t>



    </abstract>



  </front>

  <middle>


<?line 64?>

<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. Preserving this information is referred to as identity chaining. This document defines a mechanism for preserving identity chaining information across trust domains using a combination of OAuth 2.0 Token Exchange <xref target="RFC8693"/> and Assertion Framework for OAuth 2.0 Client Authentication and Authorization Grants <xref target="RFC7521"/>.</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-chaining-across-trust-domains"><name>Identity Chaining Across Trust Domains</name>

<t>This specification describes a combination of OAuth 2.0 Token Exchange <xref target="RFC8693"/> and Assertion Framework for OAuth 2.0 Client Authentication and Authorization Grants <xref target="RFC7521"/> to achieve identity chaining across trust domains.</t>

<t>A client in trust domain A that needs to access a resource server in trust domain B requests an 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="use-case"><name>Use Case</name>
<t>This section describes two use cases addressed in 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="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="overview"><name>Overview</name>

<t>The Identity Chaining flow outlined below describes how a combination of OAuth 2.0 Token Exchange <xref target="RFC8693"/> and Assertion Framework for OAuth 2.0 Client Authentication and Authorization Grants <xref target="RFC7521"/> 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 title="Identity Chaining Flow"><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>       |                     |             |     
       | - - - - - - - - - >|                     |             |     
       |                    |                     |             |     
       |                    | (D) present         |             |     
       |                    | authorization grant |             |     
       |                    | [RFC 7521]          |             |     
       |                    | ------------------->|             |     
       |                    |                     |             |     
       |                    | (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>

<t><list style="symbols">
  <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>
  <t>(B) The client exchanges its token at the authorization server of its own domain (Domain A) for an authorization grant that can be used at the authorization server in Domain B. See <xref target="token-exchange">Token Exchange</xref>.</t>
  <t>(C) The authorization server of Domain A processes the request and returns an 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>
  <t>(D) The client presents the authorization grant to the authorization server of Domain B. See <xref target="authorization-grant">Authorization Grant</xref>.</t>
  <t>(E) Authorization server of Domain B validates the authorization grant and returns an access token.</t>
  <t>(F) The client now possesses an access token to access the protected resource in Domain B.</t>
</list></t>

</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 <spanx style="verb">authorization_servers</spanx> 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 an 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="request"><name>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. See <xref target="authorization-grant-type">Authorization grant type</xref>.</t>
  </dd>
  <dt>scope</dt>
  <dd>
    <t><bcp14>OPTIONAL</bcp14>. Additional scopes to indicate scopes included in returned 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>

<t><list style="symbols">
  <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>
  <t>The authorization server <bcp14>MAY</bcp14> add, remove or change claims. See <xref target="claims-transcription">Claims transcription</xref>.</t>
</list></t>

</section>
<section anchor="authorization-grant-type"><name>Authorization grant type</name>

<t>The authorization grant format and content is part of a contract between the authorization servers. To achieve a maintainable and flexible systems clients <bcp14>SHOULD NOT</bcp14> request a specific <spanx style="verb">requested_token_type</spanx> during the token exchange and <bcp14>SHOULD NOT</bcp14> require a certain format or parse the authorization grant (e.g., if the token is encoded as a JWT). The <spanx style="verb">issued_token_type</spanx> parameter in the response indicates the type and <bcp14>SHOULD</bcp14> be passed into the assertion request. This allows flexibility for authorization servers to change format and content.</t>

<t>Authorization servers <bcp14>MAY</bcp14> use an existing grant type such us <spanx style="verb">urn:ietf:params:oauth:grant-type:jwt-bearer</spanx> to indicate a JWT or <spanx style="verb">urn:ietf:params:oauth:grant-type:saml2-bearer</spanx> to indicate SAML. Other grant types <bcp14>MAY</bcp14> be used to indicate other formats.</t>

</section>
<section anchor="response"><name>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>

<t><list style="symbols">
  <t>The "aud" claim in the returned 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 missuse and to prevent clients from presenting access tokens as an authorization grant to an authorization server in a different domain.</t>
  <t>The "aud" claim included in the returned 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>
</list></t>

</section>
<section anchor="example"><name>Example</name>

<t>The example belows 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 an authorization grant for the authorization server in trust domain B (https://as.b.org/auth).</t>

<figure title="Token exchange request"><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 title="Token exchange response"><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":"Bearer",
  "expires_in":60
}
]]></artwork></figure>

</section>
</section>
<section anchor="authorization-grant"><name>Authorization Grant</name>

<t>The client presents the authorization grant it received from the authorization server in its own domain and presents it to the authorization server in the domain of the resources server it wants to access as defined in the "Assertion Framework for OAuth 2.0 Client Authentication and Authorization Grants" <xref target="RFC7521"/>.</t>

<section anchor="request-1"><name>Request</name>

<t>If the authorization grant is in the form of a JWT bearer token, the client <bcp14>SHOULD</bcp14> use the "JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants" as defined in <xref target="RFC7523"/>. Otherwise, the client <bcp14>SHOULD</bcp14> request an access token using the "Assertion Framework for OAuth 2.0 Client Authentication and Authorization Grants" as defined in <xref target="RFC7521"/> (Section 4.1). For the purpose of this specification the following descriptions apply:</t>

<dl newline="true">
  <dt>grant_type</dt>
  <dd>
    <t><bcp14>REQUIRED</bcp14>. In context of this specification clients <bcp14>SHOULD</bcp14> use the type identifier returned by the token exchange (<spanx style="verb">issued_token_type</spanx> response). See <xref target="authorization-grant-type">authorization grant type</xref> for more details.</t>
  </dd>
  <dt>assertion</dt>
  <dd>
    <t><bcp14>REQUIRED</bcp14>. Authorization grant returned by the token exchange (<spanx style="verb">access_token</spanx> 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 <spanx style="verb">scope</spanx> parameter or the <spanx style="verb">resource</spanx> parameter defined in <xref target="RFC8707"/>.</t>

</section>
<section anchor="processing-rules-1"><name>Processing rules</name>

<t>All of Section 5.2 <xref target="RFC7521"/> applies, in addition to the following processing rules:</t>

<t><list style="symbols">
  <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>
  <t>The authorization server <bcp14>SHOULD</bcp14> deny the request if it is not able to identify the subject.</t>
  <t>Due to policy the request <bcp14>MAY</bcp14> be denied (for instance if the federation from domain A is not allowed).</t>
</list></t>

</section>
<section anchor="response-1"><name>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 title="Assertion request"><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 title="Assertion response"><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 authorization grants in the token exchange flow or access tokens in the assertion flow.</t>

<t><list style="symbols">
  <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 identifer is reflected in returned 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>
  <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>
  <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 priveleged than the scopes of presented subject_token.</t>
  <t><strong>Including authorization grant claims</strong>: The authorization server performing the assertion flow <bcp14>MAY</bcp14> leverage claims from the presented 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>
</list></t>

<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 title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC6749">
  <front>
    <title>The OAuth 2.0 Authorization Framework</title>
    <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
    <date month="October" year="2012"/>
    <abstract>
      <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6749"/>
  <seriesInfo name="DOI" value="10.17487/RFC6749"/>
</reference>

<reference anchor="RFC8693">
  <front>
    <title>OAuth 2.0 Token Exchange</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="A. Nadalin" initials="A." surname="Nadalin"/>
    <author fullname="B. Campbell" initials="B." role="editor" surname="Campbell"/>
    <author fullname="J. Bradley" initials="J." surname="Bradley"/>
    <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
    <date month="January" year="2020"/>
    <abstract>
      <t>This specification defines a protocol for an HTTP- and JSON-based Security Token Service (STS) by defining how to request and obtain security tokens from OAuth 2.0 authorization servers, including security tokens employing impersonation and delegation.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8693"/>
  <seriesInfo name="DOI" value="10.17487/RFC8693"/>
</reference>

<reference anchor="RFC7521">
  <front>
    <title>Assertion Framework for OAuth 2.0 Client Authentication and Authorization Grants</title>
    <author fullname="B. Campbell" initials="B." surname="Campbell"/>
    <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="Y. Goland" initials="Y." surname="Goland"/>
    <date month="May" year="2015"/>
    <abstract>
      <t>This specification provides a framework for the use of assertions with OAuth 2.0 in the form of a new client authentication mechanism and a new authorization grant type. Mechanisms are specified for transporting assertions during interactions with a token endpoint; general processing rules are also specified.</t>
      <t>The intent of this specification is to provide a common framework for OAuth 2.0 to interwork with other identity systems using assertions and to provide alternative client authentication mechanisms.</t>
      <t>Note that this specification only defines abstract message flows and processing rules. In order to be implementable, companion specifications are necessary to provide the corresponding concrete instantiations.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7521"/>
  <seriesInfo name="DOI" value="10.17487/RFC7521"/>
</reference>

<reference anchor="RFC7523">
  <front>
    <title>JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="B. Campbell" initials="B." surname="Campbell"/>
    <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
    <date month="May" year="2015"/>
    <abstract>
      <t>This specification defines the use of a JSON Web Token (JWT) Bearer Token as a means for requesting an OAuth 2.0 access token as well as for client authentication.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7523"/>
  <seriesInfo name="DOI" value="10.17487/RFC7523"/>
</reference>

<reference anchor="RFC8707">
  <front>
    <title>Resource Indicators for OAuth 2.0</title>
    <author fullname="B. Campbell" initials="B." surname="Campbell"/>
    <author fullname="J. Bradley" initials="J." surname="Bradley"/>
    <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
    <date month="February" year="2020"/>
    <abstract>
      <t>This document specifies an extension to the OAuth 2.0 Authorization Framework defining request parameters that enable a client to explicitly signal to an authorization server about the identity of the protected resource(s) to which it is requesting access.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8707"/>
  <seriesInfo name="DOI" value="10.17487/RFC8707"/>
</reference>

<reference anchor="RFC8414">
  <front>
    <title>OAuth 2.0 Authorization Server Metadata</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
    <author fullname="J. Bradley" initials="J." surname="Bradley"/>
    <date month="June" year="2018"/>
    <abstract>
      <t>This specification defines a metadata format that an OAuth 2.0 client can use to obtain the information needed to interact with an OAuth 2.0 authorization server, including its endpoint locations and authorization server capabilities.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8414"/>
  <seriesInfo name="DOI" value="10.17487/RFC8414"/>
</reference>

<reference anchor="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 title='Informative References' anchor="sec-informative-references">




<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="23" month="October" 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-06"/>
   
</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="23" month="October" year="2023"/>
      <abstract>
	 <t>   This document describes best current security practice for OAuth 2.0.
   It updates and extends the OAuth 2.0 Security Threat Model 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.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-security-topics-24"/>
   
</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="20" month="October" year="2023"/>
      <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-01"/>
   
</reference>




    </references>


<?line 317?>

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

<t><list style="symbols">
  <t>Authorization Server B is reachable by the resource server by network and is able to perform the appropiate client authentication (if required).</t>
  <t>The resource server has the ability to determine the authorization server of the protected resource outside its trust domain.</t>
</list></t>

<t>The flow would look like this:</t>

<figure title="Resource server acting as client"><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 7521]   |             |     
       |                     | ------------------->|             |     
       |                     |                     |             |     
       |                     | (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 an 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 an authorization grant to the resource server.</t>

<t>(D) The resource server presents the authorization grant to the authorization server of Domain B.</t>

<t>(E) The authorization server of Domain B uses claims from the 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>

<t><list style="symbols">
  <t>Resource servers may not have knowledge of authorization servers.</t>
  <t>Resource servers may not have network access to other authorization servers.</t>
  <t>A strict access control on resources outside the trust domain is required and enforced by authorization servers.</t>
  <t>Authorization servers require client authentication. Managing clients for resource servers outside of the trust domain is not intended.</t>
</list></t>

<t>The flow when authorization servers act as client would look like this:</t>

<figure title="Authorization server acting as client"><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 7521]          |             |     
    |                      | --------------------->|             |     
    |                      |                       |             |     
    |                      | (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 an 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 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 numbered="false" anchor="Acknowledgements"><name>Acknowledgements</name>

<t><contact fullname="Joe Jubinski"/>, <contact fullname="Justin Richer"/></t>

</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></organization>
      <address>
        <email>hannes.tschofenig@gmx.net</email>
      </address>
    </contact>
    </section>

  </back>

<!-- ##markdown-source:
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
bJ9cPldPT8LP7vcnnz9vbn9uXWz9ffb3y7305MmPvdOL9ydn7tR7/eP2yjoS
I99SIMUOWSz8Qn2aYFjuFx9o9HTDuVq2c2yT4NbNGfgUG3NKwZBlobhaMdZ0
UCthENTMdgJ/cVhPK0r9pa2uMY0JttxRTKkcpRDML4VtSHXdd/HLylxJeiFA
oj3MWtolBiWSrOQfoenK9ihL2lJeQZvzpiNn5VfrrFqpi3ah3YWhFDKKp36i
6nDLA9PlCCZ3EfxK5K9HFkuRVo2lud3eXGMFTxHULJ5ge0pTGKhodHNIa8Jm
NsWtSiGpXOoXAhtkxS+ONVW8VbOn5APZ8qg4twy1iq6o39U6N9Gc8TXt+Nea
SEvCVbQjVL/qKfByA/RprM9YWmldjGAp1kXRXkS4JkhWkkdkCxufi8+ViVPR
eUrjmY7+2Xg527U49gPBLrrRmh0+GEFSfDcX7H228cwe7/lYkvbwDL89AQ+v
VBPHrts6GaDavTMCL+e1SQVsp855mHfHaoP9FE/gEBZWpYYUYzDU0gI0jwLw
+VQ+F9vmWxZ6E3LQZDG2a923omAwxCSGjIs8XD6e5uOCB7y9uY2UXRDi0qek
GhbDYApvPMbrbLFnkTbaJELoexm9toXTORjt1cN3GABfpZB9iJ3zyFgDXdVp
HCPWc9auNZPjHipvreL710XK9JrKznFVYMqGYPqTQjC9FJJfbvlzueR1eiSa
fd+72+FVg7/aLXHN7Pu1rfn+v9Kaz2NSzh/t4dLWedku61YDcP9uxnTvXo1p
/wkY0++yo/Pe5x68e/+3Hy7o3evTDff10dM3s+f+m/Hz2d/xkoHnI/fVBRrR
u4c72eXTJH56Fn587odPzr8ZPBtuZjtPN78Pvumnh/7pRu9vl08idTi8mxFd
3KyS/VwXU18U+DQD+yY2zx0SWu5OqHeaolHzp88aixVlymXicSWApcfmAh6H
USzq4cNzg4QxybSMLMjshw874mzuKSUeOXgy16LgF9qD2dAyErQjdIcPSErK
kGAdhZU5YCGsfIxGoRepl+R4r4h+VmyC2qEh8LqNw17ScV7hGLnJMZNAxoBR
AVUtqzgui6TXNB5RrXkDLbFuyDZaZBOPS4wYKC8gVoOAZdOSbBzljaqbQPDz
BprKDIj2NMoCLPYvT0RQihUEmBtJsskkilM2LvvY01QfpbfpIb3IKDaJIs2C
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
V1dX6wKfZdj8L059/A9xwUPn/wEPIkDwr24AAA==

-->

</rfc>

